在php中使用onclick更新会话变量

时间:2013-10-28 15:46:53

标签: javascript php session

我试图通过触发$_SESSION['state']事件在用户点击锚标记时更新onclick。变量$state_names_array作为特定国家/地区的所有州名称。但问题是无论我点击哪个锚标记,$_SESSION['state']总是被$ state_names_array的最后一个元素更新。

<?php
foreach($state_names_array as $value){
    $temp = '<?php $_SESSION["state"]=$value;?>';
    ?>
    <a href="index.php" onclick="document.write('<?php $_SESSION['state'] = $value ?>')"><?php echo $value ?></a><br>
    <?php
}
?>

1 个答案:

答案 0 :(得分:0)

我不会编写整个代码,我只会向您展示一个示例,如何执行此操作:

<?php
    foreach ($state_names_array as $value) {
        echo '<a href="index.php" onclick="change_value('.$value.');">'.$value.'</a><br>';
    }
 ?>

然后你将拥有javascript函数change_value

在这里,您将向某个PHP文件发送ajax调用,您将在其中处理$_SESSION["state"]=$value;

另外你没有说,点击锚点后你想要什么,因为只有在刷新你的网站后你才能访问新的$_SESSION["state"] ...

也许你只想在点击一些锚之后重定向到index.php,这对你来说已经足够了,那么只需使用value作为$ _GET参数,f.e。:

<?php
    foreach ($state_names_array as $value) {
        echo '<a href="index.php?new_value='.$value.'">'.$value.'</a><br>';
    }
?>

并在这行中添加index.php文件:

if (isset($_GET['new_value'])) {
    $_SESSION["state"] = $_GET['new_value'];
}