2014-02-14 86 views
-1

我正在編寫一個PHP腳本,但我似乎無法真正實現它的功能。我正在測試基礎知識,但我不明白GET和POST的含義,有什麼區別?我在網上看到的所有定義對我來說都沒什麼意義,我迄今爲止編碼的內容(但是由於我不瞭解POST和GET,我不知道如何讓它起作用:POST和GET在HTML/PHP中有什麼區別

<form name="mail_sub" method="get"> 
Name: <input type="text" name="theirname"> <br /> 
Email:&nbsp; <input type="text" name="theirpass"> <br /> 
<input type="submit" value="Join!" style="width:200px"> 
</form> 
<?php 
if (isset($_POST['mail_sub'])) 
    { 

    echo $_POST['theirname']; 

    } 
?> 
+1

http://stackoverflow.com/questions/3477333/what-is-the-difference-between-post-and-get –

+1

表單應該使用POST。期。 (*除非你知道你在做什麼*) –

+0

@SergioTulentsev除非它是一個搜索表單。 – Cthulhu

回答

1

$ _ POST是不是爲你工作,因爲你有表單方法設置來獲得。

<form name="mail_sub" method="post"> 

有大量的更好信息網上以崗位之間的區別,並能獲得我不會去但是這會解決你的問題

更改你的PHP以及

if (isset($_POST['theirname'])) { 

    echo $_POST['theirname']; 

} 
+0

似乎沒有修復它。仍然沒有迴應數據。 – Reverb

+0

請參閱更新版本。 –

+0

@Reverb,表單名稱是不可變的,檢查他們的名稱,或他們的通行證,或更好的,給一個名稱提交按鈕,並檢查是否設置.... – sinisake

1

帖子就像是「送」的數據的頁面沒有給其任何與它的交互用戶,當獲取顯示在URL中的參數,使之公衆用戶。獲取更經常用於「不安全」類型的數據交易,例如,當您想使登錄表單更安全時,使用searchform和POST。

使用GET會給你喜歡 的index.php?參數=你好&參數2 =世界

在你的榜樣,你應該在formtag方法屬性使用POST或$ _GET在PHP部分

因此,無論

<form name="mail_sub" method="post"> 
Name: <input type="text" name="theirname"> <br /> 
Email:&nbsp; <input type="text" name="theirpass"> <br /> 
<input type="submit" value="Join!" style="width:200px"> 
</form> 
<?php 
if (isset($_POST['theirname'])) 
{ 

echo $_POST['theirname']; 

} 
?> 

<form name="mail_sub" method="get"> 
Name: <input type="text" name="theirname"> <br /> 
Email:&nbsp; <input type="text" name="theirpass"> <br /> 
<input type="submit" value="Join!" style="width:200px"> 
</form> 
<?php 
if (isset($_GET['theirname'])) 
{ 

echo $_GET['theirname']; 

} 
?> 
+0

從安全點 - 沒有區別,實際上(後很容易訪問如獲得)。 GET請求限於〜250個字符,如果我還記得的話...... – sinisake

+1

POST比GET更安全。您可能無法在URL中「查看」POST參數,但可以輕鬆打開瀏覽器檢查器並查看通過POST請求發送的標題,以便查看參數。這也意味着任何惡意用戶都可以使用他們的瀏覽器工具或curl來操縱參數並製作他們自己的POST請求。 –

+0

是的,你是對的!我寫道,因爲這是IMO的典型用法,無需編寫長篇指南:) – Thomas

0

替換代碼:

<form name="mail_sub" method="post"> 
Name: <input type="text" name="theirname"> <br /> 
Email:&nbsp; <input type="text" name="theirpass"> <br /> 
<input type="submit" name="submit" value="Join!" style="width:200px"> 
</form> 
<?php 
if (isset($_POST['submit'])) 
    { 

    echo $_POST['theirname']; 

    } 
?> 
+0

似乎沒有工作:/ – Reverb

+0

哪個錯誤發生? @Reverb – Guru

+0

我更新我的代碼,併成功運行我檢查@Reverb – Guru

0

你使用的方法在形式上,GET,所以你的代碼應該是這樣的

<?php echo $_SERVER['PHP_SELF'];?>//the form and action will be same page 

    <form name="mail_sub" method="get" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
    Name: <input type="text" name="theirname"> <br /> 
    Email:&nbsp; <input type="text" name="theirpass"> <br /> 
    <input type="submit" value="Join!" style="width:200px"> 
    </form> 
    <?php 
    echo $_GET['theirname']; 
    ?> 
+0

一些原因,回聲沒有顯示.. – Reverb

+0

試試這個我得到了結果 – user3064914

2

要回答這個問題:

GET和POST是一個互聯網標準中的衆多request types

區別在於GET不能發佈數據,參數會被附加到url(url-parameters),這是有限制的。 POST發佈參數/數據。

的標準是:

  • GET獲取數據。
  • 用於創建數據的POST。
  • PUT用於更新數據。
  • DELETE刪除數據。
0

GET - 如果表格的方法是再GET上提交表單,表單將被提交給

xyz.com/submit.php?theirname=john&theirpass=password // CHECK HERE - form elements are in URL so not so secure 

,可以通過PHP 作爲

if(isset($_GET['their'])) 
{ 
$name=$_GET['their']; //name will return John 
} 

POST檢查 - 如果形式方法是郵政然後提交表格,表格將提交到

xyz.com/submit.php // CHECK HERE form elements are not in URL 

並且可以通過PHP 檢查作爲

if(isset($_POST['their'])) 
{ 
$name=$_POST['their']; //name will return John 
} 
1

更換

isset($_POST['mail_sub']) 

通過

isset($_POST['theirname']) 

GET和POST請求之間的主要區別是,在GET請求的所有參數都是兼職的網址和用戶看到的參數。在POST請求中,URL不會被修改,並且所有的表單參數對用戶都是隱藏的。如果您沒有文件上傳或非常長的字段參數,請使用GET。進入生產時使用POST。

相關問題