0

ログインを処理するためのスクリプトとログインを登録するためのスクリプトの 2 つがあります。どちらもセッション ID を作成し、Cookie とデータベースの両方に挿入します。DB 挿入は正常に機能しますが、Cookie は設定されていません。

ログインする:

//...Stuff...
$sql = "SELECT * FROM dm_users WHERE username = '$username' LIMIT 1";
    $res = mysql_query($sql);
    if(mysql_num_rows($res) == 0) {
        header("Location: denied.php?u");
        die();
    }
    while($r = mysql_fetch_assoc($res)){
        $brought = $r['password'];
    }
    if (PassHash::check_password($brought, $password)) {  
        if($remember == 1) {
            $time = time() + (10 * 365 * 24 * 60 * 60);
        } else {
            $time = 0;
        }
        $val = uniqid() . time();
        setcookie("dmsesid",$val,$time);
        $sql = "INSERT INTO dm_sessions (username,sesid,`timestamp`) VALUES ('$username','$val',now())";
        $r = mysql_query($sql);
        $sql2 = "UPDATE dm_users set lastlogin = NOW() WHERE username = '$username'";
        $r2 = mysql_query($sql2);
        header('Location: ../characters.php');
    } else {  
        //...More stuff...

登録プロセスはほとんど同じように機能しますが、$time = 0; のみです。オプション。

どんな助けでも大歓迎です!

4

1 に答える 1

2

Cookieのパスを設定する必要があると思います

setcookie("dmsesid",$val,$time, '/');

PHPマニュアルから:

Cookie が使用可能になるサーバー上のパス。「/」に設定すると、Cookie はドメイン全体で使用可能になります。「/foo/」に設定すると、Cookie は /foo/ ディレクトリと、 domain の /foo/bar/ などのすべてのサブディレクトリ内でのみ利用可能になります。デフォルト値は、Cookie が設定されている現在のディレクトリです。

于 2013-08-01T10:57:11.590 に答える