2012-02-10 16 views
0

私は現在サイトで作業しており、ログインシステムを作っています。セッションを使用してログイン状態を追跡しています。今までログインを含むページは以下の通りである: (私はこのような、URLにPOST変数を定義するページを変更: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'])) 'を使用してください。 –

+0

@Marc Bありがとう、ヘッドアップのために、まだ動作していない – Kroltan

答えて

2

あなたは$_SESSION["user"]をチェックする前にはindex.phpにsession_start()を追加する必要があります。

+0

セッションがすでにcheckloginで開始されていても?編集:うん、それは動作します – Kroltan

+0

はい、これはあなたのセッションをcheckloginからindex.phpに運ぶために必要となり、その逆もあります。 http://php.net/manual/en/function.session-start.phpを参照してください。 - "session_start()は、GETまたはPOSTリクエストを介して渡されたセッション識別子に基づいてセッションを作成するか、現在のセッション識別子を再開します。クッキーを介して。 –

関連する問題