我只是試圖存儲用戶在數據庫中查看的當前頁面。當頁面加載時,我將$_SERVER['REQUEST_URI'] . $_SERVER['QUERY_STRING']
插入到我的數據庫中,但僅顯示頁面(例如index.php?
),沒有查詢字符串(我已驗證URL中有查詢字符串)。
我試過$_SERVER['PHP_SELF']
,結果相同。
編輯補充: 這裏是$ _ SERVER轉儲:
Array
(
. . .
[REQUEST_METHOD] => GET
[QUERY_STRING] => view=scores&yr=2010&wk=1
[REQUEST_URI] => /index.php?view=scores&yr=2010&wk=1
. . .
)
所以查詢字符串數組中存在的,即使REQUEST_URI的一部分。所以我的查詢...
mysql_query("insert into clickstream
(user_id, page)
values
(" . $_SESSION['user_id'] . ", '" . mysql_real_escape_string($_SERVER['REQUEST_URI']) . mysql_real_escape_string($_SERVER['QUERY_STRING']) . "');")
or die('mysql error: ' . mysql_error());
...實際上應該插入查詢字符串兩次,而不是沒有時間!
想法?
新增思路:是否有可能將MySQL DB從輸入中除去所有內容,超出?
?該字段是varchar。
UPDATE W /部分解決:的SQL輸入更改爲只是$_SERVER['QUERY_STRING']
(不REQUEST_URI)成功地輸入查詢字符串。因此,它導致我相信PHP或MySQL 是剝離了?
之後的輸入字符串中的所有內容。所以輸入參數是正確的;結果剛剛被截斷。
有誰知道爲什麼這可能是這種情況?
你測試過var_dump($ _ SERVER);'必須提供什麼嗎? – hakre
有趣的是,您是否檢查過.htaccess的存在? –
另請注意,POST請求通常不會與'QUERY_STRING'一起提供。 (否則,這是一個不太可能的錯誤,因爲CGI規範規定了它帶有參數的GET請求。) – mario