【发布时间】:2013-01-17 17:01:42
【问题描述】:
我有一个 PHP 脚本,它存储一个 url,从该 URL 提交表单到会话变量中,然后将其与当前页面 url 进行比较。如果它与会话中存储的不同,它将被取消设置,至少它应该是这样工作的。问题是用于检查两个 url 是否匹配的 if 语句似乎被忽略了,并且会话变量无论如何都未设置。
$compare_url_old = array_shift(explode(',', $_SESSION['search_page']));
$compare_url_new = array_shift(explode(',', $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']));
if ($compare_url_new != $compare_url_old)
{
unset($_SESSION['search_page']);
unset($_SESSION['search_price_min']);
unset($_SESSION['search_price_max']);
unset($_SESSION['search_name']);
}
奇怪的是,如果我尝试在 if 语句中回显某些内容,它会正常工作,但由于某种原因,每次都会调用未设置的函数,尽管结果如此。
【问题讨论】:
-
var_dump($compare_url_old, $compare_url_new);的结果是什么? -
string(27) "take.bg/gps_navigatsia__135" string(27) "take.bg/gps_navigatsia__135" 两个网址都是一样的。
-
你那里有
session_start()对吗? -
是的,如果我删除未设置的函数,会话变量会正确转移到其他页面。
-
如果两个值相等,则无法输入 if 条件...问题一定出在其他地方。
var_dump($compare_url_new != $compare_url_old);呢?