【问题标题】:Can't get value from GET method无法从 GET 方法中获取值
【发布时间】:2011-11-04 07:45:43
【问题描述】:

我有一个包含产品列表的网站,每个产品都可以选择通过简单的表格将一些信息发送到电子邮件地址。

表单在新窗口中打开。它由一个输入字段(用于电子邮件地址)和一个提交按钮组成。 URL 示例:.../send_email.php?productid=12345

这是表格:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <input type="text" name="youremail" value="youremail"><br /><br />
  <input type="submit" name="sendsubmit" value="Send">
</form>

这是我用来发送表格的:

<?php
  if(isset($_POST['sendsubmit'])){

    $productid = $_GET['productid'];

    $youremail = $_POST['youremail'];
    $subject = "Product name";

    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    if(!preg_match($email_exp,$youremail)) {
      echo 'Your email address does not appear to be valid.<br />';
    }

    mail($youremail, $subject, $productid);
  }
?>    

问题是我无法获得“productid”的值。我做错了什么?

【问题讨论】:

  • 尝试在 if(isset()) 条件之前获取产品 id..

标签: php forms variables get


【解决方案1】:

$_SERVER['PHP_SELF'] 不包括查询字符串。你想要$_SERVER['REQUEST_URI']

【讨论】:

    【解决方案2】:

    好吧,您不必问这个问题,而是必须检查表单的 HTML 代码,看看它有什么问题。
    只有这样你才能问一个问题,“什么服务器变量包含完整的当前 url”。

    检查代码的结果非常重要。如果不经常使用这种做法,您就无法成为 PHP 用户。

    至于您的特殊问题 - 将操作留空

    <form method="post" action=""> 
    

    【讨论】:

    • 我不是一个真正的 PHP 用户,这是我第一次听说 $_SERVER['QUERY_STRING']。在在这里发布问题之前,我尝试了很多东西,但没有任何效果。我会对此进行更多研究。谢谢你的回答!
    • 好吧,你不需要,因为空操作将是一个完全不使用任何 PHP 变量的解决方案
    • 那么,如果 PHP 代码在同一个文件中,无论如何我都可以将 action 留空?
    【解决方案3】:

    如果您在 send.php 文件中执行的整个过程,请在 if(isset($_POST['sendsubmit'])) 之前使用 $_GET['productid']

    $productid = (isset($_GET['productid'])) ? $_GET['productid'] : 'error';
    

    【讨论】:

      【解决方案4】:

      验证用 submit ($_SERVER['PHP_SELF']) 调用的 url 是否包含 ?productid=12345

      【讨论】:

        【解决方案5】:

        $_SERVER['PHP_SELF'] 不包含查询字符串。

        改用$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']

        【讨论】:

        • 我不会将此解决方案称为防弹解决方案。说,对于重写的网址,它无济于事。使用 REQUEST URI 或将操作留空,以使其可靠且可移植。
        • 我认为最好将其留空。
        猜你喜欢
        • 2021-05-24
        • 1970-01-01
        • 1970-01-01
        • 2022-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-02
        相关资源
        最近更新 更多