Wampserver。在phpmyadmin我添加了用户db和user_data表。但我的代码不起作用
<?php
include_once("sql_connect.php");
session_start();
$_SESSION['currentuser']=$_POST['usernameinput'];
$uname = $_POST['usernameinput'];
$pass = $_POST['passwordinput'];
$sql = "SELECT * FROM 'user_data' WHERE(
username='".$uname."' and password='".$pass."')";
$query = mysql_query($sql);
$result = mysql_fetch_array($query);
if($result[0]>0)
{
header ("location: Ghome.php");
}
else
{
header ("Location: loginform_er_incorrectlogpass.php");
}
?>
当我写出正确的用户名和密码时,它无法正常工作。我的代码可能有问题吗?
<?php
session_start(); # Starts the session
session_unset(); #removes all the variables in the session
session_destroy(); #destroys the session
include ("LoginForm.php");
echo "<p align='center'><font color='red'>Неправильно указан Логин или Пароль.</font></p>";
?>
答案 0 :(得分:0)
替换此
$query = mysql_query($sql)
以下
$query = mysql_query($sql) or die(mysql_error());
并查看您获得的错误
答案 1 :(得分:0)
要解决当前问题,请删除表名周围的引号,并习惯使用返回刻度。
SELECT * FROM `user_data` ...
不是这个:
SELECT * FROM 'user_data' ...
(从技术上讲,你甚至不需要在这里使用它们,但使用它们是一种很好的做法,可以帮助你解决各种打字错误。)
一些额外的指示:
mysql_*
; mysql_*
函数已过时,deprecated且不安全。请改用MySQLi
或PDO
。 答案 2 :(得分:0)
你错误地在sql中使用表名周围的单引号 - 你应该使用反引号。此外,没有检查POSTed变量。理想情况下,为避免将来出现心痛,请查看迁移以使用mysqli或PDO。至少尝试对提供的POST数据进行一些基本过滤
<?php
session_start();
include_once("sql_connect.php");
if( isset( $_POST['usernameinput'] ) && isset( $_POST['passwordinput'] ) ){
$uname = mysql_real_escape_string( $_POST['usernameinput'] );
$pass = mysql_real_escape_string( $_POST['passwordinput'] );
$_SESSION['currentuser']=$uname;
$sql = "SELECT * FROM `user_data` WHERE `username`='".$uname."' and `password`='".$pass."';";
$query = mysql_query( $sql );
$result = mysql_fetch_array( $query );
header('location: ' .( $result[0]>0 ) ? 'Ghome.php' : 'loginform_er_incorrectlogpass.php' );
}
?>