我有一个包含产品列表的网站,每个产品都有一个选项,您可以通过简单的表单将一些信息发送到电子邮件地址。
表单将在新窗口中打开。它由一个输入字段(用于电子邮件地址)和一个提交按钮组成。 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”的价值。我做错了什么?
答案 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']
。