2

セッションでログインフォームとログアウトを作成していますが、ブラウザーにログインしようとするとエラーが表示されます (エラーはログに記録された関数にあると思います)。正しくリダイレ​​クトしない Firefox では、サーバーがこのアドレスへのリクエストを完全に検出されない方法でリダイレクトしています。

この問題は、Cookie の受け入れを無効にするか拒否することによって発生することがあります。**

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;
}

?>

ユーザーエリア.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;  


  }



}

?>
4

1 に答える 1

0

2つのファイルに同じ機能があります。

function loggedin()

試す

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

if条件が満たされない場合、関数は true または false を返さないため、 initialvalue をに設定し、満たされた場合false上書きする必要があります。if condition

ログイン.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(); ?>

関数.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;
}

?>

ユーザーエリア.php

<?php
    require_once "functions.php";
    echo "after login";
?>
于 2013-02-26T10:13:14.667 に答える