PHP设置并读取Cookie字符串

时间:2015-01-29 16:57:26

标签: php cookies

我已经完成了我的表单,我知道如何使用PHP设置单个cookie但是设置cookie字符串的最佳格式是什么。我想要一个像这样的cookie(或类似的,我的格式只是一个例子);

偏好设置[主题=此&安培;布局=那]

我如何设置这样的cookie,然后从我的字符串中获取信息?

代码:

<?php
    if (isset($_POST['submitted'])) {
        $a = gmdate("M d Y H:i:s");
        $b = "Cookies=true&Cookies_Accepted=" . $a . "";
        $c = $_POST["APT_SELECTED"];
        $d = $_POST["APPT_SELECTED"];
        if ($d == 'Custom') {
            $d = $c;
        };
        $e = $_POST["APL_SELECTED"];
        $f = $_POST["APTNP_SELECTED"];
        $g = $_POST["APSNP_SELECTED"];
        $h = $_POST["APSNM_SELECTED"];
        $i = $_POST["ScreenTimeout"];
        $j = time() + (10 * 365 * 24 * 60 * 60);
        $k = "/admin/";
        $l = "rafflebananza.com";
        $m = array(
            'APCA' => 'true',
            'APCAW' => $a,
            'APT' => $c,
            'APPT' => $d,
            'APL' => $e,
            'APTNP' => $f,
            'APSNP' => $g,
            'APSNM' => $h,
            'APLSA' => $i
        );
        foreach ($m as $n => $o) {
            setcookie("RBAP_Prefs[$n]", $o, $j, $k, $l);
        };
        header("Location: http://admin.rafflebananza.com/incex.php");
    };
?>

1 个答案:

答案 0 :(得分:3)

PHP允许您使用[]中的setcookie()表示法设置字符串值,您可以使用两个子键多次调用setcookie()Prefs$_COOKIE这个名字。

从技术上讲,PHP会为数组元素设置多个cookie,但是当从// And set each in the cookie 'Prefs' setcookie('Prefs[theme]', 'this' /*, $timeout, $path, $domain... */); setcookie('Prefs[layout]', 'that' /*, $timeout, $path, $domain... */); 读回时,PHP将完全按照您期望的方式排列数组。

所以你可以把它设置为:

$_COOKIE['Prefs']

它可以作为print_r($_COOKIE['Prefs']); // Array ( // [theme] => this, // [layout] => that // )

中的数组读取
setcookie()

您可以循环遍历现有数组,而不是为每个人手动调用// Define your array $prefs = array('theme' => 'this', 'layout' => 'that'); // Loop to create keys foreach ($prefs as $key => $value) { setcookie("Prefs[$key]", $value, $timeout, $path, $domain); } 。如果你只有一个嵌套级别,这很方便。

&

如果出于某种原因,必须以查询字符串样式theme=this&layout=that分隔的字符串parse_str('theme=this&layout=that', $prefs); // $prefs is now as in the previous example. Proceed to set // cookie values with the foreach loop... 开头,您可以先将其解析为数组using parse_str()

setcookie()

如果您决定以字符串格式存储Cookie,则可以将该字符串传递到parse_str(),然后使用$_COOKIE将其从// Set it as a string setcookie('Prefs', 'theme=this&layout=that'); // And parse it from $_COOKIE into $prefs parse_str($_COOKIE['Prefs'], $prefs); 中读回来。我不喜欢这种方法,我宁愿把cookie设置为上面的数组值。

setcookie()
{{1}}文档中的

More examples are available