0

$ _SESSION変数を使用してユーザーがログインしているかどうかを確認するために、この2つのスクリプトのセットを開発します。まだその「ジャズ」に到達したくなかったため、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;
}

セッションをチェックするために私がしたいのは、すべてのページにファイルを含めることであり、チェックは$ logged==0です。

ただし、ページ間でセッションデータを保存しているわけではありません。

あなたが私を助けてくれることを願っています!

ありがとう!

4

2 に答える 2

1

id変数はwhileループの内側にあり、whileループの外側では読み取ることができません。そのため、セッションは何も保存していません

whileループの前にid変数を定義してみてください

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

そのようなwhileループの後に何かをエコーするかどうかを試すことができます

  echo $id ;
于 2013-02-21T11:57:34.613 に答える
0

私はついに問題を解決しました!

私が追加することは、verify_session.php を変更することだけであり、mysql_num_rows() で > 0 ではなく == 0 にします。

みんな助けてくれてありがとう!

于 2013-02-21T12:49:20.913 に答える