tags:

views:

67

answers:

2
+2  Q: 

PHP code errors

Hi!

I am new to PHP.. I am updating a couple things for a friend's site.

I thought I added the code correctly, but when I click submit from the html form, I basically get all the PHP code displayed. (When working correctly it is redirected to another page).

Here is the code that I have:

<?php
// Website Contact Form Generator
// http://www.tele-pro.co.uk/scripts/contact_form/
// This script is free to use as long as you
// retain the credit link

// get posted data into local variables
$EmailFrom = Trim(stripslashes($_POST['EmailFrom']));
$EmailTo = "EMAILREMOVED";
$Subject = "Volunteer Form";
$Name = Trim(stripslashes($_POST['Name']));
$Telephone = Trim(stripslashes($_POST['Telephone']));
$Shift = Trim(stripslashes($_POST['Shift']));

// validation
$validationOK=true;
if (Trim($EmailFrom)=="") $validationOK=false;
if (Trim($Name)=="") $validationOK=false;
if (Trim($Telephone)=="") $validationOK=false;
if (Trim($Shift1)=="" && Trim($Shift2)=="" && Trim($Shift3)=="" && Trim($Shift4)=="" && Trim($Shift5)=="" && Trim($Shift6)=="" && Trim($Shift7)=="" && Trim($Shift8)=="") $validationOK=false;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=volunteer-error.html\">";
  exit;
}

// set Shift Time
if ($Shift1!="") $time1="8:30am-9:45am, ";
if ($Shift2!="") $time2="10:00am-11:15am, ";
if ($Shift3!="") $time3="11:30am-12:45pm, ";
if ($Shift4!="") $time4="1:00pm-2:15pm, ";
if ($Shift5!="") $time5="2:30pm-3:45pm, ";
if ($Shift6!="") $time6="4:00pm-5:15pm, ";
if ($Shift7!="") $time7="5:30pm-6:45pm, ";
if ($Shift8!="") $time8="7:00pm-8:00pm";

// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $EmailFrom;
$Body .= "\n";
$Body .= "Telephone: ";
$Body .= $Telephone;
$Body .= "\n";
$Body .= "Shift: ";
if (Trim($Shift1)!="") $Body .= $time1;
if (Trim($Shift2)!="") $Body .= $time2;
if (Trim($Shift3)!="") $Body .= $time3;
if (Trim($Shift4)!="") $Body .= $time4;
if (Trim($Shift5)!="") $Body .= $time5;
if (Trim($Shift6)!="") $Body .= $time6;
if (Trim($Shift7)!="") $Body .= $time7;
if (Trim($Shift8)!="") $Body .= $time8;
$Body .= "\n";

// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=volunteer-success.html\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=volunteer-error.html\">";
}
?>

EDIT: Here is the html code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml"&gt;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="images/favicon.ico" rel="shortcut icon" type="image/x-icon">
<link href="CSS/borders.css" rel="stylesheet" type="text/css" />
<title>Volunteer Signup Form</title>

<style type="text/css">
body
{
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 11px;
 }
</style>

</head>

<body>

<table width="100%" border="0" cellpadding="0" cellspacing="0" class="signup">
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td height="18" valign="top"><strong>Volunteer Signup Form</strong></td>
  </tr>
  <tr>
    <td width="35">&nbsp;</td>
    <td height="307" valign="top">
    <form method="POST" action="contact.php">
  Name: <br />
<input type="text" name="Name"><br /><br />
Email: <br />
<input type="text" name="EmailFrom"><br /><br />
Telephone Number:<br />
<input type="text" name="Telephone"><br /><br />
Shift(s):<br />
<label><input name="Shift1" type="checkbox" id="shiftid" value="1" /> 8:30am - 9:45am</label><br />
<label><input name="Shift2" type="checkbox" id="shiftid" value="1" /> 10:00am - 11:15am</label><br />
<label><input name="Shift3" type="checkbox" id="shiftid" value="1" /> 11:30am - 12:45pm</label><br />
<label><input name="Shift4" type="checkbox" id="shiftid" value="1" /> 1:00pm - 2:15pm</label><br />
<label><input name="Shift5" type="checkbox" id="shiftid" value="1" /> 2:30pm - 3:45pm</label><br />

<label><input name="Shift6" type="checkbox" id="shiftid" value="1" /> 4:00pm - 5:15pm</label><br />
<label><input name="Shift7" type="checkbox" id="shiftid" value="1" /> 5:30pm - 6:45pm</label><br />
<label><input name="Shift8" type="checkbox" id="shiftid" value="1" /> 7:00pm - 8:00pm</label><br />

<br />

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="140" align="center"><input type="submit" name="submit" value="Submit" /></td>
    <td>&nbsp;</td>
  </tr>
</table>

</form>    </td>
  </tr>
</table>

</body>
</html>

Changes I made: I added all code that relates to Shift6, Shift7, Shift8.

I figured it would be exactly the same as the code for Shifts 1-5.. so I just copied and pasted the code.

What could be the errors here?

Note: Email address was removed from code provided for obvious reasons ;) If you need to test, fill it in with a valid address.

Thanks!

+1  A: 

Is the php file residing on a php enabled webserver? Usually when you see code it means the server isn't interpreting the file.

JMC
If I run the non-edited code, it works fine.. once I make the changes.. it does not. That's why i figured there was an error with what I added.
developer
Edit your original post and include the html code and I'll try it out.
JMC
@acidjazz: thanks :)
developer
Your changes work fine on my server. Are you uploading the php file back to the webserver or testing it on your local machine? Also one thing, I had to remove the validation function to make give me the success page, but it didn't send the email. Not sure why. The php did process even when the validation was in there, it just didn't like my input for some reason.
JMC
@acidjazz: ... testing on my local machine :S I will try uploading it to the webserver
developer
@acidjazz: sorry.. my problem was that I wasn't testing on the webserver. the old code was working fine locally.. so I guess I just made assumptions.. thanks for the help!
developer
A: 

If your code ends up in the browser instead of being interpreted - this means usually a server misconfiguration. A properly configured server should never ever send php code out.

A possible cause might be that the filename doesn't end in .php (so the server doesn't know it has to treat it as such).

If the filename is OK you should make sure the server supports PHP.

djn
Might be just a shot in the dark: are you sure about the file extension - I mean have you unchecked 'hide extensions for known file types' in WinExplorer options? If you edit the code in notepad it could silently save the thing as file.php.txt and hide the final .txt. Such a file wouldn't be interpreted by the server, so make sure you are saving file.php as 'All Files', not 'Text Document'.
djn