$_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.