2012-02-10 36 views
0

我目前正在一個網站上工作,並且正在創建一個登錄系統。我正在使用會話來跟蹤登錄狀態。包括登錄,直至現在的頁面顯示如下: (我改變定義的網址後頁面的變量,就像這樣:site.domain.com/?home)基於會話的登錄無法正常工作

的index.php

/* CONNECTION TO CHECK LOGIN STATUS */ 
<?php 
if (isset($_GET["sair"])){ 
    session_start(); 
    session_destroy(); 
} 
if (isset($_SESSION["user"]) && isset($_GET["entrar"])){ 
    mysql_connect("localhost","dbusr","password") or die("Can't connect to DB"); 
    mysql_select_db("mydb") or die("Can't select DB"); 
    $userinfo = $_SESSION["uinfo"]; 
} 
?> /* START OF THE PAGE, RANDOM UNIMPORTANT HTML */ 
<?php if (!isset($_SESSION["user"])) { ?> /*NOT LOGGED IN...*/ 
<form id="loginform" method="post" action="scripts/checklogin.php"> 
<h2>Login</h2> 
<?php if (isset($_GET["falha"])) { echo "<span class='erro'>Nome ou senha incorretos</span>"; }?> /*IF LOGIN ERROR*/ 
<input type="text" name="user" autofocus placeholder="Apelido"/><br /> 
<input type="password" name="pass" placeholder="Senha"/><br /> /*LOGIN FORM*/ 
<input type="submit" value="Entrar"/> 
</form> 
<?php 
} else { /*LOGGED IN...*/ 
if ($userinfo["sexo"]=="0"){ /*GENDER*/ 
echo "Bem-vindo, ".$userinfo["nome"]; 
} else { 
echo "Bem-vinda, ".$userinfo["nome"]; 
}?> 
<?php }?> 

腳本/ checklogin.php

<?php 

mysql_connect("localhost","dbusr","password") or die("Can't connect to DB"); 
mysql_select_db("mydb") or die("Can't select DB"); 
$user = mysql_real_escape_string(stripslashes($_POST["user"])); 
$pass = md5(mysql_real_escape_string(stripslashes($_POST["pass"]))); 
$result = mysql_query("SELECT * FROM users WHERE apelido = \"".$user."\" AND senha = \"".$pass."\""); 
if (count($result)==1) { 
    session_start(); 
    $_SESSION["user"] = $user; 
    $_SESSION["pass"] = $pass; 
    while ($row = mysql_fetch_assoc($result)) { 
     $_SESSION["uinfo"] = $row; 
    } 
    header("location:../?entrar"); 
} else { 
    header("location:../?falha"); 
} 
?> 

但是,當我去頁面並輸入我的信息,它仍然不會顯示登錄的部分。此外,當我輸入不正確的登錄名時,它不會顯示登錄表單上的文本(<span>

+0

'session_is_registered'已棄用。用if(isset($ _ SESSION ['somekey']))'代替。 – 2012-02-10 19:53:05

+0

@Marc B謝謝,爲單挑,但仍然不工作 – Kroltan 2012-02-10 19:56:28

回答

2

在檢查$_SESSION["user"]之前,您需要在index.php中添加session_start()

+0

即使會話已經啓動checklogin?編輯:是的,它的工作原理 – Kroltan 2012-02-10 19:58:54

+0

是的,這是需要從checklogin到index.php進行會話,反之亦然。請參閱http://php.net/manual/en/function.session-start.php - 「session_start()創建會話或基於通過GET或POST請求傳遞的會話標識符恢復當前會話,或者傳遞通過cookie「。 – 2012-02-10 20:07:53