1

優れた開発手法を使用してsetcookie、設定後にアフターの存在を確認する必要がありますか、それとも100%設定されていることがわかっていますか?ありがとうございました。

<?php
    require "includes/settings.php";
    require "functions/php_function_library.php";

    $item_id = $_REQUEST['item_id'];
    $item_qty = $_REQUEST['quantity'];

    echo $item_id;
    echo $item_qty;

    $cookie_guid = guid();

    setcookie("anonymous_cart", $cookie_guid);

    #check that the cookie I just set exists?


    #insert new cart record into DB
    ...
?>
4

3 に答える 3

3

戻り値を確認するだけです。falseの場合は失敗します。そうでなければ、あなたはそれが設定されていると考えることができます(私はそれがその場合に設定されないのを見たことがありません)。

if(setcookie('anonymous_cart', $cookie_guid)){
    // Joy, cookie was set
}

ただし、設定されているCookieが非常に重要である場合は、それをチェックしても問題はありません。

編集

これはCookieが受け入れられたことを保証するものではないことを指摘する人のために、私は同意し、受け入れたとは言いませんでした(どうすればよいですか?クライアントはまだCookieを受け取っていません)。単にCookieが設定されたことを意味します。これはopが尋ねたものです。

于 2013-01-09T18:23:14.047 に答える
2

設定した直後に存在することを確認する必要はありませんが、使用する直前に存在することを確認することをお勧めします。

于 2013-01-09T18:23:52.080 に答える
1

Cookie は、ローカライズされたブラウザー設定に依存しているため、本質的に信頼できません。

スクリプトが値を検索するときにクライアントから値を取得できない場合に備えて、有効な処理が適切に行われていることを確認してください。場合によっては、特に実装しているように見えるのはショッピング システムであるため、フロントエンドでユーザーに Cookie を有効にするか、除外された安全なサイトのリストにドメインを追加するように指示することさえ必要になる場合があります。

の戻り値を最初にチェックsetcookiesして、サーバーが値を送信できることを確認しますが、Cookie が受け入れられたことを意味するため、これに直接依存しないでください。値を使用する必要がある時点で、Cookie グローバルを使用して、issetまたは値の存在を常に確認してください。array_key_exists

于 2013-01-09T18:32:03.953 に答える