在HTML / PHP中POST和GET有什么区别

时间:2014-02-14 07:10:38

标签: php html get

我正在编写一个PHP脚本,但我似乎无法让它工作。我正在测试基础知识,但我真的不明白GET和POST意味着什么,有什么区别?我在网上看到的所有定义对我来说都没有多大意义,到目前为止我编写的内容(但由于我不理解POST和GET,我不知道如何让它工作:

    <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'];

    }
?>

7 个答案:

答案 0 :(得分:2)

回答这个问题:

GET和POST是互联网标准中的众多request types之一。

不同之处在于GET无法发布数据,参数将被附加到具有限制的url(url-parameters)。 POST会发布参数/数据。

标准是:

  • 获取数据。
  • 用于创建数据的POST。
  • 用于更新数据的PUT。
  • 删除数据删除。

答案 1 :(得分:1)

$ _ POST不适合您,因为您已将表单方法设置为get。

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

关于post和get之间的差异,网上有很多更好的信息,所以我不会讨论这个问题,但这会解决你的问题。

也改变你的PHP。

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

    echo $_POST['theirname'];

}

答案 2 :(得分:1)

发布就像将数据“发送”到页面而不会让用户与其进行任何交互,当Get显示URL中的参数并将其公开给用户时。 Get更常用于“不安全”类型的数据交易,例如,当您想要制作更安全的内容(如登录表单)时,会使用searchform和POST。

使用Get会给你喜欢 ?的index.php参数=你好&安培;参数2 =世界

在你的例子中,你应该在formtag的method属性中使用POST,或者在php部分使用$ _GET

所以要么

<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'];

}
?>

答案 3 :(得分:1)

替换

isset($_POST['mail_sub'])

通过

isset($_POST['theirname'])

GET和POST请求之间的主要区别在于,在GET请求中,所有参数都是URL的一部分,用户可以看到参数。在POST请求中,不会修改url,并且对用户隐藏所有表单参数。如果您没有文件上传或非常长的字段参数,请使用GET。投入生产时使用POST。

答案 4 :(得分: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'];

    }
?>

答案 5 :(得分: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'];
  ?>

答案 6 :(得分: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 - 如果表单方法是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
}