【问题标题】:Success Message not visible on my web host [duplicate]我的虚拟主机上看不到成功消息[重复]
【发布时间】:2018-09-12 12:21:42
【问题描述】:

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

我可以通过本地主机看到此划分,但在我的网络主机中看不到。

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

联系我们.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"

【问题讨论】:

    标签: php session contacts


    【解决方案1】:

    你还没有调用 session_start()。如果不调用 session_start(),$_SESSION 超级全局变量将不会被会话数据填充。见:http://php.net/manual/en/function.session-start.php

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

    <?php
    session_start();
    ?>
    

    【讨论】:

    • 感谢您的回答@Nadir,但我已经做到了,我忘记将其复制到上面的代码中。我不明白为什么它在本地主机上工作而不是在我的网络主机上工作。当我单击提交按钮时,它会发送邮件,但我注意到页面没有重新加载以显示成功划分
    • 您可能会遇到问题,因为您本地主机上的 php 设置与您的 Web 主机上的设置不同。您可以通过启用错误报告来获取有关错误的更多信息。您可以通过添加行来做到这一点 error_reporting(E_ALL); ini_set("display_errors", '1');到 session_start() 之前的 contact-us.php 文件的顶部;
    • 谢谢你!我做到了,这就是显示为错误的内容:1 警告:session_start():无法发送会话缓存限制器 - 标头已发送 2 警告:无法修改标头信息 - 标头已发送,所以我进行了研究,我找到了解决方案2个错误:stackoverflow.com/questions/8812754/…stackoverflow.com/questions/8028957/…
    猜你喜欢
    • 2020-10-19
    • 2019-11-14
    • 2012-02-06
    • 2012-08-18
    • 2017-11-29
    • 2019-04-16
    • 1970-01-01
    • 2014-07-19
    相关资源
    最近更新 更多