首页 > 解决方案 > 配置 PHP 页面上的表单重定向

问题描述

我有一个功能齐全的表单,可以按原样发送邮件,但由于某种原因,当我(尝试)提交我的消息时,它没有在表单下显示成功或错误警报,而是打开sendmail.php带有消息的页面,没有任何 CSS ......已经 4 天了,我快疯了。我确定这实际上是一个愚蠢的错字或其他东西,但我找不到它,请帮忙。

“成功/警报”显示画面

这是我的 sendmail.php:

<?php
$sendto = 'my@email.com';

$subject = 'Message de votre site';

$errormessage = 'Ah, vous avez oublié quelques informations. Réessayez ?&nbsp;';

$thanks = "Merci pour votre message ! On vous répond aussi vite que possible.&nbsp;";

$honeypot = "Vous êtes tombé dans le piège ! Si vous êtes humain.e, recommencez !&nbsp;";

$emptyname =  'Quel est votre nom ?&nbsp;';
$emptyemail = 'Quelle est votre adresse mail ?&nbsp;';
$emptymessage = 'Et votre message ?&nbsp;';

$alertname =  'Utilisez uniquement un alphabet standard.&nbsp;';
$alertemail = 'Entrez ce format de mail : <i>name@example.com</i>.&nbsp;';
$alertmessage = "Vérifiez que vous n 'avez utilisé aucun caractère spécial.&nbsp;";

$alert = '';
$pass = 0;

function clean_var($variable) {
    $variable = strip_tags(stripslashes(trim(rtrim($variable))));
  return $variable;
}

if ( empty($_REQUEST['last']) ) {

  if ( empty($_REQUEST['name']) ) {
    $pass = 1;
    $alert .= "<li>" . $emptyname . "</li>";
    $alert .= "<script>jQuery(\"#name\").addClass(\"error\");</script>";
  } elseif ( preg_match( "/[][{}()*+?.\\^$|]/", $_REQUEST['name'] ) ) {
    $pass = 1;
    $alert .= "<li>" . $alertname . "</li>";
  }
  if ( empty($_REQUEST['email']) ) {
    $pass = 1;
    $alert .= "<li>" . $emptyemail . "</li>";
    $alert .= "<script>jQuery(\"#email\").addClass(\"error\");</script>";
  } elseif ( !preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $_REQUEST['email']) ) {
    $pass = 1;
    $alert .= "<li>" . $alertemail . "</li>";
  }
  if ( empty($_REQUEST['message']) ) {
    $pass = 1;
    $alert .= "<li>" . $emptymessage . "</li>";
    $alert .= "<script>jQuery(\"#message\").addClass(\"error\");</script>";
  } elseif ( preg_match( "/[][{}()*+?\\^$|]/", $_REQUEST['message'] ) ) {
    $pass = 1;
    $alert .= "<li>" . $alertmessage . "</li>";
  }

  if ( $pass==1 ) {

  echo "<script>$(\".result\").toggle();$(\".result\").toggle().hide(\"fast\").show(\"fast\"); </script>";
  echo "<script>$(\".result .alert\").addClass('alert-danger').removeClass('alert-success'); </script>";
  echo $errormessage;
  echo $alert;

  } elseif (isset($_REQUEST['message'])) {

    $message = "From: " . clean_var($_REQUEST['name']) . "\n";
    $message .= "Email: " . clean_var($_REQUEST['email']) . "\n";
    $message .= "Message: \n" . clean_var($_REQUEST['message']);
    $header = 'From:'. clean_var($_REQUEST['email']);

    mail($sendto, $subject, $message, $header);
    echo "<script>$(\".result\").toggle();$(\".result\").toggle().hide(\"fast\").show(\"fast\");$('#contactForm')[0].reset();</script>";
    echo "<script>$(\".result .alert\").addClass('alert-success').removeClass('alert-danger'); </script>";
    echo $thanks;
    echo "<script>jQuery(\"#name\").removeClass(\"error\");jQuery(\"#email\").removeClass(\"error\");jQuery(\"#message\").removeClass(\"error\");</script>";
    echo "<script>$(\".result .alert\").delay(4000).hide(\"fast\");</script>";
    die();

    echo "<br/><br/>" . $message;

    }

} else {
    echo "<script>$(\".result\").toggle();$(\".result\").toggle().hide(\"fast\").show(\"fast\");</script>";
    echo $honeypot;
}
?>

和 HTML:

<form class="form-inline flowuplabels" role="form" method="post" autocomplete="off" id="contactForm" action="js/sendmail.php">
    <div class="form-group fl_wrap">
        <label class="fl_label" for="name">Nom :</label>
        <input type="text" name="name" value="" id="name" class="form-control fl_input" required>
    </div>
    <div class="form-group fl_wrap">
        <label class="fl_label" for="email">Email :</label>
        <input type="text" name="email" value="" id="email" class="form-control fl_input" required>
    </div>
    <span class="form-group fl_wrap honeypot">
        <label class="fl_label" for="last">Honeypot:</label>
        <input type="text" name="last" value="" id="last" class="form-control fl_input">
    </span>
    <div class="form-group fl_wrap">
        <label class="fl_label" for="message">Message :</label>
        <textarea type="text" name="message" value="" id="message" class="materialize-textarea" required></textarea>
    </div>
    <div class="form-group">
        <button type="submit" value="Send" id="submit" class="btn btn-block">Envoyer</button>
    </div>
    <div id="form-alert" class="form-group">
        <div class="result">
            <div class="alert"></div>
        </div>
    </div>
</form>

正如一些人所问。HTML 在索引页上,sendmail.php是一个独立的页面。这是成功/警报消息应该出现的地方:

网站中的表格

标签: phpforms

解决方案


推荐阅读