php/html form error-not sure why

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

User avatar
nielsene
DevNet Resident
Posts: 1834
Joined: Fri Aug 16, 2002 8:57 am
Location: Watertown, MA

Post by nielsene »

OK, This chunk of code works for me. I've stripedd off everything above the $form_block= line, you'll want to tack that back on.

Code: Select all

<?php
$form_block=<<<END_FORM
<form method="POST" action="$PHP_SELF" class="info_request">
<fieldset>
<legend title="additional information request">Additional Information Request</legend>
<table id="info_request">
<tr>
<td>
<label for="firstname"><span class="red">*</span> First Name: </label></td>
<td>
<input id="firstname" name="firstname" type="text" value="{$_POST['firstname']}" />
</td>
</tr>
<tr>
<td>
<label for="lastname"><span class="red">*</span> Last Name:</label></td>
<td>
<input id="lastname" name="lastname" type="text" value="{$_POST['lastname']}" />
</td>
</tr>
<tr>
<td>
<label for="company"><span class="red">*</span> Company: </label></td>
<td>
<input id="company" name="company" type="text" value="{$_POST['company']}" /></td>
</tr>
<tr>
<td>
<label for="phone"><span class="red">*</span> Phone: </label></td>
<td>
<input id="phone" name="phone" type="text" value="{$_POST['phone']}" /></td>
</tr>
<tr>
<td>
<label for="email"><span class="red">*</span> e-mail: </label></td>
<td>
<input id="email" name="email" type="text" value="{$_POST['email']}" /></td>
</tr>
<tr>
<td>
<label for="email2"><span class="red">*</span> re-enter e-mail: </label></td>
<td>
<input id="email2" name="email2" type="text" value="{$_POST['email2']}" />
</td>
</tr>
<tr>
<td>
<label for="URL"> URL:</label></td>
<td>
<input id="URL" type="text" name="URL" /> </td>
</tr>
<tr>
<td>
<label for="Contact_Preference"> Best way to reach:</label></td>
<td>
<input id="Contact_Preference" name="Contact_Preference" type="text" value="{$_POST['Contact_Preference']}" /></td>
</tr>
<tr>
<td>
<label for="Contact_Time"> Best time to contact:</label></td>
<td>
<input id="Contact_Time" name="Contact_Time" type="text" value="{$_POST['Contact_Time']}" />
</td>
</tr>
<tr>
<td valign="top">
<label for="message" id="message"> message:</label></td>
<td>
<textarea name="Textarea" rows="25" cols="50">Send me a detailed message specifying what you wish to accomplish with your web site.</textarea>
<input class="submit" src="/images/submit.gif" alt="Submit" type="image" name="submit"  /> 
</td>
</tr>
</table>
</fieldset>
</form>
END_FORM;

if ($_POST["op"] !="ds")     { 
    // they need to see the form
    echo "$form_block";
    } else if ($_POST["op"]  == "ds")  {
        // check value of $_POST['firstname']
        if ($_POST['firstname'] == " ")  {
            $name_err = '<span class="red">Please enter your first name!</span>< /br>';
            $send = "no" ;
    }
// check value of $POST['email']
if ($_POST ['email'] == " ")  {
    $email_err ='<span class="red">Please enter your email address!</span><br />';
    $send="no";
}
if ($send != "no") {
        //it's ok to send, so build the mail
        $msg = "E-mail sent from www site\n";
        $msg .="Sender's first name:        {$_POST['firstname']}\n";
        $msg .="Sender's last name:        {$_POST['lastname']}\n";
        $msg .="Company name:        {$_POST['company']}\n";
        $msg .="Senders Phone number:        {$_POST['phone']}\n";
        $msg .="Senders email address:        {$_POST['email']}\n";
        $msg .="Senders email address (re-typed):        {$_POST['email2']}\n";
        $msg .="URL :        {$_POST['URL']}\n";
        $msg .="Contact_Preference: {$_POST['Contact_Preference']}\n";
                $msg .="Contact_Time {$_POST['Contact_Time']}\n";
        $msg .="Message:        {$_POST['message']}\n\n";
        $to ="webguync@gmail.com";
        $subject ="There has been a disturbance in the force";
        $mailheaders .="From: My Web Site
        <http://www.inspired-evolution.com>\n";
        $mailheaders .="Reply-To: {$_POST['email']}\n";
        //send the mail
        mail ($to, $subject, $msg, $mailheaders);
        //display information to user
  echo "<p>Hola, <strong>$firstname</strong>!.<br /><br />
We have received your request for additional information, and will respond shortly.<br />
Thanks for visiting inspired-evolution.com and have a wonderful day!<br /><br />
Regards,<br /><br />
<strong>Inspired Evolution</strong></p>";
 
} else if ($send =="no") {
        //print error messages
        echo "$name_err";
        echo "$email_err";
        echo "$message_err";
        echo "$form_block";
        }
}
?>
<p><span class="red">*</span> indicates a required field.</p>
<p></p>
<p></p>
<?php require('includes/bottom_links.inc'); ?></div>
 
<!-- begin footer --> 
<div id="footer">
<p class="footertag">Inspired-Evolution - Web Site: Design, Development, Marketing for Raleigh/Durham, Chapel Hill, Cary North Carolina.</p>
 
<?php require('includes/footer.inc'); ?>
<span class="date"><?
$last_modified = filemtime("index.php");
print("Last Modified ");
print(date("m/j/y h:i", $last_modified));
?></span>
</div>
</div>
</div>
</body>
</html>
Fixed problems include:
1. An extra space after "END_FORM;". HEREDOC syntax is sensitive to white space on its label.

2. Removal of spance between $_POST and [ inside your if statements, addition of curly braces there as well.

3. Addition of quotes around op inside your ifs to avoid undefined constant warnings.

There's still a fair number of notices/warnings generated because some of the form variables aren't being cleansed/initialized prior to use, but lets get this much working first.
bruceg
Forum Contributor
Posts: 174
Joined: Wed Mar 16, 2005 11:07 am
Location: Morrisville, NC
Contact:

Post by bruceg »

for some reason I still get an error on line 107

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /hsphere/local/home/bruceg/inspired-evolution.com/Contact_Form.php on line 107

I would turn off error reporting, but I don't have access to changing the php.ini file. I guess I could get server host to do that.

anyway here is code

Code: Select all

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US" dir="ltr">
<head>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1" />
<title>Inspired Evolution :: Contact</title>
<?php require('includes/meta_tags.inc'); ?>
<link rel="stylesheet" href="Gilbert.css" type="text/css" media="screen, handheld" />
</head>
<body>
<!-- begin outer wrapper div --> 
<div id="wrapper_outer">
<a class="skiplink" href="#startcontent">Skip over navigation</a>
<!-- begin header div --> 
<div id="header"><?php require('images/Rotating_Banner/rotating_banner.php'); ?></div>
<!-- top nav list --> 
<div id="navcontainer">
<ul id="navlist">
<li ><a href="About_Me.php" title="you know you want to learn more about me">About Me</a></li>
<li><a href="Skillset.php" title="I've got skillz">Skill set</a></li>
<li><a href="Hireme.php" title="I can do wonders for your web presence">Hire Me</a></li>
<li><a href="Portfolio.php" title="web sites, graphics, newsletters">Portfolio</a></li>
<li><a href="Contact.php"  title="how to get in touch with me">Contact</a></li>
<li><a href="Resume.php"  title="my beautiful resume">R&eacute;sum&eacute;</a></li>
<li><a href="Blog.php"  title="My musings on everyday life" >Blog</a></li>
<li><a href="RSS.php"  title="Syndication that is really simple" >RSS</a></li>
</ul>
</div>
<!-- inner content wrapper div --> 
<div id="wrapper_inner">
<!-- breadcrumbs div --> 
<div id="breadcrumbs"><a href="index.php" title="home link" accesskey="1">Home</a>  > >  Contact</div>
<!-- text div --> 
<div id="main_content">
<a name="startcontent" id="startcontent"></a>
<h1 title="Contact">Contact</h1>
<?php
$form_block=<<<END_FORM
<form method="POST" action="$PHP_SELF" class="info_request">
<fieldset>
<legend title="additional information request">Additional Information Request</legend>
<table id="info_request">
<tr>
<td>
<label for="firstname"><span class="red">*</span> First Name: </label></td>
<td>
<input id="firstname" name="firstname" type="text" value="{$_POST['firstname']}" />
</td>
</tr>
<tr>
<td>
<label for="lastname"><span class="red">*</span> Last Name:</label></td>
<td>
<input id="lastname" name="lastname" type="text" value="{$_POST['lastname']}" />
</td>
</tr>
<tr>
<td>
<label for="company"><span class="red">*</span> Company: </label></td>
<td>
<input id="company" name="company" type="text" value="{$_POST['company']}" /></td>
</tr>
<tr>
<td>
<label for="phone"><span class="red">*</span> Phone: </label></td>
<td>
<input id="phone" name="phone" type="text" value="{$_POST['phone']}" /></td>
</tr>
<tr>
<td>
<label for="email"><span class="red">*</span> e-mail: </label></td>
<td>
<input id="email" name="email" type="text" value="{$_POST['email']}" /></td>
</tr>
<tr>
<td>
<label for="email2"><span class="red">*</span> re-enter e-mail: </label></td>
<td>
<input id="email2" name="email2" type="text" value="{$_POST['email2']}" />
</td>
</tr>
<tr>
<td>
<label for="URL"> URL:</label></td>
<td>
<input id="URL" type="text" name="URL" /> </td>
</tr>
<tr>
<td>
<label for="Contact_Preference"> Best way to reach:</label></td>
<td>
<input id="Contact_Preference" name="Contact_Preference" type="text" value="{$_POST['Contact_Preference']}" /></td>
</tr>
<tr>
<td>
<label for="Contact_Time"> Best time to contact:</label></td>
<td>
<input id="Contact_Time" name="Contact_Time" type="text" value="{$_POST['Contact_Time']}" />
</td>
</tr>
<tr>
<td valign="top">
<label for="message" id="message"> message:</label></td>
<td>
<textarea name="Textarea" rows="25" cols="50">Send me a detailed message specifying what you wish to accomplish with your web site.</textarea>
<input class="submit" src="/images/submit.gif" alt="Submit" type="image" name="submit"  /> 
</td>
</tr>
</table>
</fieldset>
</form>
END_FORM;
if ($_POST["op"] !="ds")     { 
    // they need to see the form
    echo "$form_block";
    } else if ($_POST["op"]  == "ds")  {
        // check value of $_POST['firstname']
        if ($_POST['firstname'] == " ")  {
            $name_err = '<span class="red">Please enter your first name!</span>< /br>';
            $send = "no" ;
    }
// check value of $POST['email']
if ($_POST ['email'] == " ")  {
    $email_err ='<span class="red">Please enter your email address!</span><br />';
    $send="no";
}
if ($send != "no") {
        //it's ok to send, so build the mail
        $msg = "E-mail sent from www site\n";
        $msg .="Sender's first name:        {$_POST['firstname']}\n";
        $msg .="Sender's last name:        {$_POST['lastname']}\n";
        $msg .="Company name:        {$_POST['company']}\n";
        $msg .="Senders Phone number:        {$_POST['phone']}\n";
        $msg .="Senders email address:        {$_POST['email']}\n";
        $msg .="Senders email address (re-typed):        {$_POST['email2']}\n";
        $msg .="URL :        {$_POST['URL']}\n";
        $msg .="Contact_Preference: {$_POST['Contact_Preference']}\n";
                $msg .="Contact_Time {$_POST['Contact_Time']}\n";
        $msg .="Message:        {$_POST['message']}\n\n";
        $to ="webguync@gmail.com";
        $subject ="There has been a disturbance in the force";
        $mailheaders .="From: My Web Site
        <http://www.inspired-evolution.com>\n";
        $mailheaders .="Reply-To: {$_POST['email']}\n";
        //send the mail
        mail ($to, $subject, $msg, $mailheaders);
        //display information to user
  echo "<p>Hola, <strong>$firstname</strong>!.<br /><br />
We have received your request for additional information, and will respond shortly.<br />
Thanks for visiting inspired-evolution.com and have a wonderful day!<br /><br />
Regards,<br /><br />
<strong>Inspired Evolution</strong></p>";
 
} else if ($send =="no") {
        //print error messages
        echo "$name_err";
        echo "$email_err";
        echo "$message_err";
        echo "$form_block";
        }
}
?>
<p><span class="red">*</span> indicates a required field.</p>
<p></p>
<p></p>
<?php require('includes/bottom_links.inc'); ?></div>
 
<!-- begin footer --> 
<div id="footer">
<p class="footertag">Inspired-Evolution - Web Site: Design, Development, Marketing for Raleigh/Durham, Chapel Hill, Cary North Carolina.</p>
 
<?php require('includes/footer.inc'); ?>
<span class="date"><?
$last_modified = filemtime("index.php");
print("Last Modified ");
print(date("m/j/y h:i", $last_modified));
?></span>
</div>
</div>
</div>
</body>
</html>
thanks for all the help!
User avatar
nielsene
DevNet Resident
Posts: 1834
Joined: Fri Aug 16, 2002 8:57 am
Location: Watertown, MA

Post by nielsene »

Your posted code work for me. Make sure that line 111 is two lines. (I know that the form PHP highlighter sometimes combines lines when it shouldn't. I had to add an extra blank line to maake the highlighter behave. It should looke like

Code: Select all

&lt;/form&gt;
END_FORM;
if ($_POST&#1111;'op']!='op') {
(using code not PHP to try to beat the highlighter here.)

(I also have to change the "requires" to "includes", but that's only bwcause I don't have your other files. That change shouldn't affect the error at all.)
bruceg
Forum Contributor
Posts: 174
Joined: Wed Mar 16, 2005 11:07 am
Location: Morrisville, NC
Contact:

Post by bruceg »

not sure what you mean by line 111 being two lines??
END_FORM;

also for line 112 did you mean for it to read
if ($_POST['op']!='op') {


b/c before it was

if ($_POST['op']!='ds') {
User avatar
nielsene
DevNet Resident
Posts: 1834
Joined: Fri Aug 16, 2002 8:57 am
Location: Watertown, MA

Post by nielsene »

sorry about the change of op to ds. yes that should be the ds.

If you look at your last post of the full code, you'll see that line 111 has both the HEREDOC ending and the if statement. I think its probably right in your code; just that the PHP tag formmater here collapses it to a single line for some reason. It was just something to double check.

As to why you're still having problems, I don't know. It works for me.
bruceg
Forum Contributor
Posts: 174
Joined: Wed Mar 16, 2005 11:07 am
Location: Morrisville, NC
Contact:

Post by bruceg »

well does this:

parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /

just mean extra whitspace? Cuz I can go back and double check for that if it does.
User avatar
nielsene
DevNet Resident
Posts: 1834
Joined: Fri Aug 16, 2002 8:57 am
Location: Watertown, MA

Post by nielsene »

Often that message means either:
1) You are missing curly braces where you need them, but I don't see any that are lacking
2) Your HEREDOC isn't ending.

I'm not seeing either of those though...
bruceg
Forum Contributor
Posts: 174
Joined: Wed Mar 16, 2005 11:07 am
Location: Morrisville, NC
Contact:

Post by bruceg »

anyway to turn off error reporting, other than through the PHP.ini file?
timvw
DevNet Master
Posts: 4897
Joined: Mon Jan 19, 2004 11:11 pm
Location: Leuven, Belgium

Post by timvw »

http://www.php.net/error_reporting, but it's not because you ignore them that they are gone..
bruceg
Forum Contributor
Posts: 174
Joined: Wed Mar 16, 2005 11:07 am
Location: Morrisville, NC
Contact:

Post by bruceg »

maybe I don't understand the error reporting part,

b/c I added:

error_reporting(0);

in between the <? php

and
?>

but I still get an error and not my form.

http://www.inspired-evolution.com/Contact_Form.php

thanks
Post Reply