【问题标题】:What is the difference between POST and GET in HTML/PHP [duplicate]HTML / PHP中的POST和GET有什么区别[重复]
【发布时间】:2014-02-14 07:10:37
【问题描述】:

我正在编写一个 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'];

    }
?>

【问题讨论】:

  • 表单应该使用 POST。时期。 (除非你知道自己在做什么
  • @SergioTulentsev 除非是搜索表单。
  • 不重复。我的脚本甚至不起作用,我不明白为什么!
  • @Cthulhu:是的,我的评论适用于这种情况。 :)

标签: php html get


【解决方案1】:

$_POST 不适合你,因为你设置了获取表单方法。

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

关于 post 和 get 之间的区别,网上有很多更好的信息,所以我不会深入讨论,但这将为您解决问题。

也改变你的 PHP。

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

    echo $_POST['theirname'];

}

【讨论】:

  • 似乎没有修复它。仍然没有回显数据。
  • 请查看更新版本。
  • @Reverb,表单名称不可变,检查他们的名字,或者他们的通行证,或者更好,给提交按钮命名,并检查是否 isset....
【解决方案2】:

回答问题:

GET 和 POST 是 Internet 标准中的众多 request types 之一。

不同的是,GET 不能发布数据,参数会附加到 url (url-parameters) 有它的限制。 POST 确实发布参数/数据。

标准是:

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

【讨论】:

    【解决方案3】:

    替换

    isset($_POST['mail_sub'])
    

    isset($_POST['theirname'])
    

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

    【讨论】:

      【解决方案4】:

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

      使用 Get 会给你喜欢 index.php?parameter=hello&parameter2=world

      在您的示例中,您应该在 formtag 的方法属性中使用 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'];
      
      }
      ?>
      

      【讨论】:

      • 从安全角度来看 - 实际上没有区别(帖子很容易获得)。 GET 请求限制在 ~250 个字符,如果我没记错的话......
      • POST 并不比 GET 更安全。您可能无法“看到” URL 中的 POST 参数,但您可以轻松打开浏览器检查器并查看与 POST 请求一起发送的标头,从而查看参数。这也意味着任何恶意用户都可以使用他们的浏览器工具或curl 来操纵参数并制作他们自己的 POST 请求。
      • 是的,你是对的!我写了这个,因为这就是 IMO 对它们两个的典型用法,而无需编写长指南:)
      • 另一个区别:您可以 POST 二进制数据,但不能通过 GET 发送。
      【解决方案5】:

      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
      } 
      

      【讨论】:

        【解决方案6】:

        您在表单中使用方法作为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'];
          ?>
        

        【讨论】:

        • 某些原因,没有显示回声..
        • 试试这个我得到了结果
        【解决方案7】:

        替换您的代码:

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

        【讨论】:

        • 似乎不起作用:/
        • 发生了哪个错误? @混响
        • 我更新我的代码并成功运行我检查它@Reverb
        猜你喜欢
        • 2011-03-29
        • 2015-08-03
        • 2011-05-07
        • 2011-03-05
        • 1970-01-01
        • 2011-09-13
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        相关资源
        最近更新 更多