这是我的第一个表格
<style>
.wrap-form{
width: 700px;
min-height: 20px;
background-color: lightblue;
margin: 0 auto;
}
</style>
<div class="wrap-form">
<form method="post" action="advanced-form-send"></form>
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email">
<a href="advanced-form-send.php"><input type="submit" name="submit" value="Submit"></a>
</div>
这是我的表格2,数据将发送到
<?php
$name = $_POST["name"];
$email = $_POST["email"];
echo $name;
echo $email;
?>
我该如何解决这个问题?
答案 0 :(得分:1)
这就是你的表单代码应该是这样的,<a href="..."
围绕你的提交按钮导致表单不被提交,在你刚刚告诉浏览器的地方,当点击这个按钮时,取用户到页面advanced-form-search.php。您应该做的是将脚本名称放在应该在form
标记的操作中提交表单的位置,然后添加一个提交按钮。别忘了关闭你的标签......你错过了</form>
<div><?php if(isset($_GET['err'])){ if($_GET['err']==1){ echo 'You didn\'t fill in your name'; } elseif($_GET['err']==2){ echo 'You didn\'t fill in a correct email address';}}?></div>
<div class="wrap-form">
<form method="post" action="advanced-form-send.php">
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email">
<input type="submit" name="submit" value="Submit">
</form>
</div>
以下是发送电子邮件的PHP代码:
<?php
if(isset($_POST['name']) && !empty(trim($_POST['name']))){
$name = $_POST["name"];
} else {
header("Location: page_where_the_form_is.php?err=1");
die()
}
if(isset($_POST['email']) && filter_var(trim($_POST['email']), FILTER_VALIDATE_EMAIL)){
$email = $_POST["email"];
}
else {
header("Location: page_where_the_form_is.php?err=2");
die()
}
$subject='Form Submitted On The Website';
$message="Name: {$name}\nEmail: {$email}";
mail($to_email, $subject, $message);
?>
答案 1 :(得分:0)
您已使用<input type="submit" name="submit"...
包裹了<a href=...
按钮。这样做可以防止您的表单作为POST请求提交,而是作为GET请求链接到。
git摆脱<a href...
,并将action=advanced-form-send
更改为action="advanced-form-send.php"
。
答案 2 :(得分:0)
您可以改善您的PHP代码:
<?php
if (isset($_POST["name"])) {
$name = $_POST["name"];
echo $name;
} else {
echo 'Eror: Attribute "name" is missing!';
}
if (isset($_POST["email"])) {
$email = $_POST["email"];
echo $email;
} else {
echo 'Eror: Attribute "email" is missing!';
}
?>
您的表单应该更改:
<form method="post" action="advanced-form-send.php">
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email">
<input type="submit" name="submit" value="Submit">
</form>
答案 3 :(得分:0)
您需要包装变量。其他答案是关于表格。这个答案是关于你对变量的处理。如果您使用尚未设置的变量,PHP将发出通知。通过使用isset(),您可以确定是否设置了变量,然后使用它。
<?php
$name = isset($_POST["name"]) ? $_POST["name"] : '';
$email = isset($_POST["email"]) ? $_POST["email"] : '';
echo $name;
echo $email;
?>
这样做可确保您的某个字段尚未发布时不会收到通知。如果他们有,你将拥有$ name和$ email的价值。如果不是那么变量将是空字符串。
答案 4 :(得分:0)
尝试这样,
<div class="wrap-form">
<form method="post" action="advanced-form-send">
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email">
<input type="submit" name="submit" value="Submit">
</form>
</div>
答案 5 :(得分:0)
提交按钮应该是两个“表单”标记。此链接也是不必要的,因为输入“submit”会将带有数据的表单发送到您在表单标记的属性“action”中设置的页面。
<div class="wrap-form">
<form method="post" action="advanced-form-send.php">
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email">
<input type="submit" name="submit" value="Submit">
</form>
</div>
答案 6 :(得分:-2)
你错过了一个enctype ...你们都忘记了。羞耻你!
<form method="post" action="advanced-form-send.php" enctype="multipart/form-data"></form>