2013-02-21 91 views
0

我开发了这组2个脚本以便使用$ _SESSION变量来检查用户是否已登录。我没有使用Cookie,因为我不想使用“爵士乐“。

这里是login.php中

require 'host.php'; // Connection to database 

$message = ''; 

if (isset($_POST['submit'])) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    if ((!$username) || (!$password)) { 
     $message ='Preencha todos os campos.'; 
    } else{ 
     $username = preg_replace("#[^0-9a-z]#i","",$username); 
     $password = sha1($password); 

     $sql = "SELECT * FROM utilizadores WHERE nome_utilizador='$username' AND palavra_chave='$password' LIMIT 1"; 
     $query = mysql_query($sql) or die(); 
     if (mysql_num_rows($query) == 1) { 
      // Logged in stuff 
      session_start(); 
      $_SESSION['username'] = $username; 
      $_SESSION['password'] = $password; 
      while ($consulta = mysql_fetch_array($query)) { 
       $id = $consulta['id_utilizador']; // ID of username. 
      } 
      $_SESSION['id'] = $id; 
      $message = '<a href="calendario.php">Clique aqui para ir para o calendário.</a>'; // Message that is shown to redirect to another page. 
     } else{ 
      $message = 'Os dados que inseriu estão incorrectos!'; // Data inserted is incorrect. 
     } 
    } 

} 

这里是检查,如果用户在

session_start(); 

include 'host.php'; 

if (isset($_SESSION['id'])) { 
    $id = $_SESSION['id']; 
    $password = $_SESSION['password']; 
    //Verificar se o user existe. 
    $sql = "SELECT * FROM utilizadores WHERE id_utilizador='$id' AND palavra_chave='$password' LIMIT 1"; 
    $query = mysql_query($sql) or die('Could not connect.'); 
    if (mysql_num_rows($query) > 0) { 
     header('Location: logout.php'); 
    } else{ 
     // Logged in stuff 
     $logged = 1; 
    } 
} else{ 
    $logged = 0; 
} 

本想我会做检查会议记录的文件是包括文件在每一页和检查是$记录== 0.

但它不是存储每页的会话数据。

希望你能帮助我!

谢谢!

+0

你在所有页面上使用session_start()吗? – 2013-02-21 11:44:33

+0

如果我在每个页面中包含verify_session.php,是的,我是 – langel 2013-02-21 11:45:38

+0

您是否尝试将session_start放在php文件顶部的login.php中,而不是在页面的一半处放置? – 2013-02-21 11:49:02

回答

1

你的id变量在while循环中,不能在while循环之外读取。所以这就是为什么会话存储没什么

尝试while循环

$id = ""; 
    while ($consulta = mysql_fetch_array($query)) { 
    ...... 

你可以尝试,如果它呼应的东西之前定义id变量后while循环 像

echo $id ; 
0

我终于解决了问题!

所有我加做的是改变verify_session.php,并在mysql_num_rows()把它== 0,而不是> 0

感谢所有帮助家伙!