2016-04-10 35 views
0

我用PHP下面的HTML表單:

<form name="login" action="http://oz-local.com:8080/_admin/login.php?action=process" method="post"> 

<input type="text" name="username" class="form-control" placeholder="Username"/> 

<input type="password" name="password" class="form-control" placeholder="Password"/> 

<button type="submit" class="btn btn-primary btn-block btn-flat">Sign In</button> 

</form> 

當我試圖讓「動作」使用$_GET['action']的價值,它是空的。但是當我使用$_REQUEST['action']時,我得到的值是「process」。

我使用這個腳本是:

echo (isset($_REQUEST['action']) ? 'Yes': 'No'); 
echo '<br>R: ' . $_REQUEST['action'] . '<br><br>'; 
echo (isset($_GET['action']) ? 'Yes': 'No'); 
$gA = $_GET['action']; 
echo '<br>gA: ' . $_GET['action']; 
echo '<br><br>'; 
echo (isset($_POST['action']) ? 'Yes': 'No'); 
$pA = $_POST['action']; 
echo '<br>pA: ' . $_POST['action']; 
echo '<br><br>'; 
echo (isset($_COOKIE['action']) ? 'Si': 'No'); 
$cA = $_COOKIE['action']; 
echo '<br>cA: ' . $_COOKIE['action']; 
$method = $_SERVER['REQUEST_METHOD']; 
echo 'M: ' . $method; 

它是正常的嗎?
這不讓我感覺!

任何幫助澄清我的疑問是很好看到

+1

*「但是$ _GET不是」* - 這是正常的,因爲您使用POST方法。 –

+0

@ user6184870請檢查我的答案。 –

回答

0

當提交HTML表單,有兩種方法可以使用:GET和POST。在你的HTML,您所指定的格式應該使用:

method="post" 

這意味着PHP的$_GET陣列將不包含它,相反,它是通過兩種$_POST['action']$_REQUEST['action']訪問。

$_REQUEST兩者的組合 GET和POST值。

1

由於您使用POST方法在表單動作屬性,
<form name="login" action="http://oz-local.com:8080/_admin/login.php?action=process" method="post">

你可以使用$_POST所有值,你不需要$_GET
由於$_POST$_GET更安全。

0

有以下

$ _GET從查詢字符串,或您的網址檢索變量一起來看看。

$ _POST從POST方法中檢索變量,例如(通常)表單。

$ _REQUEST是合併$ _GET和$ _POST。它檢索GET的變量以及POST METHOD。