-1

ユーザーがログイン/サインアップするときに、COOKIE と SESSION の両方を設定しています。より使いやすくするための SESSION と永続化のための COOKIE。新規ユーザーが私の Web サイトにサインアップしたときに、そのユーザーをプロファイルにリダイレクトしたいと考えています。これを行うためにサインアップしたらすぐに、SESSION および COOKIE 変数を作成する必要があります。これが私の解決策です:

    $query2= "INSERT INTO users (fname, lname, email, password) VALUES   
 ('$fname', '$lname', '$email', '$password1')";
    mysqli_query($connect, $query2)
        or die('error with query');
    session_start();
    $query3= "SELECT * FROM users where email= '".$email."' AND password= 
'".$password1."'";
    $result2= mysqli_query($connect, $query3);
    $row= mysqli_fetch_array($result2);
    $_SESSION['id'] = $row['user_id']; 
    setcookie('id', $row['user_id']);
            echo $_SESSION['id'];
            echo $_COOKIE['id'];
    echo "You are now logged in.";

最初にデータの新しい行を挿入します。次に、それを呼び出して、SESSION 変数と COOKIE 変数を作成します。しかし、ここに私の問題があります.COOKIE変数をエコーするたびに、その値は実際の値よりも常に1少なくなります。SESSIONは大丈夫です。私は何を間違っていますか?何が問題になる可能性があります。SESSION 変数と COOKIE 変数をエコーアウトするために別の page.php を作成しましたが、どちらも正しいです。ありがとう。

4

2 に答える 2

5

setcookie を使用して設定した Cookie の値は、同じページには表示されません。

Cookie の仕組みは、Cookie に設定したデータがブラウザーに送信され、ローカル PC に保存されるというものです。ブラウザは、次にブラウザがサーバーに接続したときに、$_COOKIE 配列内のページで使用できるようにします。

したがって、設定直後に $_COOKIE を使用しても機能しません。

一方、セッションは $_SESSION を使用して設定した直後に使用できます。

于 2012-08-27T17:57:47.487 に答える
1

$_COOKIEリクエストで送信された Cookie が含まれます。次のリクエストを送信するまで、通話setcookie()は変わりません。$_COOKIE最後のリクエストの Cookie が表示されます。;)

于 2012-08-27T17:56:00.010 に答える