提交表单后,我试图保持textboxselect optiontextarea值,而不单击reCAPTCHA框。它将保持我希望的textboxselect optiontextarea。但是当textarea有换行符时,它不会在textarea中显示文本。

的PHP

<?php
session_start();
if(isset($_POST['submit'])){
    if(isset($_POST['g-recaptcha-response'])){
        //your site secret key
        $secret = 'site secret key';
        //get verify response data
        $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
        $responseData = json_decode($verifyResponse);
        //contact form submission code
        $name       = $_POST['username'];
        $replyto    = $_POST['emailadd'];
        $subject    = $_POST['selectOption'];
        $message    = nl2br($_POST['message']);

        $_SESSION['username'] = $name;
        $_SESSION['replyto'] = $replyto;
        $_SESSION['subject'] = $subject;
        $_SESSION['message'] = $message;

        if($responseData->success){
            $email      = "[email protected]";
            $to         = "[email protected]";
            $headers = 'From:'.$name.' <'.$email.'>'."\r\n".'Reply-To:'.$replyto. "\r\n".'X-Mailer: PHP/' . phpversion();
            mail($to,$subject,$message,$headers);
            $succMsg = 'Your contact request have submitted successfully.';
            session_destroy();
            echo "<script type='text/javascript'>alert('$succMsg'); window.location = '/'; </script>";
        }
        else{
            $flag = 1;
            echo "<script type='text/javascript'>window.location = '#contactus';</script>";
        }
    }
    else{
        $flag = 1;
        echo "<script type='text/javascript'>window.location = '#contactDiv';</script>";
    }
}?>


< script type = "text/javascript" >
  $(document).ready(function() {
    $("#errorcaptcha").hide();
    var flag = '<?php echo $flag; ?>';
    var usernmae = "<?php if(isset($_SESSION['username'])){echo $_SESSION['username'];} ?>";//working fine
    var email = "<?php if(isset($_SESSION['replyto'])){echo $_SESSION['replyto'];} ?>";//working fine
    var subject = "<?php if(isset($_SESSION['subject'])){echo $_SESSION['subject'];} ?>";//working fine
    var message = "<?php if(isset($_SESSION['message'])){echo $_SESSION['message'];} ?>"; //error here, works when without line breaks text

    if (flag == 1) {
      $("#errorcaptcha").show();
      $('#username').val(usernmae);
      $('#emailadd').val(email);
      $('#selectOption').val(subject);
      $('#message').val(message);
    }
  }); < /script>


  <!DOCTYPE html>
  <html lang="en">
  <body id="page-top">
    <form id="contactfrom" method="post">
      <div class="form-group">
        <div class="col-sm-12">
          <input class="form-control" name="username" id="username" maxlength="40" required="required" type="text" placeholder="Your name" value="" />            </div>
      </div>
      <div class="form-group">
        <div class="col-sm-12">
          <input class="form-control" id="emailadd" name="emailadd" required="required" type="email" maxlength="50" placeholder="Your email" />
        </div>
      </div>
      <label for="username" class="uname" data-icon="u">Inquiry about</label>
      <div class="form-group">
        <div class="col-sm-12">
          <select name="selectOption" id="selectOption" class="form-control">
            <option value="1" selected="">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
            <option value="6">6</option>
            <option value="7">7</option>
            <option value="8">8</option>
          </select>
        </div>
      </div>
      <div class="form-group">
        <div class="col-sm-12">
          <textarea maxlength="500" id="message" name="message" placeholder="Massage" class="form-control" rows="5" required="required"></textarea>
        </div>
      </div>
      <div>
      </div>
      <div class="form-group">
        <div class="col-sm-12">
          <label id="errorcaptcha" for="">Please click on the reCAPTCHA box.</label>
        </div>
      </div>
      <div class="form-group">
        <div class="col-sm-12" id="recaptcha">
          <div class="g-recaptcha" data-theme="dark" data-sitekey="sitekey"></div>
        </div>
      </div>
      <div class="form-group">
        <div class="col-sm-12">
          <button type="submit" name="submit" class="btn btn-default">Submit</button>
        </div>
      </div>
    </form>
  </body>

最佳答案

在会话中存储原始的$_POST['message']

更换

 $message    = nl2br($_POST['message']);




 $message    = $_POST['message'];


然后使用nl2br格式化电子邮件格式之后:

mail($to,$subject,nl2br($message),$headers);

关于javascript - 如何在textarea上放回文本,textarea在换行中保存在 session 中。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40772269/

10-14 15:10