|
Posted by Jerry Stuckle on 02/01/08 15:46
Jezza wrote:
> Hi
>
> I wonder if anyone can help me out. I am a newby and have bought "PHP5
> in easy steps" to work through. One project is to have an email form and
> responder built into one page. The form simply asks for a username,
> email address and comment. It validates to make sure all fields are
> filled in, checks the integrity of the email address and then posts it off.
>
> I have copied the code from the book exactly & even checked & re-checked
> the code. Desperately I even scanned the code in via OCR in case I
> missed something. When I run the php script the resulting web page is
> blank. Looking at the HTML page source, that is also blank (no <html>,
> <body> etc. tags). I suspect the code to be sound and that this problem
> is more to do with something within the php.ini file.
>
> I do have PHP files that run fine
>
> I am running Apache 2.2 server with PHP version 4.3.2 & here is the code:
>
>
> <html><head><title>Combined Feedback Form</title></head>
> <body>
> <?php #assign form values when applicable
>
>
>
> $username = $_POST['username'];
> $useraddr = $_POST['useraddr'];
> $comments = $_POST['comments'];
> $sent = $_POST['sent'];
>
>
> #the HTML form that can be written dynamically
>
> $form ="<form action=\"$_SERVER[`PHP_SELF`]\" method=\"post\">";
> $form.="Name:<input type=\"text\" name=\"username\"";
> $form.=" size=\"30\" value=\"$username\" > <br> <br>";
> $form.="Email:<input type=\"text\" name=\"useraddr\"";
> $form.=" size=\"30\" value=\"$useraddr\"> <br> <br>";
> $form.="Comments:<textarea name=\"comments\" ";
> $form.="cols=\"30\" rows=\"5\">$comments</textarea>";
> $form.="<br> <input type=\"submit\" name=\"sent\" ";
> $form. = "value=\"Send Form\"></form>" ;
>
>
> #execute this code if the form has been submitted once
> if($sent)
> { $valid=true;
> #set variable default value
>
> #check username field is not blank
> if( !$username )
> { $errmsg.="Enter your name:<br>"; $valid = false; }
>
> #check email useraddr field is not blank
> if ( !$useraddr )
> { $errmsg. =" Enter email address : <br>" ; $valid=false; }
> #check comments field is not blank
> if ( !$comments )
> { $errmsg. = "Enter your comments : <br>" ; $valid=false; }
> }
>
> if( !$useraddr )
> { $errmsg .="Enter email address:<br>"; $valid = false; }
> else ;
> {
> $useraddr = trim( $useraddr );
> #patterns for name,domain and top-level domains
> $_name = "/^[-!#$%&\'*+\\.\/0-9=?A-Z^_'{|}-]+";
> $_host = " ( [-0-9A-Z]+\.)+";
> $_tlds = "([0-9A-Z]){2,4}$/i";
> #check validity of email format
> if( !preg_match($_name."@".$_host.$_tlds,$useraddr) )
> {
> $errmsg .= "Email address has incorrect format!<br>"; $valid = false; }
> }
>
> #if invalid write the error message/s and the form
>
> if ( $valid != true )
> { echo ( $errmsg . $form ) ; }
>
> else #if the form is valid send the email
>
> { $to = "jo@test.co.uk";
> $re = "Feedback from $username" ;
> $msg = $comments;
> $headers = "From: $useraddr \r\n" ;
> if ( mail ( $to, $re, $msg, $headers ) )
> { echo ("Thanks for your comments, $username" ) ; }
> }
> ?>
>
> </body></html>
>
> ---
>
> Many thanks
>
> Regards
>
> Jeremy
>
Jeremy,
I didn't check all of your code, but to start, your line:
$form ="<form action=\"$_SERVER[`PHP_SELF`]\" method=\"post\">";
uses back tickeys (`) instead of single quotes ('). Hard to see, I know.
Any time you get a blank page (including display source), suspect a
syntax error.
When developing, you should enable all errors and display them. In your
php.ini file, this would be lines:
error_reporting = E_ALL
display_errors = On
Note you shouldn't have display_errors=on in your production system, but
you really need it for production.
One other thing - the line:
else ;
isn't an error in itself - it just terminates else processing and the
code following it (in the braces) will execute all the time. Not what
you want, I'm sure. But it's not an error.
And BTW = PHP 4.3.2 is way old and past end of lifetime. You really
should upgrade to PHP 5.x, especially if you are learning from a PHP 5 book.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Navigation:
[Reply to this message]
|