我的网络托管商

时间:2018-04-03 08:33:58

标签: php session contacts

我创建了一个包含联系页面的网站。我的问题是,当我点击发送时,它会发送消息,但它不会显示包含成功文本的成功部门:"您的消息已成功发送"。

我可以看到这个部门与本地主机有关,但不能在我的网络主机中看到。

这是我的代码: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"

1 个答案:

答案 0 :(得分:1)

您尚未调用session_start()。如果不调用session_start(),则不会使用会话数据填充$ _SESSION超级全局变量。请参阅:http://php.net/manual/en/function.session-start.php

您需要在contact.php中调用 session_start()。例如,将以下内容添加到contact.php的顶部:

<?php
session_start();
?>
相关问题