我遇到了问题,我需要帮助。我有这样的代码:
<?php
if (isset($_GET['profile']) && '' != $_GET['profile']) {
setcookie('asd', $_GET['profile'], time() + 2592000, '/');
}
我正在获取配置文件值并将其设置为用户cookie。它工作正常,如果有1个配置文件,则下注如果网址如下:http://www.example.com?profile=1&profile=2则覆盖该值。 我想要的是改变方式,这样写入cookie的信息就不会被覆盖,但是会这样写:1-2,所以cookie就像:asd 1-2
答案 0 :(得分:0)
你做不到。您需要将uri设置为?profile=1-2
或?profile1=1&profile2=2
。当您使用?var=x&var=z&var=foo
时,将始终丢失两个值。这与以下内容完全相同:
$array = [];
$array['foo'] = 1;
$array['foo'] = 2;
$array['foo'] = 3;
此时您丢失了值1
和2
。您在3
下只有 $array['foo']
。
修改强>
您可以选择在PHP中创建?profile1=x&profile2=z ... &profile999=foo
及更高版本的URI:
foreach($_GET as $key => $val) {
// omits null values
if (!isset ($val)) continue;
// omits $_GET variables not starting with 'profile'
if (strpos($key,'profile') !== 0) continue;
$prof[] = $val;
}
$profiles = implode('-',$prof);
setcookie('asd', $profiles, time() + 2592000, '/');
或?profile[]=1&2&3
以及代码:
if (isset ($_GET['profile'])) {
foreach ($_GET['profile'] as $val) {
$prof[] = $val;
}
$profiles = implode('-',$prof);
setcookie('asd', $profiles, time() + 2592000, '/');
}
答案 1 :(得分:0)
GET参数不起作用。
提交多值表单字段,即通过GET var提交数组,可以按如下方式完成:
http://www.example.com/index.php?cars[]=Saab&cars[]=Audi
现在$ _GET将是一个包含所有值的数组。