如果我正确阅读了您的帖子并理解了问题,那么页面永远不会重定向到 page1 的原因是因为条件永远不正确。
由于您必须从 mysql 查询中提取信息才能使用它(mysql_fetch_assoc/array/object),因此您将条件设置为 false。
如果发布的密码(上线前请确保输入安全!)需要与输出匹配,则需要使用上述条件之一解析查询调用。
话虽如此,根据您所需的最终结果,这里最可能需要的函数将是 mysql_num_rows。
以防万一,我将在此处发布这两个可能问题的示例。
如果您需要检查用户名和密码是否匹配,请执行以下操作:
<?php
// Posted data -- please check and secure -- this is not secure, as it stands.
$username = $_POST['Username'];
$password = $_POST['password'];
//connect to database
$username = stripslashes($username);
$username = mysql_real_escape_string($username);
$Dbhost = 'localhost' ;
$dbname = 'users';
$dbuser = 'root';
$dbpass = '';
mysql_connect ($Dbhost , $dbuser , $dbpass);
//query
$query = mysql_query("SELECT `Password` FROM `UsPa` WHERE `Username` = '$username' AND `Password` = '{$password}' LIMIT 1");
if (mysql_num_rows($query) == 1)
{
header('Location: page1.html');
}
else
{
header('Location: login.html');
}
?>
或者,如果您实际上只是想检查用户名,然后出于某种原因检查密码,请使用它。
<?php
// Posted data -- please check and secure -- this is not secure, as it stands.
$username = $_POST['Username'];
$password = $_POST['password'];
//connect to database
$username = stripslashes($username);
$username = mysql_real_escape_string($username);
$Dbhost = 'localhost' ;
$dbname = 'users';
$dbuser = 'root';
$dbpass = '';
mysql_connect ($Dbhost , $dbuser , $dbpass);
//query
$query = mysql_query("SELECT `Password` FROM `UsPa` WHERE `Username` = '$username';");
$result = mysql_fetch_assoc($query);
if ($result['Password'] == $password)
{
header('Location: page1.html');
}
else
{
header('Location: login.html');
}
?>
考虑到这一点,我建议采取最重要的行动,因为除了检查数据库并验证结果的输出之外,做任何事情都是没有意义的。
编辑:虽然你说你是编程新手,这可能是告诉你这个的最好机会,因为你可以学习这个而不是 mysql_ - 你应该看看 mysqli_
I代表Improved,是mysql引擎的更新版本。
在 mysql_ 上使用 mysqli_ 的原因是 mysql_ 现在已弃用,并且在以后的 php 版本中它可能无法使用 - 任何人都猜测是什么版本,但总有一天会发生。
两者在语法上没有太大区别,但可能值得研究一个数据库类并在以后使用它,这将使切换数据库变得更加容易(例如 mysql_ 到 mysqli_ ) 而不必让您编辑代码的每个文件。
作为编程新手,这对您现在可能意义不大,但绝对值得研究以节省您以后的时间,但是当您学习时,只需学习它而不是必须通过您的代码进行更改是有意义的另一天。