$_SESSION 变量在某处丢失........或 PHP 忽略 "IF...ELSEIF"
$_SESSION variable getting lost somewhere........or PHP ignoring "IF...ELSEIF"
我在让我的 PHP 脚本正确读取和执行我的“IF.....ELSEIF”条件时遇到问题。
在我的第一个文件中,我有以下代码:
if(isset($_POST['submit']) {
$selected_radio = $_POST['selection'];
$_SESSION['my_selection'] = $_POST['selection'];
if (($selected_radio == '25') {
header("url=http://xxxxxxxxxxxxxxxxx");
}
elseif (($selected_radio == '50') {
header("url=http://xxxxxxxxxxxxxxxxx");
}
}
这是最简单的部分。
如果“单选按钮”中的任何一个被 selected,我有一个 Javascript 函数可以打开一个“new (child) window"
这也很简单。
但是,困难的部分来了:在新的 window 中,用户必须 select 从另一个单选按钮中选择 :
if(isset($_POST['submit']) {
$selected_radio = $_POST['my_response'];
if (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25'))
{
echo '<script type="text/javascript">window.opener.location =
"/PHP/25.php";setTimeout("window.close();", 1000);</script>';
}
elseif (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] =
'50')) {
echo '<script type="text/javascript">window.opener.location =
"/PHP/50.php";setTimeout("window.close();", 1000);</script>';
}
基本上,这意味着:如果用户 selects "yes" 在当前 (child) window,那么window关闭,parentwindowre-directs变为“25.php”或“50.php"........取决于 $_SESSION['my_selection'] 的值 --- 是 select早些时候在 parent-window
但是,由于某种原因,它不起作用。我的代码只执行 第一个 IF-condition :
if (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25'))
{
echo '<script type="text/javascript">window.opener.location =
"/PHP/25.php";setTimeout("window.close();", 1000);</script>';
}
它完全忽略了第二个......即使用户早些时候select输入了“50”在 parent-window.
我的第一个想法是:radio-button ---- $_SESSION['my_selection'] 的 SESSION 值不是 carried-over进入新(child)window.
但是,我使用“echo”来验证它是否正常工作。该值确实被 carried-over 转化为新的 (child) window.
然而,在 child-window 关闭后,parent-window 是 re-directed,我再次使用“echo”来跟踪任何错误.........它表明:$_SESSION['my_selection'] 的值总是等于“25" !
简而言之:为什么第二个 IF-statement 被忽略了??
elseif (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] =
'50')) {
echo '<script type="text/javascript">window.opener.location =
"/PHP/50.php";setTimeout("window.close();", 1000);</script>';
($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25')
^ ^
单个等号是一个赋值,因为您赋值是真实的,所以 if
的计算结果总是 true
。使用==
进行比较。
您在几乎所有语句中都使用 =
而不是 ==
:
if (($_POST['my_response'] = 'yes')
应该是
if (($_POST['my_response'] == 'yes')
这样,您不会检查 $_POST['my_response']
是否等于 到 "yes",但如果可以分配 "yes"至 $_POST['my_response']
。因此,所有 你的 if
语句是 true
.
我在让我的 PHP 脚本正确读取和执行我的“IF.....ELSEIF”条件时遇到问题。
在我的第一个文件中,我有以下代码:
if(isset($_POST['submit']) {
$selected_radio = $_POST['selection'];
$_SESSION['my_selection'] = $_POST['selection'];
if (($selected_radio == '25') {
header("url=http://xxxxxxxxxxxxxxxxx");
}
elseif (($selected_radio == '50') {
header("url=http://xxxxxxxxxxxxxxxxx");
}
}
这是最简单的部分。
如果“单选按钮”中的任何一个被 selected,我有一个 Javascript 函数可以打开一个“new (child) window"
这也很简单。
但是,困难的部分来了:在新的 window 中,用户必须 select 从另一个单选按钮中选择 :
if(isset($_POST['submit']) {
$selected_radio = $_POST['my_response'];
if (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25'))
{
echo '<script type="text/javascript">window.opener.location =
"/PHP/25.php";setTimeout("window.close();", 1000);</script>';
}
elseif (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] =
'50')) {
echo '<script type="text/javascript">window.opener.location =
"/PHP/50.php";setTimeout("window.close();", 1000);</script>';
}
基本上,这意味着:如果用户 selects "yes" 在当前 (child) window,那么window关闭,parentwindowre-directs变为“25.php”或“50.php"........取决于 $_SESSION['my_selection'] 的值 --- 是 select早些时候在 parent-window
但是,由于某种原因,它不起作用。我的代码只执行 第一个 IF-condition :
if (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25'))
{
echo '<script type="text/javascript">window.opener.location =
"/PHP/25.php";setTimeout("window.close();", 1000);</script>';
}
它完全忽略了第二个......即使用户早些时候select输入了“50”在 parent-window.
我的第一个想法是:radio-button ---- $_SESSION['my_selection'] 的 SESSION 值不是 carried-over进入新(child)window.
但是,我使用“echo”来验证它是否正常工作。该值确实被 carried-over 转化为新的 (child) window.
然而,在 child-window 关闭后,parent-window 是 re-directed,我再次使用“echo”来跟踪任何错误.........它表明:$_SESSION['my_selection'] 的值总是等于“25" !
简而言之:为什么第二个 IF-statement 被忽略了??
elseif (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] =
'50')) {
echo '<script type="text/javascript">window.opener.location =
"/PHP/50.php";setTimeout("window.close();", 1000);</script>';
($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25')
^ ^
单个等号是一个赋值,因为您赋值是真实的,所以 if
的计算结果总是 true
。使用==
进行比较。
您在几乎所有语句中都使用 =
而不是 ==
:
if (($_POST['my_response'] = 'yes')
应该是
if (($_POST['my_response'] == 'yes')
这样,您不会检查 $_POST['my_response']
是否等于 到 "yes",但如果可以分配 "yes"至 $_POST['my_response']
。因此,所有 你的 if
语句是 true
.