会话变量没有存储在php中的下拉菜单中

时间:2013-09-22 16:02:56

标签: php mysql session drop-down-menu session-variables

我查找了许多不同的存储会话变量的方法,似乎无法找到我的会话变量未从我的下拉菜单中存储的原因。这是我的campaign_select.php代码,然后在按下提交按钮后转到store_select.php。

    <?php
    session_start ();
    $host="localhost"; // Host name 
    $username="sxx2"; // Mysql username 
    $password="xxxxx!"; // Mysql password 
    $db_name="sxxxxx"; // Database name 
    $tbl_name="campaign"; // Table name 

    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB");

    $query = "SELECT campaignname FROM campaign";
    $result = mysql_query($query) or die(mysql_error());

    while($row = mysql_fetch_assoc($result))
    {
    $dd .= "<option value='{$row['campaignID']}'>{$row['campaignname']}</option>";
    } 
    if ($_POST['Submit']) 
    {

    if(isset($_POST['campaignname']))
    {   
    $_SESSION['campaign']=$_POST['campaignName'];
    }
    } 
    $_SESSION['test']="bye";
    ?>

    <form action="store_select.php" method="post">
    <select name="campaignName" id="campaignname"><? echo $dd; ?></select>
<input name="Submit" type="submit" value="Submit">
</form>

这是store_select.php:

<?php
session_start();
$host="localhost"; // Host name 
$username="sxxxx2"; // Mysql username 
$password="Wxxxx1!"; // Mysql password 
$db_name="xxxx2"; // Database name 
$tbl_name="users"; // Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$campaign=$_SESSION['campaign'];
echo $_SESSION['campaign'];
echo $_SESSION['test'];

$query = "SELECT storename FROM stores WHERE campaignname='$campaign'";
$result = mysql_query($query) or die(mysql_error());


while($row = mysql_fetch_assoc($result))
{
    $dd .= "<option value='{$row['storeID']}'>{$row['storename']}</option>";
} 
?>
<form action="" method="post">
<select name="stores"><? echo $dd; ?></select>
</form>

2 个答案:

答案 0 :(得分:0)

您正在以错误的顺序执行脚本。这就是你在做的事情:

  • 脚本1:构造表单
  • 脚本1:将表单结果($ _POST)放入会话:

    if ($_POST['Submit']) {
        if(isset($_POST['campaignname']))
        {   
            $_SESSION['campaign']=$_POST['campaignName'];
        }
    }
此时

$_POST为空。只有当用户点击“提交”并转到您的第二个脚本时,$_POST才会填充您的值。您可以跳过$_POST['Submit']的检查,这不是必需的。

  • 脚本1:将表单结果发送到脚本2
  • 脚本2:显示来自$ _SESSION的内容。它已经显示'test',但是通过上面的更改,现在您将获得预期的输出。永远记住$ _POST由用户发布(提交)表单填充。没有提交,没有价值。
顺便说一句,你不应该在没有检查恶意输入的情况下在另一个查询中使用从$ _POST收到的值 - 你看到操纵数据是多么容易。这称为SQL注入。

答案 1 :(得分:0)

替换

<form action="store_select.php" method="post">

<form action="" method="post">

if(isset($_POST['campaignname']))

if(isset($_POST['campaignName']))