微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP处理页面无法正常工作

我正在尝试使用页面login.PHP创建登录系统,并将表单操作发布到processlogin.PHP

系统使用PHP / html和sqlite3.

表单运行正常,我遇到的问题是它实际上将我重定向到processlogin.PHP页面.我设置了一堆字符串来输出,以告诉我哪里出现了问题,问题是我什至没有得到页面上的第一个字符串.我已经尝试不同的预感一个多小时了,但是却一无所获.我发现的唯一一件事是,如果删除整个第二个if语句(检查是否设置了后值寄存器),则会得到第一个输出.

这是我的processlogin.PHP-如果需要其他任何代码,我将非常乐意分享.

<?PHP

    session_start();

    class MyDB extends sqlite3 {
        function __construct() {
             $this->open('../db/tables.db');
        }
    }

    $db = new MyDB();
    if(!$db){
        echo $db->lastErrorMsg();
    } else {
        echo "<p style='display:none;'>Opened database successfully</p>\n";
    }

    if(isSet($_POST['login'])) {
        echo "<p style='display:none;'>login posted</p>\n";
        $loginNameFromPost = sqlite_escape_string($_POST['loginname']);
        $passwordFromPost = sqlite_escape_string($_POST['password']);

        $ret = $db->query("SELECT * from Users WHERE LoginName='$loginNameFromPost' LIMIT 1;");
        while($row = $ret->fetchArray(sqlite3_ASSOC) ){
            $hashedPasswordFromDB = $row['Password'];
            $levelFromDB = $row['Level'];
            $usernameFromDB = $row['displayName'];
        }

        if (password_verify($passwordFromPost, $hashedPasswordFromDB)) {
            $_SESSION['Username'] = $usernameFromDB;
            $_SESSION['Level'] = $levelFromDB;
            echo "<Meta http-equiv=\"refresh\" content=\"0;URL=../index.PHP\">";
        } else {
            echo "<Meta http-equiv=\"refresh\" content=\"0;URL=../login.PHP?err=1\">";
        }

    }

    if(isSet($_POST['register'])) {
        echo "<p style='display:none;'>register posted</p>\n";
        $loginNameFromPost = sqlite_escape_string($_POST['loginname']);
        $passwordFromPost = sqlite_escape_string($_POST['password']);
        $emailFromPost = sqlite_escape_string($_POST['email']);
        $displayNameFromPost = sqlite_escape_string($_POST['displayname']);

        $options = [
            'cost' => 11,
        ];

        $hash = password_hash($passwordFromPost, PASSWORD_BCRYPT, $options);

        $sql ="INSERT INTO Users (uniqueID,displayName,LoginName,Level,Email,Password) VALUES (NULL,'$displayNameFromPost', '$loginNameFromPost',   '0', '$emailFromPost',  '$hash');"
        $ret = $db->exec($sql);
        if(!$ret){
            echo $db->lastErrorMsg();
            echo "<Meta http-equiv=\"refresh\" content=\"0;URL=../login.PHP?err=2\">";
        } else {
          echo "Successfully registered\n";
          echo "<Meta http-equiv=\"refresh\" content=\"0;URL=../login.PHP?msg=1\">";
        }

    }

?>

旁注:一段时间后,我通过PHP代码检查器运行了代码,并说$ret = $db-> exec($sql); (直接指向第二个`if中的那个),这对我来说毫无意义,需要该代码

解决方法:

只需添加分号;在第53行

$sql ="INSERT INTO Users (uniqueID,displayName,LoginName,Level,Email,Password) VALUES (NULL,'$displayNameFromPost', '$loginNameFromPost',   '0', '$emailFromPost',  '$hash');";

希望这可以帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐