php登录脚本返回意外的else

xu3bshqb  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(419)

这个问题在这里已经有答案了

php解析/语法错误;以及如何解决这些问题(18个答案)
两年前关门了。
由于新的php版本(PHP7.2),我正在重新设计一个网页,并且必须创建一个新的登录脚本(见下文)
当我输入正确的用户名和密码时,下面的脚本返回ok。
但是,当我尝试在$message=“ok”之后(以及在else之前)添加会话和更多变量时,脚本将停止并返回http错误500。在日志中,它在$message之间的else上显示“php parse error:syntax error,unexpected'else'”。
我非常需要让它与会话和变量一起工作。
有没有人知道我该如何解决这个问题,以便我可以添加会话等,使这个脚本进一步工作?

session_start();
$conn = mysqli_connect("localhost","username","password","database") or die($link);
$message="";
if(!empty($_POST["login"])) {
    {
        $result = mysqlI_query($conn,"SELECT * FROM logintable WHERE username='" . $_POST["user_name"] . "'");
        $row  = mysqli_fetch_array($result);
        $hashpw = $row['password'];
        if(password_verify($_POST["password"],$hashpw))
            $message="OK"; 
        else
            $message="WRONG";
    }
}
if(!empty($_POST["logout"])) {
    $_SESSION["user_id"] = "";
    session_destroy();
}
ar7v8xwq

ar7v8xwq1#

第5行和第13行的花括号过多了。移除它们,应该是:

<?php
    session_start();
    $conn = mysqli_connect("localhost","username","password","database") or die($link);
    $message="";
    if(!empty($_POST["login"])) {
        $result = mysqlI_query($conn,"SELECT * FROM logintable WHERE username='" . $_POST["user_name"] . "'");
        $row  = mysqli_fetch_array($result);
        $hashpw = $row['password'];
        if(password_verify($_POST["password"],$hashpw))
            $message="OK"; 
        else
            $message="WRONG";
    }
    if(!empty($_POST["logout"])) {
        $_SESSION["user_id"] = "";
        session_destroy();
    }
km0tfn4u

km0tfn4u2#

你的 else 代码中的语句缺少花括号,应为:

if(password_verify($_POST["password"],$hashpw)) {
    $message="OK"; 
} else {
    $message="WRONG";
}

相关问题