下面我有它登錄一個老師在代碼通過匹配它不工作時是在數據庫中的用戶名和密碼,如果正確,然後登錄,如果不正確,則顯示一條消息。登錄從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