【问题标题】:Issue redirecting to the same page问题重定向到同一页面
【发布时间】:2016-04-08 22:13:52
【问题描述】:

我无法重定向到同一页面。我不断收到消息:“本地主机页面不工作,本地主机重定向您太​​多次,ERR_TOO_MANY_REDIRECTS”。

在我的导航栏中,有注册和登录的下拉菜单。注册工作正常,登录几分钟后突然停止工作。我已经有一个多小时没有碰过代码了。

<?php
session_start();

if(isset($_SESSION['usr_id'])) {
    header("Location: index.php");
}

include_once 'dbconnect.php';

//set validation error flag as false
$error = false;

//check if form is submitted
if (isset($_POST['signup'])) {
    $name = mysqli_real_escape_string($con, $_POST['name']);
    $email = mysqli_real_escape_string($con, $_POST['email']);
    $password = mysqli_real_escape_string($con, $_POST['password']);
    $cpassword = mysqli_real_escape_string($con, $_POST['cpassword']);
    
    //name can contain only alpha characters and space
    if (!preg_match("/^[a-zA-Z ]+$/",$name)) {
        $error = true;
        $name_error = "Name must contain only alphabets and space";
    }
    if(!filter_var($email,FILTER_VALIDATE_EMAIL)) {
        $error = true;
        $email_error = "Please Enter Valid Email ID";
    }
    if(strlen($password) < 6) {
        $error = true;
        $password_error = "Password must be minimum of 6 characters";
    }
    if($password != $cpassword) {
        $error = true;
        $cpassword_error = "Password and Confirm Password doesn't match";
    }
    if (!$error) {
        if(mysqli_query($con, "INSERT INTO users(name,email,password) VALUES('" . $name . "', '" . $email . "', '" . md5($password) . "')")) {
            $successmsg = "Successfully Registered! <a href='login.php'>Click here to Login</a>";
        } else {
            $errormsg = "Error";
        }
    }
}

if (isset($_POST['login'])) {

    $email = mysqli_real_escape_string($con, $_POST['email']);
    $password = mysqli_real_escape_string($con, $_POST['password']);
    $result = mysqli_query($con, "SELECT * FROM users WHERE email = '" . $email. "' and password = '" . md5($password) . "'");

    if ($row = mysqli_fetch_array($result)) {
        $_SESSION['usr_id'] = $row['id'];
        $_SESSION['usr_name'] = $row['name'];
        header("Location: index.php");
        die;
    } else {
        $errormsg = "Incorrect Email or Password!!!";
    }
}

?>
                    <div class="wraplogin">
                        <form role="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="loginform" id="edd_login_form" class="edd_form">
                            <fieldset>
                                <legend>Log into Your Account</legend>
                                <p>
                                    <label>Username</label>
                                    <input type="text" name="email" required class="form-control" id="edd_user_login" class="required edd-input" />
                                </p>
                                <p>
                                    <label>Password</label>
                                    <input type="password" name="password" placeholder="Your Password" required class="form-control" id="edd_user_pass" class="password required edd-input" />
                                </p>
                                <p>
                                    <input id="edd_login_submit" type="submit" class="edd_submit" name="login" value="Log In" />
                                </p>
                                <li class="divider"></li>
                                <p class="edd-lost-password">
                                    <a href="#" title="Lost Password">Lost Password? </a>
                                </p>
                            </fieldset>
                        </form>
                        <span class="text-danger"><?php if (isset($errormsg)) { echo $errormsg; } ?></span>
                    </div>

有人知道是什么问题吗?

【问题讨论】:

  • 代码 sn-ps 仅适用于 HTML、JS 和 CSS,不适用于 PHP。
  • 如果你的PHP文件被命名为index.php,当isset($_SESSION['usr_id'])时,它会一直重定向到自己。

标签: php loops redirect login


【解决方案1】:

一开始你就做了一个重定向:

<?php
session_start();

if(isset($_SESSION['usr_id'])) {
    header("Location: index.php");
}

但是登录后(设置了$_SESSION['usr_id'])如果这个页面是index.php,它会重定向到自己,并再次检查并重定向到自己,再次进入循环 p>

【讨论】:

  • 这似乎成功了。认为它与会话存储有关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多