基于表单 POST “重新注册”PHP 会话


"re-register" PHP session based on form POST

当用户登录到我的网站时,我会创建一个名为$_SESSION['session_city_id']的会话,该会话从MySQL收集ID

我想知道是否可以从表单更改它包含的数据。我创建了如下所示的表单select_city

<form name='select_city' action='sessions.php' method='post' style='display:inline;'>
  <select onchange='this.form.submit()'>
  <option value='1'>The first value</option>
  <option value='2'>The second value</option>
  <option value='3'>The third value</option>
  </select>
 <noscript><input type="submit" value="Submit"></noscript>
</form>

我的sessions.php看起来像这样(我刚开始用PHP编程,所以不要因为我是一个彻头彻尾的菜鸟而抨击我!

<?php
session_start();
$url = htmlspecialchars($_SERVER['HTTP_REFERER']); //Find out where the user came from
if (isset($_POST['select_city'])){
    $_POST['select_city'] = $city_id;
    
    if (isset($_SESSION['session_city_id'])){
    unset($_SESSION['session_city_id']);
    }
    $_SESSION['session_city_id'] = $city_id;                
}
header ("Location: $url"); //Redirect back to the page the user came from
?>
if (isset($_POST['select_city'])){
    $city_id = $_POST['select_city'];
    $_SESSION['session_city_id'] = $city_id;                
}

不需要取消设置,并且您替换了分配。

您可以使用新值覆盖会话变量(无需取消设置)

if (isset($_POST['select_city'])){
    $_SESSION['session_city_id']=(int)$_POST['select_city']; // add a better check!
}

并且不要忘记您所在领域的名称

<select name="select_city" onchange='this.form.submit()'>