<p>관리자를 위한 로그인 페이지를 만들고 있는데 PHP 코드의 while 루프가 작동하지 않습니다. 여기에 코드를 남겨두겠습니다(코드에 스페인어가 있어서 죄송합니다) </p>
<pre class="brush:php;toolbar:false;">//연결 만들기
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 연결 확인
만약 (!$conn) {
echo "서버 접속 중 오류가 발생했습니다.";
}
$사용자 이름 = $_POST["사용자 이름"];
if ($username != "") {
$password = $_POST["비밀번호"];
$accountLevel = $_POST["accountLevel"];
$content = $_POST["content"];
$sql = "비밀번호 선택, `accounts1`에서 accountLevel, WHERE 사용자 이름='".$username."'";
$result = mysqli_query($conn, $sql);
while ($post = $result->fetch_object()) {
if ($post->password != $password) {
echo "잘못된 비밀번호입니다";
}else if ($post->accountLevel != $accountLevel) {
echo "오류: 게시할 수 없습니다. 계정 수준 오류입니다.";
}또 다른{
$sql = "`blogposts`(`title`, `contentHTML`, `publishDate`, `commentSection`, `likes`, `dislikes`, `publisher`, `selector`) VALUES('','"에 삽입합니다. $_POST['content']."','".$_POST['publishDate']."','',0,0,'".$_POST['username']."','')" ;
/*$fetchObj = mysqli_fetch_object($QueryResult);
var_dump($fetchObj);*/
에코 "보냄";
}
}
}또 다른{
echo "지정된 사용자가 없습니다.";
}</pre>
<li><p>while 루프를 더 간단한 할당으로 대체할 수 있는 방법이 있습니까(로그인 페이지이고 하나의 계정만 확인하므로)</p>
</li>
<li><p>왜 while 루프가 작동하지 않나요? 이전에 다른 페이지에서 동일한 코드를 사용한 적이 있는데 완벽하게 작동했으며 논리 오류도 표시되지 않았습니다. </p>
</li>
</ul>
<p>함수가 있는 스크립트에서 보낸 요청인데, 저는 Php 페이지에 요청을 사용합니다. 그런 다음 에코를 읽고 화면에 표시합니다. (이 정보가 필요한 사람이 있을 경우를 대비해)</p>
실제 결과를 얻었는지 테스트하기 위해
while
循环,只需一次捕获fetch_object()
,并使用if
를 사용하는 대신.또한 준비된 진술을 사용해야 합니다. 아래에서 그 방법을 보여드리겠습니다.
일반 텍스트 비밀번호를 저장해서는 안 되며
으아악password_hash()
和password_verify()
를 사용해야 합니다. 아래에는 해당 코드가 표시되지 않습니다(등록 스크립트에 해당 변경 사항이 필요함).