2012-05-31 21 views
0

當用戶登錄到我的網站,我創建一個會話稱爲$_SESSION['session_city_id']至極夾頭的ID從MySQL「重新註冊」 PHP會話基於表單POST

我不知道是否有可能改變它包含的數據從一個表單。我創建了形式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中開始編程,所以不要抨擊我beeing一個完整的小白!)

<?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 
?> 

回答

1

你可以只覆蓋你的新值會話變量(無需未設置)

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()'> 
+0

剛剛建議將名稱放在選擇標籤上,而不是在 – magicianiam

+0

的形式。對不起,我的錯,剛剛編輯後。它必須位於輸入屬性中。 – Oliver

+0

謝謝你的帖子。不過,我仍然在會話變量中獲得舊的ID ... – David

2
if (isset($_POST['select_city'])){ 
    $city_id = $_POST['select_city']; 
    $_SESSION['session_city_id'] = $city_id;     
} 

不需要取消設置,您替換了作業。

+2

+1不要忘記名字了。我會在賦值處添加一個「intval()」來確保它是一個整數。 –

+0

是的,好主意。 – Pethical

+0

它似乎無法工作。當我重定向回到我來自的頁面並回顯會話時,它仍輸出「舊」值。 – David