php和mysql登录函数问题

php和mysql登录函数问题,php,html,mysql,Php,Html,Mysql,我正试图解决一个登录表单的问题。我已经发布了基本的html表单,后面是我正在使用的php脚本。每次我尝试登录它都不起作用 Html- 用户名: 密码: Php- $link = mysqli_connect('host', 'db', 'pw', 'db'); $login = mysqli_query($link, "SELECT * FROM users WHERE (username = '" .($_POST[username]) . "') and (password = '" .(

我正试图解决一个登录表单的问题。我已经发布了基本的html表单,后面是我正在使用的php脚本。每次我尝试登录它都不起作用

Html- 用户名: 密码:

Php-
$link = mysqli_connect('host', 'db', 'pw', 'db');
$login = mysqli_query($link, "SELECT * FROM users WHERE (username = '" .($_POST[username]) . "') and (password = '" .($_POST[password]) . "')");

if (mysql_num_rows($login) == 1) {
$_SESSION[username] = $_POST[username];
header('Location: adminpage.php');
}
else {
header('Location: login.html');
}
?>

任何帮助都将不胜感激。谢谢

您需要在$\u POST和$\u会话变量周围加上引号:

$\u POST['username']
$\会话['username']

此外,您必须使用
mysqli\u num\u行
,因为您使用的是
mysqli
。(不仅仅是mysql的行数)

并确保阅读了有关防止SQL注入的内容。如果在将这些$\u POST变量插入SQL查询之前不清除它们,可能会有人轻易侵入您的数据库

我做了以下更改:


// Make sure to replace the 4 parameters in the next line with your actual database info.
$link = mysqli_connect('THE_URL_TO_YOUR_DATABASE', 'YOUR_USERNAME', 'YOUR_PASSWORD', 'YOUR_DATABASE_NAME');
$login = mysqli_query($link, "SELECT * FROM users WHERE (username = '" .$_POST['username'] . "') and (password = '" .$_POST['password'] . "')");

if (mysqli_num_rows($login) == 1) {
    $_SESSION['username'] = $_POST['username'];
    header('Location: adminpage.php');
} else {
    header('Location: login.html');
}

使用以下代码更改php代码:-

session_start();

$link = mysqli_connect('host', 'db', 'pw', 'db');
$username = $_POST['username'];
$password = $_POST['password'];
$login = mysqli_query($link, "SELECT * FROM users WHERE username = '$username' AND  password = '$password'");

if (mysql_num_rows($login) == 1) {
    $_SESSION['username'] = $username;
    header('Location: adminpage.php');
}
else {
    header('Location: login.html');
}

执行任务前始终进行错误检查

session_start();

$link = mysqli_connect('host', 'un', 'pw', 'db');
// Check connection
if (mysqli_connect_errno($link))
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// Perform a query, check for error
$user = $_POST['username'];
$pswd = $_POST['password'];
$login = mysqli_query($link, "SELECT * FROM users WHERE (username = '$user') and (password = '$pswd')");

if (mysql_num_rows($login) == 1) {
      $_SESSION['username'] = $user;
      header('Location: adminpage.php');    
}else {
    echo("Error description: " . mysqli_error($link));
}

它不起作用了?有什么错误您需要更清楚地了解“它不工作”。我建议不要使用
SELECT*
,尤其是在登录表单中。仅选择您要使用的内容。虽然我在登录表单中输入的信息是正确的,但我会不断返回到相同的登录表单。你应该在你的系统上查看php错误日志。你所做的一些事情应该会引发解释性错误,这会对你有所帮助。我只是在变量周围加了引号,仍然没有改变,然后按照建议更改了我的查询,但仍然没有改变,似乎无法离开登录页面。还有其他想法吗?请看我的答案,还有一件事你错过了。只是想说声谢谢,伙计,终于修好了,开始工作了!非常感谢你的帮助!