【问题标题】:php and session redirection errorsphp 和会话重定向错误
【发布时间】:2024-04-30 17:45:02
【问题描述】:

我正在创建一个登录表单并使用会话注销,但是当我尝试登录浏览器时显示错误(我认为错误在记录的函数中) 任何人都可以帮助我,因为它让我发疯...... **页面未正确重定向 Firefox 认为服务器正在以一种永远不会检测到完成的方式重定向对该地址的请求。

此问题有时可能是由于禁用或拒绝接受 饼干。**

login.php

<?php
ob_start();
require_once('functions.php');


if(loggedin()){
    header("Location: userarea.php");
    exit();
}


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

  //get data
  $username = $_POST['username'];
  $password = $_POST['password'];
  $rememberme = $_POST['rememberme'];

  if($username && $password){

   $login = mysql_query("SELECT * FROM rememberme  WHERE username = '$username'");
   while($row = mysql_fetch_assoc($login)){

      $db_password = $row['password'];
      if($password == $db_password)
       $loginok = TRUE;
      else
        $loginok = FALSE;
      if($loginok == TRUE){

         if($rememberme == "on"){
          setcookie("username", $username, time()+7200);



         }else if($rememberme == "")
           $_SESSION['username'] = $username;
         header("Location: userarea.php");
         exit();   


      }else{
       die("incorrect username/password combination");

      }

   }



  }else
    die("please enter a username and password");
    exit();


}


?>

<form action="login.php" method="post">
<p>Username<br />
  <input type="text" name="username" />
</p>
<p> Password<br />
  <input type="password" name="password" />
</p>
<p>
  <input type="checkbox" name="rememberme"> 
  Remember me<br />

  <input type="submit" name="login" value="Log in" />
</p>
</form>
<?php ob_flush(); ?>

函数.php

 <?php
 //session
 session_start();
 // connect to database 
 mysql_connect("localhost", "root", "") or die("could not connect to database");
 mysql_select_db("rememberme") or die("could not select database");

// login check function

 function loggedin()
{
    $loggedin = false;
    if(isset($_SESSION['username'])||isset($_COOKIE['username']))
    {
        $loggedin = TRUE;
    }
    return $loggedin;
}

?>

userarea.php

<?php
 //session
 session_start();
 // connect to database 
 mysql_connect("localhost", "root", "") or die("could not connect to database");
 mysql_select_db("rememberme") or die("could not select database");

// login check function

function loggedin()
{

  if(isset($_SESSION['username'])||isset($_COOKIE['username'])){
    $loggedin = TRUE;
    return $loggedin;  


  }



}

?>

【问题讨论】:

  • 您首先访问的是哪个页面?
  • login.php 然后 function.php 将把我从登录 .php 重定向到 userarea.php 但直到现在这还没有成功

标签: php mysql session dreamweaver session-cookies


【解决方案1】:

您在两个文件中具有相同的功能。

function loggedin()

试试

function loggedin()
{
    $loggedin = false;
    if(isset($_SESSION['username'])||isset($_COOKIE['username']))
    {
        $loggedin = TRUE;
    }
    return $loggedin;
}

如果你if条件不满足你的函数将不会返回真或假,所以你需要将initial的值设置为false然后覆盖如果if condition 满意。

Login.php

<?php
require_once('functions.php');

if(isset($_POST['login']))
{
    $username = $_POST['username'];
    $password = $_POST['password'];
    $rememberme = $_POST['rememberme'];

    if($username && $password)
    {
        $login = mysql_query("SELECT * FROM rememberme WHERE username = '".$username."'");
        while($row = mysql_fetch_assoc($login))
        {
            $db_password = $row['password'];
            if($password == $db_password)
                $loginok = TRUE;
            else
                $loginok = FALSE;
            if($loginok == TRUE)
            {
                if($rememberme == "on")
                {
                    setcookie("username", $username, time()+7200);
                }
                else if($rememberme == "")
                {
                    $_SESSION['username'] = $username;
                    header("Location: userarea.php");
                    exit();   
                }
            }
            else
            {
                die("incorrect username/password combination");
            }

        }
    }
    else
    {
        die("please enter a username and password");
        exit();
    }
}
?>

<form action="login.php" method="post">
    <p>Username<br />
        <input type="text" name="username" />
    </p>
    <p>Password<br />
        <input type="password" name="password" />
    </p>
    <p>
        <input type="checkbox" name="rememberme"> 
        Remember me<br />
        <input type="submit" name="login" value="Log in" />
    </p>
</form>
<?php ob_flush(); ?>

functions.php

<?php
ob_start();
session_start();
error_reporting(E_ALL);
ini_set('display_errors','On');

mysql_connect("localhost", "root", "") or die("could not connect to database");
mysql_select_db("rememberme") or die("could not select database");

// login check function

if(loggedin())
{
    header("Location: userarea.php");
    exit();
}

function loggedin()
{
    $loggedin = false;
    if(isset($_SESSION['username'])||isset($_COOKIE['username']))
    {
        $loggedin = TRUE;
    }
    return $loggedin;
}

?>

userarea.php

<?php
    require_once "functions.php";
    echo "after login";
?>

【讨论】:

  • @user2097286 所以现在请用最新的代码更新您的问题,以便我能提供更好的帮助。
  • @user2097286 问题下方有分享和编辑链接使用它
  • 所以有人有解决方案吗??
  • @user2097286 看到我修改了一些代码请检查它否则它的工作
  • 仍然给我同样的错误信息 页面没有正确重定向 Firefox 检测到服务器正在以永远不会完成的方式重定向对该地址的请求。此问题有时可能是由禁用或拒绝接受 cookie 引起的。请帮我解决这个错误
最近更新 更多