我遇到超級全局$_POST
的概念性問題。
它應該在任何時候都可用,無需任何聲明。
我有三個簡單的腳本:
腳本1 - home.php
<?php
SESSION_START();
?>
<html> <head> <title>Home</title> </head>
<body>
<!-- this form will pass $_POST["pd"] to check.php -->
<form name="input" action="check.php" method="post">
<input type="password" name="pd" size="15" maxlength="14">
<input type="submit" value="Submit">
</form>
</body>
</html>
?>
腳本2 - check.php
<?php
SESSION_START();
if ($_POST["pd"] == "hello")
{ header('Location: http://127.0.0.1/PP/ok.php') ; }
?>
腳本3 - ok.php
<?php
SESSION_START();
foreach($_POST as $key => $value) {
echo $key;
echo " = ";
echo $value;
}
echo "password = ".$_POST["pd"];
?>
<html> <head> <title>PasswordOK</title> </head>
<body>
Password OK
</body>
</html>
腳本1:顯示在哪裏輸入密碼hello
並將其提交給腳本2.
腳本2的一種形式:檢查超全球$_POST["pd"] == "hello"
,並且由於它是正確的,它會將我發送給腳本3.它不會給出Undefined index
錯誤。
腳本3:foreach
循環應訪問$_POST["pd"]
超全球和顯示pd = hello
。它不顯示任何東西 - 它不會給我Undefined index
錯誤。
echo "password = ".$_POST["pd"];
應該顯示password = hello
。它顯示password =
並顯示Undefined index
錯誤。
HTML塊功能正常並顯示日期和消息。
這是我的問題。
由於$_POST["pd"]
是超全球性的,因此不應引起Undefined index
錯誤。
那麼爲什麼呢?
你的很多答案都說我應該檢查$_POST["pd"]
確實存在 - 但我不必爲腳本2做這件事,那麼爲什麼我必須爲腳本3做這件事?
我錯過了什麼嗎?
是$_POST["pd"]
是超全球的還是不是?如果是的話,爲什麼它會出現Undefined index
錯誤?
任何人都可以幫忙嗎?
謝謝。
是的,它始終可用。這並不意味着它會一直有你想要的確切內容。 –
您只是將用戶從script2重定位到3,實際上並未發送有效的POST請求,對嗎? – kero
執行重定向時,表單輸入不會被複制。 – Barmar