0

私がその問題を抱えたのは初めてです。

基本的に、ログイン関数を実行すると、index.php ファイルに渡されるセッション変数が作成されます。

問題は、ブラウザーを更新したり、他のメニュー項目をクリックしたりすると、セッションが失われることです。

ここにいくつかのコード:

public function Login_Form()
{
    if(isset($_POST['login']))
        $this->login($_POST);
 ?>
<form action="<?php $_SERVER['PHP-SELF']; ?>" method="POST" id="form_login">
<table>
    <tr>
        <td>Username</td>
        <td><input type="text" name="username" /></td>
    </tr>
    <tr>
        <td>Password</td>
        <td><input type="password" name="password" /></td>
    </tr>
    <td><input type="submit" name="login" value="Login" /></td>
</table>
</form>
 <?php
}

private function login($p)
{
    // OTTENGO VALORI PASSATI DAL LOGIN FORM
    $username = mysql_real_escape_string($p['username']);
    $password = mysql_real_escape_string(md5($p['password']));
    // CONTROLLO CHE ESISTA L'UTENTE
    $control = mysql_query("SELECT * FROM tareado.user WHERE username='$username' AND password='$password'");
    if(mysql_affected_rows() > 0)
    {
        while($x = mysql_fetch_array($control))
        {
            $id_utente = $x['iduser'];
            $_SESSION['idutente'] = $id_utente;
        }

        $_SESSION['username'] = $username;
        //session_write_close();            
        header("Location: index.php"); // REDIRECT TO INDEX.PHP, NOW WE ARE IN index.php?a=log
        //exit();

    }
    else
        echo "Credenziali errate";
}

index.php の SESSION_START() の一番上に置いているのですが、いつもセッションが切れてしまいます。

どれが問題になる可能性がありますか? リダイレクト?

4

1 に答える 1

0

リダイレクト元のページでセッションが開始されていません。Cookies タブでセッションが開始された場合でも、firebug を使用してデバッグすることもできます。ログインしようとすると、PHPSESSID のようなものが表示されるはずです。これがあなたの答えかどうかはわかりませんが、まだコメントを投稿できません。

于 2012-11-08T10:49:44.413 に答える