데이터베이스에있는 사용자 이름과 암호를 일치 시켜서 교사를 기록하는 코드가 있습니다. 올바르다면 로그인하고, 틀린 경우 메시지를 표시하십시오. 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