你好,我有一个页面index.php,里面有一个联系人表单,问题是当我加载页面时,就像我按下了提交按钮,我不知道为什么。。我希望成功或错误的警报只在按下提交按钮后出现,而不是在页面加载时出现。。这是代码:
<?php
if($_POST["submit"]){//form was submitted
if($_POST['email'] != "" AND !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
$error .= '<br /><strong>Incorrect Email Address</strong>';
}
}else{
$result = '<div class="alert alert-danger"><strong>Form Not Submitted</strong></div>';
}
if($error)
$result .= '<div class="alert alert-danger"><strong>There was some error(s) in the form: </strong>'.$error.'</div>';
else {
if(mail("carlosd.dev@gmail.com",$_POST['subject'],"
Name: ".$_POST['name']."
Email: ".$_POST['email']."
Message: ".$_POST['message'])){
$result = '<div class="alert alert-success">Form Submitted We Will Be In Touch Soon!</div>';
}else{
$result = '<div class="alert alert-danger">Sorry the form was not submitted, please try again</div>';
}
}?>
就在这个上面,我有我的HTML代码:
<!DOCTYPE html>
<html>
<head>
<title>PHP | Practicas</title>
<meta charset="utf-8" />
<meta http-http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" type="text/css" href="styles.css">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3" id="emailForm">
<h2>Contact Form<br /></h2>
<form action="index.php" method="post">
<div class="form-group">
<label for="name">Your name: </label>
<div class="input-group">
<input type="text" name="name" class="form-control" placeholder="Your Name" required="true" value="<?php echo $_POST['name']; ?>"/>
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
</div>
</div>
<div class="form-group">
<label for="email">Your email: </label>
<div class="input-group">
<input type="email" name="email" class="form-control" placeholder="Your Email" required="true"/>
<span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span>
</div>
</div>
<div class="form-group">
<label for="subject">Subject: </label>
<div class="input-group">
<input type="text" name="subject" class="form-control" placeholder="Subject of message" required="true" value="<?php echo $_POST['subject']; ?>"/>
<span class="input-group-addon"><span class="glyphicon glyphicon-tag"></span></span>
</div>
</div>
<div class="form-group">
<textarea name="message" class="form-control" placeholder="Enter the message" required="true"><?php echo $_POST['message']; ?></textarea>
</div>
<input type="submit" name="submit" class="btn btn-success btn-lg" value="Send!" />
</form>
</div>
</div>
</div>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
</body>
</html>
</head>
我该怎么办才能解决这个问题??
同时检查此
添加到HTML表单
<input type="hidden" name="submit" value="true">
PHP检查表单是否提交
<?php
if($_POST['submit']=='true') {
//true
} esle {
//false
}
?>
这将适用于
您的页面是一个自调用元素。发生的情况是,在第一次加载时,它试图在$_POST
数组中找到email
和其他输入。这自然不存在,因此发出警报
使用<form action='<?php echo $_SERVER['PHP_SELF']?>'' method="post">
而不是<form action="index.php" method="post">
。这很可能会解决问题
离题建议:使用filter_input(INPUT_POST,'submit')
而不是$_POST['index']
。它更安全,建议使用。
您的代码在我的机器(WAMP服务器)中运行时似乎有很多错误。初始化$error
和$result
变量。这似乎有帮助
将PHP代码放在顶部,将HTML表单放在底部更改此
if($_POST["submit"]){//form was submitted
用这个
if(isset($_POST["submit"])){//form was submitted
也更改此
if($_POST['email'] != "" AND !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
使用此
if(!empty($_POST['email']) AND !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
还更改"错误"检查
if($error)
带有
if(strlen($error)>0) {
你的其他应该是
{ else
所有代码
<?php
if(isset($_POST["submit"])){//form was submitted
if(!empty($_POST['email']) AND !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
$error .= '<br /><strong>Incorrect Email Address</strong>';
}
} else {
$result = '<div class="alert alert-danger"><strong>Form Not Submitted</strong></div>';
}
if(strlen($error)>0) {
$result .= '<div class="alert alert-danger"><strong>There was some error(s) in the form: </strong>'.$error.'</div>';
} else {
if(mail("carlosd.dev@gmail.com",$_POST['subject'],"
Name: ".$_POST['name']."
Email: ".$_POST['email']."
Message: ".$_POST['message'])){
$result = '<div class="alert alert-success">Form Submitted We Will Be In Touch Soon!</div>';
} else {
$result = '<div class="alert alert-danger">Sorry the form was not submitted, please try again</div>';
}
}
?>
使用此isset()
if(isset($_POST['submit'])){
//here your code
}