【问题标题】:Page is redirecting to my php script from form页面正在从表单重定向到我的 php 脚本
【发布时间】:2018-12-15 07:24:45
【问题描述】:

我正在尝试使用 php 创建一个登录系统,但我无法弄清楚为什么当我单击我的登录按钮时我的表单只是将我重定向到脚本文件。它在我的注册表单上运行良好。除了将我重定向到脚本文件之外,一切似乎都有效。我的 php 文件包含我的表单:https://codepen.io/hubbe-andersson/pen/yGOPoM

编辑:我已将我的 phpscript 放入我的 header.php 中,现在我在 chrome 中得到 ERR_TOO_MANY_REDIRECTS 是什么原因造成的?

<?php
    if(isset($_POST['login-sub'])) {
        require 'databash.php';

        $username = $_POST['mailname'];
        $password = $_POST{'pwd'};

        if(empty($username) || empty($password)) {
            header("Location: index.php?error=tommarutor");
            exit();
        } else {

            $sql = "SELECT * FROM USERS WHERE uidUsers=? OR emailUsers=?";
            $stmt = mysqli_stmt_init($conn);
            if(!mysqli_stmt_prepare($stmt, $sql)) {
                header("Location: index.php?error=sqlerror");
                exit();
            } else {

                mysqli_stmt_bind_parem($stmt, "ss", $username, $username);
                mysqli_stmt_execute($stmt);
                $resultat = mysqli_stmt_get_result($stmt);
                if ($row = mysqli_fetch_assoc($resultat)) {
                    $checkpwd = password_verify($password, $row['pwdUsers']);
                    if($checkpwd == false) {
                        header("Location: index.php?error=fellosenord");
                        exit();
                    }
                    else if ($checkpwd == true) {
                        seassion_start();
                        $_SESSION['userId'] = $row['idUsers'];
                        $_SESSION['userUid'] = $row['uidUsers'];
                        header("Location: index.php?login=lyckades");
                        exit();

                    }
                    else {
                        header("Location: index.php?error=fellosenord");
                        exit();
                    }
                }
                else {
                    header("Location: index.php?error=ingenanvandare");
                    exit();
                }
            }
        }
    } else {
       header("Location: index.php");
       exit();
    }

【问题讨论】:

  • @TarangP 你是什么意思?
  • 您在 url 上获得任何参数,例如 ?error=fellosenord ?
  • 把它放在问题中,而不是另一个网站。
  • 这里有一个错字:mysqli_stmt_bind_paremparem 应该是 param
  • 这里还有一个拼写错误:seassion_start();应该是 session_start();

标签: php database mysqli


【解决方案1】:

第 6 行错误:使用 [...] 而不是 {...}

看中间的代码块。里面的所有内容都侧重于确定结果将返回哪个错误,因此请在您的 $_SESSION 数据中建立它,然后重定向 header("Location.... 一次。大多数错误都是像第 6 行错误这样的小错误,请养成在代码中添加// comments 的习惯,以便更轻松地整理代码的行和部分。

<?php
    if(isset($_POST['login-sub'])) {   
        require 'databash.php';

        $username = $_POST['mailname'];
        $password = $_POST['pwd'];

        if(empty($username) || empty($password)) {    
            header("Location: index.php?error=tommarutor");
            exit();
        } else {      

            $sql = "SELECT * FROM USERS WHERE uidUsers=? OR emailUsers=?";
            $stmt = mysqli_stmt_init($conn);
            if(!mysqli_stmt_prepare($stmt, $sql)) {    
                header("Location: index.php?error=sqlerror");
                exit();
            } else {        

                mysqli_stmt_bind_parem($stmt, "ss", $username, $username);
                mysqli_stmt_execute($stmt);
                $resultat = mysqli_stmt_get_result($stmt);

                if ($row = mysqli_fetch_assoc($resultat)) {
                    $checkpwd = password_verify($password,  $row['pwdUsers']);
                    if($checkpwd == false) {
                        session_start();
                        $_SESSION['error']="fellosenord";
                    }  else if ($checkpwd == true) {
                        seassion_start();
                        $_SESSION['userId'] = $row['idUsers'];
                        $_SESSION['userUid'] = $row['uidUsers'];
                        $_SESSION['login']="lyckades");
                    } else {
                        session_start();
                        $_SESSION['error']="fellosenord";
                    }   //end checkpwd
                } else {    //  if fetch fails, send error
                    session_start();
                    $_SESSION['error']="ingenanvandare";
                }   //  end fetch
                header("Location: index.php");

            }   // end if stmt exists
        }   // end not empty input
    } else { // if isset isn't set...
       header("Location: index.php");
       exit();
    } //   end isset
php database mysqli

您的index.php 页面需要首先查找通过$_SESSIONS 传递的查询字符串,以防止人们在没有相关表单的情况下尝试访问该页面。

session_start();
if ( empty($_SESSION['id']) ) {   // no session info...
...
} else {
...
}

请您的老师解释查找错误和解决问题,以便您了解要查找的内容。

【讨论】:

    猜你喜欢
    • 2011-02-13
    • 2013-07-08
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 2017-09-24
    • 2013-06-12
    相关资源
    最近更新 更多