2012-12-23 34 views
1

我有一個頁面,q.php,這是一個用戶提交的帖子定義的ID(例如,q.php?id=1將使用$id變量的某個帖子,將所有其餘的來自數據庫的信息)。PHP重定向到URL中的變量頁面

我想在同一頁面上編寫評論提交代碼,並說明用戶可能不會在該字段中輸入任何內容。如果發生這種情況,我希望頁面(例如q.php?id=1)再次加載錯誤消息。

我可以用一個空的變量來做錯誤消息,然後通過表單激活的php文件給出一個值。但是,我在導航回到特定帖子時遇到問題。我試圖使用include('q.php?id=$id)其中$ id被設置爲一個數字,但我明白,這不是它的目的,它不接受變量

我應該用什麼來代替?

編輯

answer.php(文件形式激活):

require 'q.php'; 
$_GET['id'] = $id; 
$_SESSION['error'] = "Please fill in all of the fields."; 

q.php:

if ($_SESSION['error'] !== 0) { 
    echo "<p style='color: #AA1111;'>".$_SESSION['error']."</a>"; 
    unset($_SESSION['error']); // this isn't happening... 
} 

回答

5

如果你真的必須包括頁面內聯,你可以隨時修改$_GET

$_GET['id'] = $id; 
require 'q.php'; 

但是,錯誤消息聽起來像是可以通過會話變量或重定向來完成。一個重定向可能類似於:

header('Location: q.php?id=' . $id . '&error=The+error'); 
exit(); 

然後,您在q.php檢查$_GET['error']。使用會話變量的情況將大致相同,除了將error作爲查詢字符串參數添加之外,您立即可以使用$_SESSION['error']unset

+0

謝謝,這幾乎是完美的。我只是在解決會話變量時遇到問題。我在哪裏做這個? – Sebastian

+0

@Sebastian:只要你在'q.php'中閱讀過。 – Ryan

+0

我試過了,它不起作用。代碼\t未設置($ _ SESSION ['error']); ? – Sebastian

1

你可以使用header("Location: q.php?id=$id"); exit;,但你需要一些其他的方式發送錯誤信息(例如:將其保存在$_SESSION

您可能能夠設置$_GET數組你想要的 - 在這種情況下, ,$_GET = Array("id"=>$id);,然後include("q.php")。但是,這通常被認爲是haxy,並且如果您沒有正確使用include_once,可能會導致問題。