2015-07-19 50 views
0

刪除字符串我節省reuested URI到一個會話:

$_SESSION['uri'] = $_SERVER["REQUEST_URI"]; 

現在我將提交併沒有進入的情況下,頁面應該與重新加載形式來自GET參數的信息。所以我通常想通過簡單地使用str_replace('&error=empty', '', $_SESSION['uri']);來檢查存儲的URI是否已經包含帶有GET參數的字符串,但似乎這個函數不起作用,我不知道爲什麼。

這裏是從原來的代碼,其中在提交表單的示例:

if (isset($_POST['send']) === true && empty($_POST['suggestion'])) { 
    if (isset($_GET['error']) === true) { 
     header ('Location: '.$_SESSION['uri'].'withoutstringerror'); 
    } else {  
     header ('Location: '.$_SESSION['uri'].'&error=empty'); 
    } 

頭功能是必要的,因爲如果窗體將被提交併且不存在條目的所有GET參數將是丟失。這就是爲什麼我必須存儲原始URI並使用標題函數來保存信息。上面代碼的問題是,當提交表單並且沒有條目時,它會再次添加&error=empty。我認爲這將是最好的解決方案,檢查是否已經在URI中的字符串,並使用替換它str_replace()

所以我做錯了什麼?

在此先感謝。

+0

你問:如何從請求檢索$ _GET數組? –

+0

不......我在問爲什麼我不能從SESSION中刪除一個字符串。 – John

+2

你將str_replace()分配給一個變量嗎? str_replace()返回一個值。它不會修改您傳遞給參數的變量。另外,如果你想刪除你在會話中設置的變量,只需使用unset()。 –

回答

1
$_SESSION['uri'] = str_replace('&error=empty', '', $_SESSION['uri']); 

我想你只是錯過已經從str_replace()的返回值分配給您的會話變量。 str_replace()不會修改您通過參數直接傳入的變量,它會根據函數調用返回一個新值。