我的虚拟主机上看不到成功消息
Success Message not visible on my web host
我创建了一个包含联系页面的网站。我的问题是当我点击发送时,它发送了消息但它没有显示包含成功文本的我的成功部分:"your message has been sent successfully".
我可以在本地主机上看到这个分区,但在我的虚拟主机中看不到。
这是我的代码:contact.php
<?php
session_start();
?>
<section id="contact">
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
<h2 class="section-heading">Nous Contacter</h2>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<?php if(array_key_exists('errors',$_SESSION)): ?>
<div class="alert alert-danger">
<?= implode('<br>', $_SESSION['errors']); ?>
</div>
<?php endif; ?>
<?php if(array_key_exists('success',$_SESSION)): ?>
<div class="alert alert-success">
Votre email à bien été transmis !
</div>
<?php endif; ?>
<form action="php/contact-us.php" method="post" id="contactForm" role="form">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control" placeholder="Votre Nom *" id="name" name="name" value="<?php echo isset($_SESSION['inputs']['name'])? $_SESSION['inputs']['name'] : ''; ?>">
<p class="comments text-danger"></p>
</div>
<div class="form-group">
<input type="email" class="form-control" placeholder="Votre Email *" id="email" name="email" value="<?php echo isset($_SESSION['inputs']['email'])? $_SESSION['inputs']['email'] : ''; ?>">
<p class="comments text-danger"></p>
</div>
<div class="form-group">
<input type="tel" class="form-control" placeholder="Téléphone *" id="phone" name="phone" pattern="[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{2}" value="<?php echo isset($_SESSION['inputs']['phone'])? $_SESSION['inputs']['phone'] : ''; ?>">
<p class="comments text-danger"></p>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<textarea class="form-control" placeholder="Message *" id="message" name="message" <?php echo isset($_SESSION['inputs']['message'])? $_SESSION['inputs']['message'] : ''; ?>></textarea>
<p class="comments text-danger"></p>
</div>
</div>
<div class="clearfix"></div>
<div class="col-lg-12 text-center">
<div id="success"></div>
<input type="submit" class="btn btn-default abt-btn" value="Envoyer"/>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
接触-us.php
<?php
session_start();//on démarre la session
// $errors = [];
$errors = array(); // on crée une vérif de champs
if(!array_key_exists('name', $_POST) || $_POST['name'] == '') {// on verifie l'existence du champ et d'un contenu
$errors ['name'] = "vous n'avez pas renseigné votre nom";
}
if(!array_key_exists('phone', $_POST) || $_POST['phone'] == '') {// on verifie l'existence du champ et d'un contenu
$errors ['name'] = "vous n'avez pas renseigné votre N° de Téléphone";
}
if(!array_key_exists('email', $_POST) || $_POST['email'] == '' || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {// on verifie existence de la clé
$errors ['mail'] = "vous n'avez pas renseigné votre email";
}
if(!array_key_exists('message', $_POST) || $_POST['message'] == '') {
$errors ['message'] = "vous n'avez pas renseigné votre message";
}
/*if(array_key_exists('antispam', $_POST)) {// on place un petit filet anti robots spammers
$errors ['antispam'] = "Vous êtes un robots spammer";
}*/
//On check les infos transmises lors de la validation
if(!empty($errors)){ // si erreur on renvoie vers la page précédente
$_SESSION['errors'] = $errors;//on stocke les erreurs
$_SESSION['inputs'] = $_POST;
header('Location: contact.php');
}else{
$_SESSION['success'] = 1;
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'FROM:' . htmlspecialchars($_POST['email']);
$to = 'contact@gmail.com'; // Insérer votre adresse email ICI
$subject = 'Message envoyé par ' . htmlspecialchars($_POST['name']) .' - Téléphone: ' . htmlspecialchars($_POST['phone']) .' - <i>' . htmlspecialchars($_POST['email']) .'</i>';
$message_content = '
<table>
<tr>
<td><b>Emetteur du message:</b></td>
</tr>
<tr>
<td>'. $subject . '</td>
</tr>
<tr>
<td><b>Contenu du message:</b></td>
</tr>
<tr>
<td>'. htmlspecialchars($_POST['message']) .'</td>
</tr>
</table>
';
mail($to, $subject, $message_content, $headers);
header('Location: contact.php');
}
?>
编辑
我在这个主题中找到了解决方案:
"Cannot send session cache limiter - headers already sent"
您还没有调用 session_start()。如果不调用 session_start(),$_SESSION 超级全局变量将不会填充会话数据。参见:http://php.net/manual/en/function.session-start.php
您需要在 contact.php 中调用 session_start()。例如,将以下内容添加到 contact.php 的顶部:
<?php
session_start();
?>
我创建了一个包含联系页面的网站。我的问题是当我点击发送时,它发送了消息但它没有显示包含成功文本的我的成功部分:"your message has been sent successfully".
我可以在本地主机上看到这个分区,但在我的虚拟主机中看不到。
这是我的代码:contact.php
<?php
session_start();
?>
<section id="contact">
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
<h2 class="section-heading">Nous Contacter</h2>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<?php if(array_key_exists('errors',$_SESSION)): ?>
<div class="alert alert-danger">
<?= implode('<br>', $_SESSION['errors']); ?>
</div>
<?php endif; ?>
<?php if(array_key_exists('success',$_SESSION)): ?>
<div class="alert alert-success">
Votre email à bien été transmis !
</div>
<?php endif; ?>
<form action="php/contact-us.php" method="post" id="contactForm" role="form">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control" placeholder="Votre Nom *" id="name" name="name" value="<?php echo isset($_SESSION['inputs']['name'])? $_SESSION['inputs']['name'] : ''; ?>">
<p class="comments text-danger"></p>
</div>
<div class="form-group">
<input type="email" class="form-control" placeholder="Votre Email *" id="email" name="email" value="<?php echo isset($_SESSION['inputs']['email'])? $_SESSION['inputs']['email'] : ''; ?>">
<p class="comments text-danger"></p>
</div>
<div class="form-group">
<input type="tel" class="form-control" placeholder="Téléphone *" id="phone" name="phone" pattern="[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{2}" value="<?php echo isset($_SESSION['inputs']['phone'])? $_SESSION['inputs']['phone'] : ''; ?>">
<p class="comments text-danger"></p>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<textarea class="form-control" placeholder="Message *" id="message" name="message" <?php echo isset($_SESSION['inputs']['message'])? $_SESSION['inputs']['message'] : ''; ?>></textarea>
<p class="comments text-danger"></p>
</div>
</div>
<div class="clearfix"></div>
<div class="col-lg-12 text-center">
<div id="success"></div>
<input type="submit" class="btn btn-default abt-btn" value="Envoyer"/>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
接触-us.php
<?php
session_start();//on démarre la session
// $errors = [];
$errors = array(); // on crée une vérif de champs
if(!array_key_exists('name', $_POST) || $_POST['name'] == '') {// on verifie l'existence du champ et d'un contenu
$errors ['name'] = "vous n'avez pas renseigné votre nom";
}
if(!array_key_exists('phone', $_POST) || $_POST['phone'] == '') {// on verifie l'existence du champ et d'un contenu
$errors ['name'] = "vous n'avez pas renseigné votre N° de Téléphone";
}
if(!array_key_exists('email', $_POST) || $_POST['email'] == '' || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {// on verifie existence de la clé
$errors ['mail'] = "vous n'avez pas renseigné votre email";
}
if(!array_key_exists('message', $_POST) || $_POST['message'] == '') {
$errors ['message'] = "vous n'avez pas renseigné votre message";
}
/*if(array_key_exists('antispam', $_POST)) {// on place un petit filet anti robots spammers
$errors ['antispam'] = "Vous êtes un robots spammer";
}*/
//On check les infos transmises lors de la validation
if(!empty($errors)){ // si erreur on renvoie vers la page précédente
$_SESSION['errors'] = $errors;//on stocke les erreurs
$_SESSION['inputs'] = $_POST;
header('Location: contact.php');
}else{
$_SESSION['success'] = 1;
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'FROM:' . htmlspecialchars($_POST['email']);
$to = 'contact@gmail.com'; // Insérer votre adresse email ICI
$subject = 'Message envoyé par ' . htmlspecialchars($_POST['name']) .' - Téléphone: ' . htmlspecialchars($_POST['phone']) .' - <i>' . htmlspecialchars($_POST['email']) .'</i>';
$message_content = '
<table>
<tr>
<td><b>Emetteur du message:</b></td>
</tr>
<tr>
<td>'. $subject . '</td>
</tr>
<tr>
<td><b>Contenu du message:</b></td>
</tr>
<tr>
<td>'. htmlspecialchars($_POST['message']) .'</td>
</tr>
</table>
';
mail($to, $subject, $message_content, $headers);
header('Location: contact.php');
}
?>
编辑 我在这个主题中找到了解决方案: "Cannot send session cache limiter - headers already sent"
您还没有调用 session_start()。如果不调用 session_start(),$_SESSION 超级全局变量将不会填充会话数据。参见:http://php.net/manual/en/function.session-start.php
您需要在 contact.php 中调用 session_start()。例如,将以下内容添加到 contact.php 的顶部:
<?php
session_start();
?>