我在不同的网站上多次提出这个问题,但没有结果。所以我们再来一次。我在这篇文章中留下的代码是来自我创建的PHP联系人的代码。正如你可以通过“Contact.php”在代码底部看到的代码以if($mail->send()){
开头,代码内部代码如下:header('Location: bedankt.php');
。这是做什么,当用户按下发送按钮,他被重定向到“Bedankt.php”,在“bedankt.php”他会看到一条消息,说“该表格已成功发送”。我试图完成的是以下内容:用户不会被重定向到“Bedankt.php”,而是他会在窗体本身上方看到相同的消息,所以他停留在同一页面上,但是当他/她按下发送按钮,在表单上方弹出一行文字说“表单已成功发送”。当然,表格必须像现在一样工作。 你们可以给我一些代码吗?我希望我终于可以得到一个有效的安泽。只是为了过关,这里是说明它的照片:PHP contactform在同一页上的成功消息
预先感谢您。
的index.php
<?php
session_start();
require_once 'helpers/security.php';
$errors = isset($_SESSION['errors']) ? $_SESSION['errors'] : [];
$fields = isset($_SESSION['fields']) ? $_SESSION['fields'] : [];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Servicepunt Detailhandel Groningen | Contact</title>
<link rel="shortcut icon" href="../../images/favicon/favicon.png" type="image/png">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" href="css/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"> </script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="js/script.js"></script>
</head>
<body>
<body>
<div class="container-fluid">
<!-- NAVIGATIE BALK -->
<nav class="navbar navbar-default" role="navigation">
<!-- logo -->
<div class="navbar-header">
<!-- -->
<a class="navbar-brand" href="../../index.php">
<!-- <img src="images/logo.png" alt="" style="width: 50px; height: 60px;"> -->
</a>
<!-- Inklappbaar ding als je op mobiel zit-->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#mainnavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- menu eitems linker kant-->
<div class="collapse navbar-collapse" id="mainnavbar">
<ul class="nav navbar-nav navbar-right">
<li><a href="../../index.php">Home</a></li>
<li><a href="../Over/index.php">Over</a></li>
<li><a href="../Nieuws/index.php">Nieuws</a></li>
<li class="active"><a href="index.php">Contact</a></li>
<!-- Dropdown -->
<!--
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Profiel <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Profiel</a></li>
<li><a href="#">Instellingen</a></li>
</ul>
</li>
-->
<!-- <li><button type="button" class="btn btn-primary btn-lg raised">Niet beschikbaar</button></li> -->
</ul>
</div>
<!-- Aan de rechterkant -->
<!-- EINDE NAVIAGTIE BALK-->
</nav>
<div class="header">
<h1>contact</h1>
</div>
<div id="footer">
<div class="col-md-3 col-md-offset-9 col-xs-5" id="contact">
<?php if(!empty($errors)): ?>
<div class="panel">
<ul>
<li>
<?php echo implode('</li><li>', $errors); ?>
</li>
</ul>
</div>
<?php endif; ?>
<form action="libs/contact.php" method="post">
<label>
Uw naam*
<input type="text" name="name" id="naam" autocomplete="off" <?php echo isset($fields['naam']) ? 'Value="' . e($fields['naam']) . '"' : '' ?>>
</label>
<br>
<label>
Uw emailadres *
<input type="email" name="email" id="email" autocomplete="off" <?php echo isset($fields['email']) ? 'Value="' . e($fields['email']) . '"' : '' ?>>
</label>
<br>
<label>
Onderwerp *
<input type="text" name="subject" id="subject" autocomplete="off" <?php echo isset($fields['subject']) ? 'Value="' . e($fields['subject']) . '"' : '' ?>>
</label>
<br>
<label>
Uw bericht *<br>
<textarea name="bericht" id="contact" rows="8"><?php echo isset($fields['bericht']) ? e($fields['bericht']) : '' ?></textarea>
</label>
<br>
<input id="button" type="submit" value="Verzenden">
</form>
</div>
<!-- <iframe class="col-xs-6" id="google"
width="auto" height="300" frameborder="0" style="border:0" src="https://www.google.com/maps/embed/v1/place?key=AIzaSyA5QHkZAm-DkqHj4egxMm394bB6VVu5sr8 &q=Leonard+Springerlaan+1,+9727+KB+Groningen" allowfullscreen>
</iframe> -->
</div>
</div>
</body>
</html>
<?php
unset($_SESSION['errors']);
unset($_SESSION['fields']);
?>
CONTACT.PHP
<?php
session_start();
require_once "phpmailer/PHPMailerAutoload.php";
$errors = [];
if(isset($_POST['name'], $_POST['email'], $_POST['subject'], $_POST['bericht'])) {
$fields = ['name' => $_POST['name'], 'email' => $_POST['email'], 'subject' => $_POST['subject'], 'bericht' => $_POST['bericht']];
foreach($fields as $field => $data) {
if(empty($data)){
$errors[] = $field . ' is verplicht!';
}
}
if(empty($errors)){
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.example.com';
$mail->Username = '[email protected]';
$mail->Password = 'example';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->isHTML();
$mail->SMTPDebug = false;
$mail->Subject = $fields['subject'];
$mail->Body = '"' . $fields['name'] .'"'.' heeft uw contactformulier ingevuld op uw website met het volgende bericht: ' . '<br><br>' .'Onderwerp: ' . $fields['subject'] . '<br>' . '<br>'.$fields['bericht'];
$mail->FromName = $fields['name'];
$mail->AddAddress('[email protected]', 'Example Person'); //added mail id of owner
if($mail->send()){
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.example.com';
$mail->Username = '[email protected]';
$mail->Password = 'example';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->isHTML();
$mail->SMTPDebug = 2;
$mail->Subject = 'Bevesteging contactformulier';
$mail->Body = 'Beste ' . $fields['name'] . ',' . '<br><br>' . 'Dankuwel voor het invullen van ons contactformulier op onze site. U krijgt zo snel mogelijk
bericht terug van ons<br> Uw bericht was als volgt: <p>'. 'Onderwerp: ' . $fields['subject'] . '<br>' . $fields['bericht'] .'</p>';
$mail->FromName = 'Example';
$mail->AddAddress($fields['email'] , $fields['name']); //added mail id of user
if($mail->send()){
header('Location: bedankt.php');
die();
}
else{
exit;
}
} else {
echo $mail->ErrorInfo; exit;
}
}
} else {
$errors[] = 'Something went wrong.';
}
$_SESSION['errors'] = $errors;
$_SESSION['fields'] = $fields;
header('location: index.php');
你可以改变'contact.php'中的重定向指向'index.php',但追加一个查询字符串值来表示消息已经发送。在'index.php'上检查页面加载时是否存在'$ _GET'变量以及是否存在特定变量('mailsent = true'等),然后显示一条消息 – RamRaider
我真的不明白,你能给我提供一些代码吗?即时通讯在PHP中并不是那么棒。 –
窗体动作设置为PHP_SELF,然后添加该代码从contact.php开始在你的页面 –