问:我有一种情况需要在两个引擎之间传递Cookie:PHP和ASP。
ASP正在生成带有密钥的cookie
PHP能够看到cookie,并且正在成功读取它。但是,我不确定如何将键和值分开以在表单元素等中使用。
示例:假设我的cookie名为“ mycookie1”,其中包含两个键:“ mysource”和“ myid”。mysource的值为“ index.php”,myid的值为“ 12345”
当我在PHP中调用Cookie时,它会看到以下内容:“ mysource = index.php&myid = 12345”
然后,如何将这些值分成它们自己的变量以在表单元素中使用?值得一提的是,您能告诉我如何在不分配变量的情况下直接拆分这些吗?
我尝试过的事情:
我尝试了几种不同的方式来收集信息,但是PHP总是会抛出错误。这似乎是由于它在cookie本身中看到的等号引起的。我尝试了以下代码来显示键和值:
foreach($ _COOKIE ['mycookie1'] as $ key => $ value){
echo“ $ key:$ value”;
}
这会引发错误“解析错误:语法错误,意外的T_VARIABLE,预期为','或';' ”
好的,所以它不喜欢这样阅读。
我已经尝试了以下各种变体,并且无论我怎么写,都得到大致相同的erorr:
$ myval = “” $ _COOKIE ['mycookie1']“ ;
这会吐出错误“解析错误:语法错误,意外的T_ENCAPSED_AND_WHITESPACE,期望为T_STRING或T_VARIABLE或T_NUM_STRING”
实际上,我从未遇到过这样的情况,即需要在PHP引擎中使用键控cookie。我希望其他的spiceworks用户对此有一些建议或经验。
答:看来我们已经弄清楚了。
首先,我将变量写错了。这是正确的方法:
$ myval = $ _ COOKIE [ “ mycookie1” ];
接下来,我们需要将字符串拆分,如下所示:
$ myarray = explode(“ &”,$ myval) ;
现在,我们来寻找等号的位置
$ pos = stripos($ myarray [0],'=');
由于PHP使用零作为起始数字,因此我们需要在$ pos变量中加1,如下所示:
$ pos = $ pos + 1;
现在,我们使用substr函数删除要查找的值之前的所有内容,并将其分配给它自己的$ mysource变量。
$ mysource = substr($ myarray [0],$ pos);
现在,我们可以简单地冲洗并重复每个数组项,如下所示:
$ pos = stripos($ myarray [1],'=');
$ pos = $ pos + 1;
$ myid = substr($ myarray [1],$ pos);
现在,只需在表单元素中需要的任何位置使用$ mysource和$ myid即可。
不简单...但是效果很好。