简体   繁体   中英

how to change php headers on respective website using ajax

contactfrm.php

    <?php

// Server side validation

$name = $_POST['name'];
$surname = $_POST['surname'];
$bsubject = $_POST['subject'];
$email= $_POST['email'];
$message= $_POST['message'];
$to = "sample@email.com";
$subject = "Mail From sample 1";
$cc = "sample@email.com";
$txt ="";
$txt .="<html><body>";
$txt .= "<table style='border-collapse: collapse; width: 30%; background: #ddd7d769;'><tr>
<th style='border: 1px solid #0000004f; text-align: left; padding: 8px;'>Name</th>";
$txt .= "<td  style='  border: 1px solid #0000004f;text-align: left;padding: 8px;'>".$name."</td></tr>";
$txt .= "<tr><th style='border: 1px solid #0000004f; text-align: left; padding: 8px;'>Surname</th>";
$txt .= "<td style='border: 1px solid #0000004f; text-align: left; padding: 8px;'>".$surname."</td></tr>";

$txt .= "<tr><th style='border: 1px solid #0000004f; text-align: left; padding: 8px;'>Subject</th>";
$txt .= "<td style='border: 1px solid #0000004f; text-align: left; padding: 8px;'>".$bsubject."</td></tr>";

$txt .= "<tr style='background: lightgrey;'><th style='border: 1px solid #0000004f; text-align: left; padding: 8px;'>Email</th>";
$txt .= "<td style='border: 1px solid #0000004f; text-align: left; padding: 8px;'>".$email."</td></tr>";
$txt .= "<tr><th style='border: 1px solid #0000004f; text-align: left; padding: 8px;'>Message</th>";
$txt .= "<td style='border: 1px solid #0000004f; text-align: left; padding: 8px;'>".$message."</td></tr>";
$txt .= "</table>";
$txt .="</body></html>";


$headers = "From: Sample 1 . "\r\n" ;

$headers .= 'Cc: '.$cc . "\r\n";
$headers .= "MIME-Version: 1.0'.PHP_EOL'\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

        if(!empty($email))
        {
            mail($to,$subject,$txt,$headers);
            $success_output = "Your message sent successfully, We will contact you soon. Thank You";
        }
        else
        {
            $error_output = "Something went wrong. Please try again later";
        }

$output = array(
    'error'     =>  $error_output,
    'success'   =>  $success_output
);

// Output needs to be in JSON format
echo json_encode($output);

?>

Contact Form.html

<section id="contact" class="contact">
      <div class="container" data-aos="fade-up">

        <div class="section-title">
          <h2>Contact</h2>
          <p>Feel Free to contact</p>
        </div>

        <div class="row">

          <div class="col-lg-5 d-flex align-items-stretch">
            <div class="info">
              <div class="address">
                <a class="skype" href="skype:live:.cid.123456789?chat" target = "_blank"><i class="fa fa-skype" aria-hidden="true"></i></a>
                <a class="skype" href="skype:live:.cid.123456789?chat" target = "_blank"><h4>Skype</h4></a>
                <p>Click here to message us directly on Skype</p>
              </div>    


              <div class="address">
                <a class="whatsapp" href="https://wa.me/+123456789" target="_blank"><i class="fa fa-whatsapp" aria-hidden="true"></i></a>
                <a class="whatsapp" href="https://wa.me/+123456789" target="_blank"><h4>WhatsApp</h4></a>
                <p>Click here to message us directly on WhatsApp  </p>
              </div>    

              <div class="email">
                <a href = "mailto: sample@email.com"><i class="fas fa-envelope"></i></a>
                <h4>Email:</h4>
                <a href = "mailto: sample@email.com"><p>sample@email.com</p></a>
              </div>

              <div class="phone">
                <a href="tel:+123456789" target = "_blank"><i class="fa fa-phone" aria-hidden="true"></i></a>
                <h4>Call:</h4>
                <a href="tel:+123456789"><p>+123456789</p></a>
              </div>

              
            </div>

          </div>

          <div class="col-lg-7 mt-5 mt-lg-0 d-flex align-items-stretch">
            <form id="contactfrm" onsubmit="validateCaptcha()" method = "POST" role="form" class="php-email-form">
              <div class="form-row">
                <div class="form-group col-md-6">
                  <label for="name">First Name</label>
                  <input type="text" name="name" placeholder="Enter Your First Name" class="form-control" id="name" data-rule="minlen:4" data-msg="Please enter at least 4 chars" required />
                  <div class="validate"></div>
                </div>
                <div class="form-group col-md-6">
                  <label for="name">Surname</label>
                  <input type="text" class="form-control" placeholder="Enter Your Surname" name="surname" id="surname" data-rule="minlen:4" data-msg="Please enter a valid email" />
                  <div class="validate"></div>
                </div>
              </div>

              <div class="form-group">
                <label for="name">Your Email</label>
                <input type="email" class="form-control" name="email" placeholder="example@example.com" id="email" data-rule="email" data-msg="Please enter a valid email" />
                <div class="validate"></div>
              </div>
              <div class="form-group">
                <label for="name">Subject</label>
                <input type="text" class="form-control" name="subject" id="subject" data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject" />
                <div class="validate"></div>
              </div>
              <div class="form-group">
                <label for="name">Message</label>
                <textarea class="form-control" name="message" rows="10" data-rule="required" data-msg="Please write something for us" required></textarea>
                <div class="validate"></div>
              </div>
              <div id="captcha">
              </div>
              <div class="form-group">
              <input type="text" class="form-control" placeholder="Captcha" data-rule="required" data-msg="Please Enter the Captcha" id="cpatchaTextBox"/>
            </div>
              <div class="text-center" id="btnSend"><button type="submit">Send Message</button></div>
              <div id="alert"></div>
            </form>
          </div>

        </div>

      </div>
    </section><!-- End Contact Section -->

ajax script

<script async = "true">
  var code;
function createCaptcha() {
document.getElementById('captcha').innerHTML = "";
var charsArray =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@";
var lengthOtp = 6;
var captcha = [];
for (var i = 0; i < lengthOtp; i++) {
var index = Math.floor(Math.random() * charsArray.length + 1); 
if (captcha.indexOf(charsArray[index]) == -1)
captcha.push(charsArray[index]);
else i--;
}
var canv = document.createElement("canvas");
canv.id = "captcha";
canv.width = 100;
canv.height = 50;
var ctx = canv.getContext("2d");
ctx.font = "25px Georgia";
ctx.strokeText(captcha.join(""), 0, 30);
code = captcha.join("");
document.getElementById("captcha").appendChild(canv);
}
function validateCaptcha() {
event.preventDefault();
debugger
if (document.getElementById("cpatchaTextBox").value == code) {
// alert("Valid Captcha")
readCap();
}else{
alert("Invalid Captcha. try Again");
createCaptcha();
}
}

function readCap(){
              $.ajax({
            url: 'contactfrm.php',
            type: 'post',
            data: $('#contactfrm').serialize(),
            dataType: 'json',
            success: function( _response ){
              
                var error = _response.error;
                var success = _response.success;
                console.log(success);
                if(error != null) {
                    
                    $('#alert').html(error);
                }
                else {
                   
                    $('#alert').html(success);
                    $('#btnSend').remove();
                }
            },
            error: function(jqXhr, json, errorThrown){
               
                var error = jqXhr.responseText;
                $('#alert').html(error);
            }
        });
        }
</script>

在此处输入图片说明

I have 30 different websites with this same contact form at the bottom.

As shown in the image, When I receive an email, it says "Mail From (website Name)" So, if I have to upload same php for 30 different websites, I'll have to make 30 different php forms with different titles and headers.

How can I add if else loop where I can target respective website and only its header will be displayed. Because right now I have created 10 different 'contactfrm.php' in which I have changed headers to respective website.

Replace this variable

$subject = "Mail From sample 1";

Into this code you will get your solution .

$regexp = "/([\w]{0,}).([\w]{2,3}|[\w]{2,3}.[\w]{2,3})$/";
$url= $_SERVER['SERVER_NAME'];
$input = parse_url($url, PHP_URL_HOST);
preg_match($regexp, $input, $matches);
$subject = "Mail From ".$matches[1];  //out put domain name 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM