1

我的脚本应该将用户登录到我的数据库中。

它通过检查用户名和密码是否与员工表上的一行匹配来做到这一点。

如果发现用户名和密码确实存在,它将用户名和密码存储在 cookie 中。

我遇到的问题是用户没有登录。

通过 echo 方法已确定,单击按钮后,以下变量具有以下值

$row = 0 $username = 表单上用户名字段中的任何内容

这似乎表明查询有问题

<?php

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die                      ('Error connecting to mysql');

$dbname = 'the_shop';
mysql_select_db($dbname);

if(isset($_GET['submit']))
{
    $username = $_GET['username'];
    $password = md5($_GET['password']);
    echo "$username + $password <br />";

    // insert user into db
//  $sql = "INSERT INTO `logindb`.`users` (`id`, `username`, `password`) VALUES (NULL, '".$username."', '".$password."');";
//  echo $sql;
//  $result = mysql_query($sql);

    // getting user from db
    $query  = "SELECT Username, Password FROM staff WHERE `Username`='.$username.'";
    $result = mysql_query($query)
    or die(mysql_error());
    $num=mysql_numrows($result);
    echo $num;
    if($num <= 0) {
  echo "login not successful";
  echo "$username";
}
else
{
    $_SESSION['username'] = '$username';
    $_SESSION['password'] = '$password';
//header("Location:Admin_Control_panel.php");
}
}
?>
4

4 回答 4

3

这一行:

$query  = "SELECT Username, Password FROM staff WHERE `Username`='.$username.'";

需要是:

$query  = "SELECT Username, Password FROM staff WHERE `Username`='$username'";

double-quotes由于您正在使用并PHP正在解析$双引号字符串中的值,因此无需连接字符串。

于 2013-05-12T20:26:05.110 回答
3

对于初学者,您那里$query有不需要的字符 ( .)。

"SELECT Username, Password FROM staff WHERE `Username`='.$username.'"
                                                        ^         ^

应该。

"SELECT Username, Password FROM staff WHERE `Username`= '$username'"

没有点。

于 2013-05-12T20:27:20.303 回答
2

您的查询应该是:

$query = 'SELECT Username, Password FROM staff WHERE Username = ' . $username;

我建议研究 PDO(PHP 数据对象)作为您正在使用的方法和参数化变量的替代方法。

http://php.net/manual/en/book.pdo.php

于 2013-05-12T20:27:10.587 回答
1
$query  = "SELECT Username, Password FROM staff WHERE `Username`='$username'";
于 2013-05-12T20:26:43.233 回答