0

I'm trying to keep textbox, select option and textarea values, after submit form without clicking on the reCAPTCHA box. It will keep the textbox, select option and textarea as i wish. but when the textarea has line breaks it will not appear text in the 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      = "info@email.com"; 
            $to         = "info@email.com"; 
            $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>
Geeth Welagedara
  • 614
  • 1
  • 8
  • 24

2 Answers2

1

Store in session you original $_POST['message']:

Replace

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

with

 $message    = $_POST['message'];

Then after format for your e-mail with nl2br:

mail($to,$subject,nl2br($message),$headers);
Felippe Duarte
  • 14,901
  • 2
  • 25
  • 29
0

Finally i found my own way. textarea doesn't have a value. helpful link here

<textarea maxlength="500" id="message" type="text" name="message" placeholder="Massage" class="form-control" rows="5" required="required"><?php echo isset($_POST['message']) ? htmlspecialchars($_POST['message']):'' ?></textarea>
Community
  • 1
  • 1
Geeth Welagedara
  • 614
  • 1
  • 8
  • 24