P粉2001385102023-08-17 10:39:22
而不是使用while
循環,只需一次捕獲fetch_object()
,並使用if
測試是否得到真值結果。
您也應該使用預處理語句,我在下面展示瞭如何做。
您不應該儲存明文密碼,應該使用password_hash()
和password_verify()
。我沒有在下面顯示該程式碼(它將需要對您的註冊腳本進行相應更改)。
$username = $_POST["username"]; if ($username != "") { $password = $_POST["password"]; $accountLevel = $_POST["accountLevel"]; $content = $_POST["content"]; $sql = "SELECT password, accountLevel FROM `accounts1` WHERE username=?"; $stmt = $conn->prepare($sql); $stmt->bind_param("s", $username); $stmt->execute(); $result = $stmt->get_result(); $post = $result->fetch_object(); if ($post) { if ($post->password != $password) { echo "Usuario o Contraseña incorrecta"; }else if ($post->accountLevel != $accountLevel) { echo "Error: No se pudo Publicar. Error de nivel de cuenta."; }else{ $sql = "INSERT INTO `blogposts`(`title`, `contentHTML`, `publishDate`, `commentSection`, `likes`, `dislikes`, `publisher`, `selector`) VALUES ('',?,?,'',0,0,?,'')"; $stmt = $conn->prepare($sql); $stmt->bind_param("sss", $content, $_POST['publishDate'], $username); $stmt->execute(); echo "Enviado"; } } else { echo "Usuario o Contraseña incorrecta"; } }else{ echo "Usuario no indicado"; }