Form not submitted in Chrome and Safari

I'm new to PHP, so I'm not sure what is wrong with the code. I've tested the form in Internet Explorer, FireFox, Chrome and Safari and it works great in both cases. and FireFox, but it doesn't work in Chrome or Safari. In Chrome and Safari, I get a successfully submitted page, but I don't get the email sent to me.

HTML page:

 <form name="balxfrform" action="baltransfer.php" method="POST">
 <input type="hidden" name="_SUBJECT" value="Transfer Request Form">

 <b>* Name:</b> <input name="name" type="text" size="60"><br>
 <b>* Email:</b> <input name="email" type="text" size="60"><br>
 <b>Member Number (Last 3 Digits) XXX:</b> <input name="account" type="text" size="10"><br>
 <b>Card Number:</b> <input name="ccnumber" type="text" size="40"><br>
 <b>Phone Number:</b> <input name="pnumber" type="text" size="20"><br>
 <b>Best Time to reach you<sup>1</sup>:</b> <input name="time" type="text" size="40"><br>
 <b>* I agree to the terms and conditions listed below:</b> Yes <input name="terms" type="checkbox" value="Yes"><br>      

  <input type="submit" value="Submit">
  </form>

      

PHP page:

<?php

if(isset($_POST['email'])) {
    $email_to = "email@test.com";
    $email_subject = "Transfer Request Form";

    function died($error) {
        echo "We are very sorry, but there were error(s) found with the form you submitted.<br /><br /> ";
        echo $error."<br /><br />";
        echo "Please go back and fix the error(s).<br /><br />";
        die();
    }

    if(!isset($_POST['name']) ||
       !isset($_POST['email']) ||
       !isset($_POST['account']) ||
       !isset($_POST['ccnumber']) ||
       !isset($_POST['pnumber']) ||
       !isset($_POST['time']) ||
       !isset($_POST['terms'])) {
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
    }

    $name = $_POST['name']; // required
    $email_from = $_POST['email']; // required
    $account = $_POST['account']; // not required
    $ccnumber = $_POST['ccnumber']; // not required
    $pnumber = $_POST['pnumber']; // not required
    $time = $_POST['time']; // not required
    $terms = $_POST['terms']; // required
    $error_message = "";

    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    if(!preg_match($email_exp,$email_from)) {
        $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
    }

    $string_exp = "/^[A-Za-z .'-]+$/";
    if(!preg_match($string_exp,$name)) {
        $error_message .= 'The Name you entered does not appear to be valid.<br />';
    }
    if(strlen($error_message) > 0) {
        died($error_message);
    }
    if(!isset($terms)) {
        $error_message .=  'You must agree to the Terms and Conditions to continue.';
    }
    $email_message = "Form Details Below.\n\n";

    function clean_string($string) {
        $bad = array("content-type","bcc:","to:","cc:","href");
        return str_replace($bad,"",$string);
    }

    $email_message .= "Name: ".clean_string($name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Member Number XXX: ".clean_string($account)."\n";
    $email_message .= "Card Number: ".clean_string($ccnumber)."\n";
    $email_message .= "Telephone: ".clean_string($pnumber)."\n"; 
    $email_message .= "Best Time to be Reached: ".clean_string($time)."\n"."\n";
    $email_message .= "Agree to Terms and Conditions: ".clean_string($terms)."\n";

    // create email headers
    $headers = 'From: '.$email_from."\r\n".
        'Reply-To: email@test.com'.$email_from."\r\n" .
        'X-Mailer: PHP/' . phpversion();
    mail($email_to, $email_subject, $email_message, $headers);  
    ?>

      

+3


source to share


2 answers


There probably won't be anything to do with the PHP part. PHP runs on the server side. Since one browser interprets HTML differently, this could be an HTML syntax issue for your HTML form. You can try checking your HTML. Try the tool .



0


source


Try the following solutions 1.) add the @ function before mail () ex: @mail ($ email_to, $ email_subject, $ email_message, $ headers);



2.) if (!mail(...)) { // again Call your code }

0


source







All Articles