0

我查找了许多不同的存储会话变量的方法,但似乎无法找到为什么我的会话变量没有从我的下拉菜单中存储。这是我的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>
4

2 回答 2

0

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

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

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

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

  • 脚本 1:将表单结果发送到脚本 2
  • 脚本 2:显示来自 $_SESSION 的内容。它已经显示“测试”,但是通过上面的更改,现在您将获得预期的输出。永远记住 $_POST 是由用户发布(提交)表单来填写的。没有提交,没有价值。

顺便说一句,如果不检查恶意输入,您不应该在另一个查询中使用从 $_POST 收到的值 - 您看到了操作数据是多么容易。这称为 SQL 注入。

于 2013-09-22T16:23:24.883 回答
0

代替

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

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

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

if(isset($_POST['campaignName']))
于 2013-09-22T16:33:33.850 回答