下面我有它登录一个老师在代码通过匹配它不工作时是在数据库中的用户名和密码,如果正确,然后登录,如果不正确,则显示一条消息。登录从MySQL更改为mysqli的
<?php
session_start();
$username="xxx";
$password="xxx";
$database="mobile_app";
$link = mysqli_connect('localhost',$username,$password);
mysqli_select_db($link, $database) or die("Unable to select database");
foreach (array('teacherusername','teacherpassword') as $varname) {
$$varname = (isset($_POST[$varname])) ? $_POST[$varname] : '';
}
?>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" id="teachLoginForm">
<p>Username</p><p><input type="text" name="teacherusername" /></p> <!-- Enter Teacher Username-->
<p>Password</p><p><input type="password" name="teacherpassword" /></p> <!-- Enter Teacher Password-->
<p><input id="loginSubmit" type="submit" value="Login" name="submit" /></p>
</form>
<?php
if (isset($_POST['submit'])) {
$query = "
SELECT * FROM Teacher t
WHERE
(t.TeacherUsername = '".mysqli_real_escape_string($teacherusername)."')
AND
(t.TeacherPassword = '".mysqli_real_escape_string($teacherpassword)."')
";
$result = mysqli_query($link, $query);
$num = mysqli_num_rows($result);
$loged = false;
while($row = mysqli_fetch_array($result))
{
if ($_POST['teacherusername'] == ($row['TeacherUsername']) && $_POST['teacherpassword'] == ($row['TeacherPassword']))
{
$loged = true;
}
$_SESSION['teacherforename'] = $row['TeacherForename'];
$_SESSION['teachersurname'] = $row['TeacherSurname'];
$_SESSION['teacherusername'] = $row['TeacherUsername'];
}
if ($loged == true){
header('Location: menu.php') ;
}else{
echo "The Username or Password that you Entered is not Valid. Try Entering it Again.";
}
mysqli_close($link);
}
?>
现在的问题是,即使老师在正确的用户名和密码进入,它仍然没有让老师登录。如果上面的代码是旧版本的MySQL()的代码,它的工作因为老师能够在用户名和密码匹配时登录,但是当试图将代码更改为mysqli时,即使用户名和密码匹配,它也会导致登录无法工作。我究竟做错了什么?
不幸的是,你将不得不挖掘/调试以找出实际问题所在(这里有很多代码)。数据库中存储的密码是密码或明文的散列吗?尝试回显sql查询并将其直接插入PMA或其他东西,这将显示是否存在任何错误。是否有任何PHP错误/警告? – craig1231
@ craig1231没有错误,不用担心密码和用户名从数据库中退出等等。就像我之前提到的,我所做的只是将mysql部分更改为mysqli,然后在完美工作之前登录不起作用。我只想知道我是否在mysqli代码中做了错误的操作? – user1394925
语法看起来很好,所以如果不能调试它,我就看不到问题所在。 – craig1231