2013-02-26 95 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