【问题标题】:How to assigned a different session variable to different buttons如何将不同的会话变量分配给不同的按钮
【发布时间】:2016-04-07 19:14:13
【问题描述】:

我有一个 index.php 文件,其中包含以下代码,我在其中获取存储在我的数据库中的城市名称打印所有城市并为每个城市打印一个按钮。示例:在我的数据库中包含城市(伦敦、纽约和旧金山)我会得到类似的内容:

伦敦 --> 按钮

纽约 --> 按钮

旧金山 --> 按钮

 <?PHP
    while($myrow = pg_fetch_assoc($result)) {
    $nameofcity = $myrow[cityname];

    echo $nameofcity;
    $_SESSION['variabletopass'] = $nameofcity;
    echo'<form name"formname" method="post" action="results.php">';
    echo'<input type="submit" name="submit" value="See City">';
    echo'</form>';   
   }
?>

然后我的 results.php 将在单击按钮时打开。

<html>
<body>
<?php
$var_nameofcity = $_SESSION['variabletopass'];
//Here I look in my database for info base on $var_nameofcity
// something like select description from cities where city = $var_nameofcity
//And I print the info
echo  $var_nameofcity;  
echo 'Here it goes the Picture of the city'; 
echo 'description';
?>
</body>
</html>

我的问题是:自从

    $_SESSION['variabletopass'] = $nameofcity;
    echo'<form name"formname" method="post" action="results.php">';
    echo'<input type="submit" name="submit" value="See City">';
    echo'</form>'; 

在一段时间内,$_SESSION['variabletopass'] 将只获得最后一个值,所以无论我按下哪个按钮,它都会打开我的最后一个城市(在示例中:旧金山)。

我该怎么办,所以按下按钮时传递的变量 ($_SESSION['variabletopass'] = $nameofcity;) 是与对应城市关联的变量?

非常感谢

【问题讨论】:

    标签: php session variables button


    【解决方案1】:

    将城市名称设置为表单中的隐藏输入:

    <input type="hidden" name="city" value="<?php echo $nameofcity; ?>" />
    

    然后,当您发布表单时,该城市在 $_POST 全局中可用,作为与您的隐藏输入名称相同的索引:

    <?php $nameofcity = $_POST['city']; ?>
    

    显然,请记住,您需要在读取 $_POSTed 输入时进行一些安全检查,以将脚本注入和可能的 SQL 注入保持在最低限度。

    【讨论】:

    • 谢谢!!!这很棒!!!谢谢,我正在寻找的解决方案。我只是有一点额外的问题,我正在尝试用 PHP 实际打印输入,我猜我做错了什么:echo '&lt;input type="hidden" name="city" value=" ' $nameofcity ' " &gt;';
    • 但是如果我这样做:echo '&lt;input type="hidden" name="city" value="London" &gt;'; 那么它就可以了
    • 好的,我明白了:出于某种原因,“ ”需要以不同的顺序排列: echo " "; 并且有效。谢谢
    • 您依赖于 PHP 的双引号语法,其中会打印双引号转义字符串中按名称调用的变量。使用单引号包裹字符串时,需要使用连接运算符 (.) 插入变量: echo 'hello' 。 $世界。 '!; vs echo "Hello $world!";
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    相关资源
    最近更新 更多