2013-02-26 96 views
2

我正在創建登錄表單和會話註銷,但是當我嘗試登錄瀏覽器時顯示錯誤(我認爲錯誤是在記錄的功能) 任何人都可以幫助我,因爲它讓我發瘋。 .... **該頁面沒有正確重定向 Firefox已經確定服務器正在以一種永遠不會檢測到完成的方式重定向該地址的請求。php和會話重定向錯誤

這個問題有時可以通過禁用或拒絕接受 餅乾引起的。**

的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(); ?> 

function.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; 


    } 



} 

?> 
+0

您第一次訪問該頁面? – 2013-02-26 10:12:38

+0

login.php然後function.php會做我的工作重定向我從登錄.php到userarea.php但直到現在,這並沒有成功發生 – 2013-02-26 10:15:42

回答

0

您在兩個文件中具有相同的功能。

function loggedin() 

嘗試

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

如果if條件沒有滿足你的功能將不會返回true或false,所以你需要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"; 
?> 
+0

是什麼給錯誤? – 2013-02-26 10:16:53

+0

@ user2097286看到我更新的答案更多.. – 2013-02-26 10:18:56

+0

它仍然給我同樣的錯誤 – 2013-02-26 10:40:21