在搜索编程问题的答案时,我在这里阅读了很多有用的信息。我刚刚注册,因为我想问一个关于PHP变量的问题,我无法找到简明的答案。
我想检查PHP变量是否已更改。
我有一个表单字段,用户键入他们的城市,状态为。它存储在$_SESSION['location']
。
我还有一个存储国家的变量。
当$country
变量发生变化时,城市,州由于处于会话状态而保留在表单字段中。这是一个问题,因为显然最初输入的城市不适用于被选中的其他国家。
每次国家/地区变量更改时,我都需要取消设置$_SESSION['location']
,以便表单字段返回空。我不知道该怎么做。但是下面是我的代码,尝试在if语句中取消设置会话。
// Country Selector
switch ($country) {
case "USA":
$example = "San Jose, CA or 94102";
$placeholder = "city, state, or zip";
break;
case "Canada":
$example = "Toronto, ON";
$placeholder = "city, state";
break;
case "India":
$example = "New Delhi, Delhi";
$placeholder = "city, state";
break;
default:
$example = "San Jose, CA or 94102";
$placeholder = "city, state, or zip";
}
// Location Search
$location = '';
$prev_country = $country;
if ($country == $prev_country) {
if (isset($_POST['location'])) {
$_SESSION['location'] = $location = ucwords($_POST['location']);
header('Location: '.($_SERVER['REQUEST_URI']));
} elseif (isset($_SESSION['location'])) {
$location = $_SESSION['location'];
}
} else {
unset($_SESSION['location']);
unset($_POST['location']);
$location = '';
}
更新
我尝试了使用if ($country == $_SESSION['country'])
的建议,但仍然在之前的代码中得到了与之前相同的结果。
// Location Search
$location = '';
$_SESSION['country'] = $country;
if ($country == $_SESSION['country']) {
if (isset($_POST['location'])) {
$_SESSION['location'] = $location = ucwords($_POST['location']);
header('Location: '.($_SERVER['REQUEST_URI']));
} elseif (isset($_SESSION['location'])) {
$location = $_SESSION['location'];
}
} else {
unset($_SESSION['location']);
unset($_POST['location']);
$location = '';
}
答案 0 :(得分:1)
这两行代码肯定不会给出任何好的结果,因为条件总是会评估为真:
$prev_country = $country;
if ($country == $prev_country) {
您需要做的是检查会话中的值与用户刚刚发送的值:
if($_SESSION['country'] != $_POST['country']) {
// country changed! do something!
}
答案 1 :(得分:0)
这没有任何意义。
$prev_country = $country;
if ($country == $prev_country) {
if语句将始终为true,因为$ country与$ prev_country相同。您应该检查$ country是否与之前的会话相同(如果您到目前为止没有这样做,请将其保存在那里)。
if ($country == $_SESSION['country']) {
if (isset($_POST['location'])) {
$_SESSION['location'] = $location = ucwords($_POST['location']);
header('Location: '.($_SERVER['REQUEST_URI']));
} elseif (isset($_SESSION['location'])) {
$location = $_SESSION['location'];
}
} else {
unset($_SESSION['location']);
unset($_POST['location']);
$location = '';
}