| 
	
 | 
 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] 
 |