Learning PHP but problem with script

Reply

Join Date: Mar 2004
Posts: 4
Reputation: wise1 is an unknown quantity at this point 
Solved Threads: 0
wise1 wise1 is offline Offline
Newbie Poster

Learning PHP but problem with script

 
0
  #1
Mar 13th, 2004
This is a simple script I copied from a book to create a form, then mail it to an address.

I cant get it too wok and wonder if its the script or my server. I even copied the source form the publishers website and it still wont work.

Basically all it should do is show a form, error check it and then send it.

Can anyone tell me what maybe wrong with it or if its maybe just my server setup.

[PHP]<HTML>
<HEAD>
<TITLE>All-In-One Feedback Form</TITLE>
</HEAD>
<BODY>
<?
$form_block ="
<FORM METHOD=\"POST\" ACTION=\"$_SERVER[PHP_SELF]\">
<P><strong>Your Name:</strong><br>
<INPUT type=\"text\" NAME=\"sender_name\" VALUE=\"$_POST[sender_name]\" SIZE=30></P>
<P><strong>Your E-Mail Address:</strong><br>
<INPUT type=\"text\" NAME=\"sender_email\" VALUE=\"$_POST[sender_email]\" SIZE=30></P>
<P><strong>Message:</strong><br>
<TEXTAREA NAME=\"message\" COLS=30 ROWS=5 WRAP=virtual>$_POST[message]</TEXTAREA></P>
<INPUT type=\"hidden\" name=\"op\" value=\"ds \">
<P><INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Send This Form\"></p>
</FORM>";
if ($_POST[op] != "ds") {
//they need to see the form
echo "$form_block";

} else if ($_POST[op] == "ds") {
//check value of $_POST[sender_name]
if ($_POST[sender_name] == "") {
$name_err ="<font color=red>Please enter your name!</font><br>";
$send ="no";
}

//check value of $_POST[sender_email]
if ($_POST[sender_email] == "") {
$email_err ="<font color=red>Please enter your e-mail address!</font><br>";
$send ="no";
}

//check value of $_POST[message]
if ($_POST[message] == "") {
$message_err ="<font color=red>Please enter a message!</font><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 Name_POST[sender_name]\n";
$msg .="Sender's E-Mail_POST[sender_email]\n";
$msg .="Message_POST[message]\n \n";

$to ="you@yourdomain.com";
$subject ="All-in-One Web Site Feedback";
$mailheaders ="From:My Web Site <>\n";
$mailheaders .="Reply-To_POST[sender_email]\n\n";

//send the mail
mail($to,$subject,$msg,$mailheaders);

//display confirmation to user
echo "<P>Mail has been sent!</p>";

} else if ($send =="no"){
//print error messages
echo "$name_err";
echo "$email_err";
echo "$message_err";
echo "$form_block";
}
}
?> [/PHP]
Reply With Quote Quick reply to this message  
Join Date: Mar 2004
Posts: 4
Reputation: wise1 is an unknown quantity at this point 
Solved Threads: 0
wise1 wise1 is offline Offline
Newbie Poster

Re: Learning PHP but problem with script

 
0
  #2
Mar 13th, 2004
forgot to say:

when you complete the form details it wont show the "mail has been sent" message and if you leave it blank it wont show the error messages.
Reply With Quote Quick reply to this message  
Join Date: Feb 2003
Posts: 282
Reputation: Roberdin will become famous soon enough Roberdin will become famous soon enough 
Solved Threads: 6
Team Colleague
Roberdin Roberdin is offline Offline
Supreme Evil Overlord

Re: Learning PHP but problem with script

 
0
  #3
Mar 13th, 2004
ergh. That is pehaps the worst script I've seen in a long time.
Reply With Quote Quick reply to this message  
Join Date: Mar 2004
Posts: 4
Reputation: wise1 is an unknown quantity at this point 
Solved Threads: 0
wise1 wise1 is offline Offline
Newbie Poster

Re: Learning PHP but problem with script

 
0
  #4
Mar 13th, 2004
dont say that!

Its from a book called, PHP fast and easy web development by Julie Meloni

I also have the php cookbook by O'reilly, wonder if thats better, still to look at it.
Reply With Quote Quick reply to this message  
Join Date: Feb 2002
Posts: 1,135
Reputation: samaru is just really nice samaru is just really nice samaru is just really nice samaru is just really nice 
Solved Threads: 6
Team Colleague
samaru's Avatar
samaru samaru is offline Offline
a.k.a inscissor

Re: Learning PHP but problem with script

 
0
  #5
Mar 13th, 2004
Did you set up a mail server?
Check out my blog at http://www.shinylight.com for more stuff about web dev.
Reply With Quote Quick reply to this message  
Join Date: Feb 2003
Posts: 282
Reputation: Roberdin will become famous soon enough Roberdin will become famous soon enough 
Solved Threads: 6
Team Colleague
Roberdin Roberdin is offline Offline
Supreme Evil Overlord

Re: Learning PHP but problem with script

 
0
  #6
Mar 14th, 2004
Here's the problem:
[php]
$to ="you@yourdomain.com";
[/php]

Change to (and change the you@yourdomain.com appropriately)
[php]
$to ='you@yourdomain.com';
[/php]

and I will add that the script is unecessarily resource intensive; hard to follow due to improper indentation and using " where ' would have been preferable; doesn't teach how variables and strings ARE different (you don't need to and shouldn't put a variable inside a string on it own); uses outdated and depreciated HTML standards (without even a <!DOCTYPE>); and doesn't use TRUE and FALSE definitions ( $send = "no"!? What kind of rubbish is that? )
Reply With Quote Quick reply to this message  
Join Date: Feb 2002
Posts: 1,135
Reputation: samaru is just really nice samaru is just really nice samaru is just really nice samaru is just really nice 
Solved Threads: 6
Team Colleague
samaru's Avatar
samaru samaru is offline Offline
a.k.a inscissor

Re: Learning PHP but problem with script

 
0
  #7
Mar 14th, 2004
Originally Posted by Roberdin
and doesn't use TRUE and FALSE definitions ( $send = "no"!? What kind of rubbish is that? )
I agree. That's a poor way to set flags around your code. I'd see if there was a way to manipulate if statements rather than flagging like this. At the very least, don't use "yes" or "no," use 1 or 0.
Check out my blog at http://www.shinylight.com for more stuff about web dev.
Reply With Quote Quick reply to this message  
Join Date: Feb 2003
Posts: 282
Reputation: Roberdin will become famous soon enough Roberdin will become famous soon enough 
Solved Threads: 6
Team Colleague
Roberdin Roberdin is offline Offline
Supreme Evil Overlord

Re: Learning PHP but problem with script

 
0
  #8
Mar 15th, 2004
or prefeably, true or false. Then, it's just a matter of

if( $send )
{

// send

}
Reply With Quote Quick reply to this message  
Join Date: Mar 2004
Posts: 4
Reputation: wise1 is an unknown quantity at this point 
Solved Threads: 0
wise1 wise1 is offline Offline
Newbie Poster

Re: Learning PHP but problem with script

 
0
  #9
Mar 15th, 2004
Aplogies, I should have stated that this is the code straight form the book, or the cd at least.

I typed it all myself to learn the concept of the script using my own domain, etc.....

The way the book taught me was this, so you understand.

First I created a form in HTML and saved that file as entermail.html, the form action was to call a script called sendemail.php which had the script to send the email after getting the values from the entermail.html

So that was two scripts to send the e-mail.

It then goes on to show you (the script above) how to create just 1 file to setup the form and send the mail. The above script is not working even if I put in my domain details.

Ignore my ignorence here but this is what I thought strange.

There is a hidden field in the scripts $form_block area called "op" (operation)
That field has a value of "ds" (do something)

So basically what the book is saying is that when you run the script the first time it shows the form as the "op" field has a value of "ds", you can then enter your details in the form.

Following me so far?

Okay so the form action in the script has a value of

$_SERVER[PHP_SELF]

this tell me that your going to run the script again upon the user pressing the submit butotn on the form.

So what should happen now is that the value of "op" should now be not equal (!=) to ds, this would then mean that the script has been run to collect the data and you now want to send the mail and output the "mail sent" message.

So if the value of "op" is not "ds" then the form will not be displayed.

But there is at no point in the script an option to change the value of "op" so how can it tell if something has happened to cause it not to display?

As I say I am new to this but thats my thoughts, anyone care to at least shoot me down and say I am talking rubbish.

:cheesy:
Reply With Quote Quick reply to this message  
Join Date: Feb 2002
Posts: 1,135
Reputation: samaru is just really nice samaru is just really nice samaru is just really nice samaru is just really nice 
Solved Threads: 6
Team Colleague
samaru's Avatar
samaru samaru is offline Offline
a.k.a inscissor

Re: Learning PHP but problem with script

 
0
  #10
Mar 15th, 2004
Originally Posted by Roberdin
or prefeably, true or false. Then, it's just a matter of

if( $send )
{

// send

}
I never liked checking for true like this. For one, if you have register_globals=ON, you can easily define it through the URL. And second, if you have a lot of code, you can accidently define it before you check accidently.
Check out my blog at http://www.shinylight.com for more stuff about web dev.
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:



Other Threads in the PHP Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC