Reputation: 319
I'm trying to make a contact form for my website but when I press submit, the php file is downloaded instead of being ran. I am using chrome but don't think that should matter I think there's a syntax error but I've messed around with removing, adding and stuff and even when there is no syntax errors, it still downloads the file rather than runs it And, yes...it is the exact name of the php file (SendEmail.php)
HTML
<form name="contactform" method="post" action="SendEmail.php">
<div class="ContactHeaders">Name:</div>
<input type="text" name="Name" class="ContactBoxes"/>
<div class="ContactHeaders">Email:</div>
<input type="text" name="Email" class="ContactBoxes"/>
<div class="ContactHeaders">Message:</div>
<div style="width:100%">
<textarea name="Message" maxlength="1000"></textarea>
</div>
<div style="width: 100%">
<input type="submit" class="Submitbtn" value="Submit">
</div>
</form>
PHP
if(isset($_POST['Email'])) {
$email_to = "[email protected]";
$email_subject = "Website Contact";
function died($error) {
echo "We are very sorry, but there were error(s) found with the form you submitted.";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['Name']) ||
!isset($_POST['Email']) ||
!isset($_POST['Message'])) {
died('Sorry, but there appears to be a problem with the form you submitted.');
}
$first_name = $_POST['Name']; // required
$last_name = $_POST['Email']; // required
$email_from = $_POST['Message']; // required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$Email)) {
$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 First Name you entered does not appear to be valid.<br />';
}
if(strlen($Message) < 10) {
$error_message .= 'The message you entered does not appear to be valid.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$Name .= clean_string($Name)."\n";
$Email .= clean_string($Email)."\n";
$Message .= clean_string($Message)."\n";
//email headers
$headers = 'From: '.$Email."\r\n".
'Reply-To: '.$Email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $Message, $headers);
?>
Thank you for contacting me. I will be in touch with you very soon.
<?php
}
?>
I can't find what's wrong!!!
Upvotes: 1
Views: 14554
Reputation: 1
how to fix make sure you are working from the htdocs folder in xamps on the browser type localhost/ there should be an index page in the folder
Upvotes: -1
Reputation: 827
All you need is a web server.
For those using LAMP server, moving the files to var/www/html folder works.
If you don't want to move your files, then simply start a web server in the directory where your files are. (Assuming your file is named index.html / index.php. Specify the filename in the below command, otherwise.)
php -S localohost:8080 <filename>
Now visit http://localhost:8080/ and you are good to go.
Upvotes: 0
Reputation: 445
I faced the same problem. I was attempting this on WAMP server. It worked fine when I type the URL: localhost/login.html
and registered. The problem came when I opened it via an Editor. The new URL was localhost:66342/login.html
.
So all I had to do was type in the original URL instead of this new one and it worked.
Upvotes: 1
Reputation: 4529
If the actual php soure code is being downloaded, you have some configuration issues on your webserver, but I won't go into that here.
I do suggest you remove the @ infront of the mail command though, since that surpresses errors you might be having.
One of the errors ie. you are surpressing is the fact that yo u dont' have a $Message variable, considering the fact that your code says: $email_from = $_POST['Message']; // required
.
Aside from that: I suggest you read up about naming conventions concerning upper/lower case characters. It makes debugging code quite a bit easier. Try http://framework.zend.com/manual/1.12/en/coding-standard.naming-conventions.html for starters.
PS. You do actually have a $Message variable, but its empty.
Upvotes: 2