无法从GET方法中获取价值

时间:2011-11-04 07:45:44

标签: php forms variables get

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

表单将在新窗口中打开。它由一个输入字段(用于电子邮件地址)和一个提交按钮组成。 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”的价值。我做错了什么?

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

至于您的特定问题 - 只需将操作留空

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:-1)

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

请尝试$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']