【问题标题】:$_SESSION variable getting lost somewhere........or PHP ignoring "IF...ELSEIF"$_SESSION 变量在某处丢失........或 PHP 忽略“IF...ELSEIF”
【发布时间】:2015-07-13 00:11:49
【问题描述】:

我无法让我的 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");
    }

}

这是最简单的部分。

如果选择了“单选按钮”,我有一个 Javascript 函数可以打开一个“新(子)窗口

这也很容易。

但是,困难的部分来了:在这个新窗口中,用户必须从另一个单选按钮中进行选择:

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>';
            }

基本上,这意味着:如果用户在当前(子)窗口中选择“yes”,则窗口关闭,父窗口重定向到“25.php " 或 "50.php"..........取决于选择的 $_SESSION['my_selection'] --- 的值在父窗口的前面

但是,由于某种原因,它不起作用。我的代码正在执行仅第一个 IF 条件:

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>';
            }

它完全忽略了第二个......即使用户之前在父窗口中选择了“50”。

我的第一个想法是:单选按钮的 SESSION 值 ---- $_SESSION['my_selection'] --- 没有被转移到新的(子)窗口中.

但是,我使用“echo”来验证它是否正常工作。该值确实被转移到新的(子)窗口中。

但是,在子窗口关闭并且父窗口被重定向后,我再次使用“echo”来跟踪任何错误............它显示了那 : $_SESSION['my_selection'] 的值总是等于 "25" !

简而言之:为什么第二个 IF 语句被忽略??

    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>';

【问题讨论】:

标签: php session if-statement session-variables new-window


【解决方案1】:

您在几乎所有语句中都使用= 而不是==

if (($_POST['my_response'] = 'yes')

应该是

if (($_POST['my_response'] == 'yes')

这样,您不必检查$_POST['my_response'] 是否等于 为“是”,但是否可以将“是”分配给$_POST['my_response']。因此,所有您的if 语句都是true

【讨论】:

  • 非常感谢您的帮助! :=)
【解决方案2】:
($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25')  
                       ^                                      ^

单个等号是一个赋值,并且由于您分配的值是真实的,if 将始终评估为 true。使用== 进行比较。

【讨论】:

  • 非常感谢您的帮助! :=)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 2012-08-12
相关资源
最近更新 更多