Mentor
24-03-2005, 05:32 PM
Originally it was the answer to a question, but as its so long, and quite a few people get stuck with them, I decided to give it its own topic
This tutorial, goes through creating the basic form, and using php as a form handler. Hope it helps
The form itself only requires html
It should start with
<form name="form" id="form" method="post" action="LOCATION.php">
LOCATION.php being the url of the form handler your using.
In older browsers rather than using the form handler you can just send it to your email. using the mailto tags
e.g.
<form name="form" id="form" method="post" action="mailto:[email protected]">
Although in modern browsers this may just send a blank email because its no longer supported, by "most" browsers.
As well as this you don’t have as much control over how the data is displayed when send to you, or the ability to make a thank you page etc.
Next you need to put in some inputs.
for something like
Question: ______________
you would use
<br>
question :<input name="title" type="text" />
<input name="title" type="text" />
is what makes the text box itself. You can have as many as you like. but they must all have individual names so they can be told apart
eg
<input name="sheep" type="text" />
<input name="cow" type="text" />
etc. although its probably best if the name is something similar to the question. although its best to be one word, so interpreter doesn’t have any problems.
Another think you could have inside is a text box
<textarea name="message" ></textarea>
Again each one must have its own Name.
a text box is basically a bigger input. and multi line.
The only other major think you may want in a form is a multi choose input.
<select name="rate">
<option>5</option>
<option>4</option>
<option>3</option>
<option>2</option>
<option>1</option>
</select>
The options selectable are 1 to 5. you can ad and removed them in the same way
and again each one needs a new name.
Secondly, if you want an option, to say something but have a different value when submitted.
<option value="cow">1</option>
use that.
You can also use the value="" tag in the other boxes to have some text already written in to them.
To make a text aria invisible. which is mainly useful for php scripts but ill say anyway you simply change the type
from text
to hidden
eg
<input name="info" type="hidden" />
Or to make the letters invisible typed in to splodges (aka a password field)
use this
<input name="info" type="password" />
finally we need a submit button :D
<input type="submit" name="Submit" value="button text">
Ad that to the end to make a submit button. Also change button text to the text you want to display on the button.
And to end the form. you just close the form tags.
</form>
THE FORM HANDLER
The next part is the php. where you need to use two main functions for the most basic form handler. although ill also throw in some security measures to prevent spamming.
Ok here we go.
Make sure the page your using. is the one you set as teh form handler loction in the form
for example. LOCATION.php
as every php file it starts with
<?php
To tell the host machine, that it needs to do the php script.
Then we start the form handler.
if ($_SERVER['REQUEST_METHOD'] != 'GET'){
this makes sure that the information was submitted by the form. or at least a form.
Then we tell it what to do.
For every input text box, multiple choice question. In the form you will need this bit of code to set it as a variable, in order to email.
$message = $_POST['message'];
The above bit is getting the data form a input with the NAME message
and assigning it to the variable message.
. You need to do this for all the inputs
EG
$nam = $_POST['name'];
$email = $_POST['email'];
$mess = $_POST['message'];
$ip = $_POST['ip'];
Once all the forms data is in variables you then need to mail it to your email.
the easiest way is be putting all the variables in to one variable
e.g.
$messig = "
Name: $nam
\n
Email: $email
\n
Message: $mess
\n
Ip: $ip
";
NB: \n is a new line in php
also you may want a subject for the email
$subject = $nam;
Now you have the variable. you send it
with this bit of code.
mail("[email protected]", $subject, $messig);
The first part ois your email, or the email you want to message
$subject is the messages subject.
And the 3rd bit is the actual message, or the variable with the message you made.
You can send as much or as little data as you like.
Once you’ve sent the form. redirect them else where with
Header("Location: thankyoupage.php");
Now what to do is the message want send by a form
}
else
{
echo 'ERROR';
}
Which just prints error is its viewed directly.
And close the form surprisingly enough with
?>
Getting and ip
To get an ip use this value
value="<?php echo $_SERVER['REMOTE_ADDR']; ?>"
so the full think would be
<input name="ip" type="text" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" />
And if you don’t want the editing the field
just ad a readonly to the end
<input name="ip" type="text" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" readonly>
Keep in mind the contact file would have to be a .php one to be able to use this data :/
Hope this help. Please point out any mistakes. And I hope this helps people
Any questions, or relevant stuff I may ad to it
emailing a varible email adress
Basicaly all this needs is a form vaiable with in the actal send mail part.
Easyist way is to have a drop down menu including the emails, but the linkly hood is, no one would know who was who so it would be pointless.
ok lets start with the form.
(exsample)
say this is what we had in the form istelf.
<select name="too">
<option>webdesigner</option>
<option>moderators</option>
<option>admin</option>
<option>weeble</option>
<option>bob</option>
</select>
Then linke an ordinary form it sends the option selected to the form handler.
in the form handler, first of all you want to change the names from the input in to emails.
Im going to do this with an if stamentet, but before that it needs to be truned in to a varible
( stuff with // before them are comments, not part of the code
$tool = $_POST['too']; // now its a varible
//next we do the if stament
if($too == "webdesigner"){$mailto = "[email protected]" ;}
elseif($too == "moderator"){$mailto = "[email protected]" ;}
elseif($too == "admin"){$mailto = "[email protected]" ;}
elseif($too == "weeble"){$mailto = "[email protected]" ;}
elseif($too == "bob"){$mailto = "[email protected]" ;}
else {die("Error, no one to send email to"); }
The if stament just see's if the vaible, $too's data maches any of the possoiblitys, if it doesnt, then the die command, stops the script and outputs an error
lets say it worked. now we have a $mailto vaible containing who we want to send the email to. so isntd of the old mail function we would use this
mail($mailto, $subject, $messig);
Wich sustitutes an abosulte email, for an email we set to the $mailto variable.
hope thats helps
This tutorial, goes through creating the basic form, and using php as a form handler. Hope it helps
The form itself only requires html
It should start with
<form name="form" id="form" method="post" action="LOCATION.php">
LOCATION.php being the url of the form handler your using.
In older browsers rather than using the form handler you can just send it to your email. using the mailto tags
e.g.
<form name="form" id="form" method="post" action="mailto:[email protected]">
Although in modern browsers this may just send a blank email because its no longer supported, by "most" browsers.
As well as this you don’t have as much control over how the data is displayed when send to you, or the ability to make a thank you page etc.
Next you need to put in some inputs.
for something like
Question: ______________
you would use
<br>
question :<input name="title" type="text" />
<input name="title" type="text" />
is what makes the text box itself. You can have as many as you like. but they must all have individual names so they can be told apart
eg
<input name="sheep" type="text" />
<input name="cow" type="text" />
etc. although its probably best if the name is something similar to the question. although its best to be one word, so interpreter doesn’t have any problems.
Another think you could have inside is a text box
<textarea name="message" ></textarea>
Again each one must have its own Name.
a text box is basically a bigger input. and multi line.
The only other major think you may want in a form is a multi choose input.
<select name="rate">
<option>5</option>
<option>4</option>
<option>3</option>
<option>2</option>
<option>1</option>
</select>
The options selectable are 1 to 5. you can ad and removed them in the same way
and again each one needs a new name.
Secondly, if you want an option, to say something but have a different value when submitted.
<option value="cow">1</option>
use that.
You can also use the value="" tag in the other boxes to have some text already written in to them.
To make a text aria invisible. which is mainly useful for php scripts but ill say anyway you simply change the type
from text
to hidden
eg
<input name="info" type="hidden" />
Or to make the letters invisible typed in to splodges (aka a password field)
use this
<input name="info" type="password" />
finally we need a submit button :D
<input type="submit" name="Submit" value="button text">
Ad that to the end to make a submit button. Also change button text to the text you want to display on the button.
And to end the form. you just close the form tags.
</form>
THE FORM HANDLER
The next part is the php. where you need to use two main functions for the most basic form handler. although ill also throw in some security measures to prevent spamming.
Ok here we go.
Make sure the page your using. is the one you set as teh form handler loction in the form
for example. LOCATION.php
as every php file it starts with
<?php
To tell the host machine, that it needs to do the php script.
Then we start the form handler.
if ($_SERVER['REQUEST_METHOD'] != 'GET'){
this makes sure that the information was submitted by the form. or at least a form.
Then we tell it what to do.
For every input text box, multiple choice question. In the form you will need this bit of code to set it as a variable, in order to email.
$message = $_POST['message'];
The above bit is getting the data form a input with the NAME message
and assigning it to the variable message.
. You need to do this for all the inputs
EG
$nam = $_POST['name'];
$email = $_POST['email'];
$mess = $_POST['message'];
$ip = $_POST['ip'];
Once all the forms data is in variables you then need to mail it to your email.
the easiest way is be putting all the variables in to one variable
e.g.
$messig = "
Name: $nam
\n
Email: $email
\n
Message: $mess
\n
Ip: $ip
";
NB: \n is a new line in php
also you may want a subject for the email
$subject = $nam;
Now you have the variable. you send it
with this bit of code.
mail("[email protected]", $subject, $messig);
The first part ois your email, or the email you want to message
$subject is the messages subject.
And the 3rd bit is the actual message, or the variable with the message you made.
You can send as much or as little data as you like.
Once you’ve sent the form. redirect them else where with
Header("Location: thankyoupage.php");
Now what to do is the message want send by a form
}
else
{
echo 'ERROR';
}
Which just prints error is its viewed directly.
And close the form surprisingly enough with
?>
Getting and ip
To get an ip use this value
value="<?php echo $_SERVER['REMOTE_ADDR']; ?>"
so the full think would be
<input name="ip" type="text" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" />
And if you don’t want the editing the field
just ad a readonly to the end
<input name="ip" type="text" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" readonly>
Keep in mind the contact file would have to be a .php one to be able to use this data :/
Hope this help. Please point out any mistakes. And I hope this helps people
Any questions, or relevant stuff I may ad to it
emailing a varible email adress
Basicaly all this needs is a form vaiable with in the actal send mail part.
Easyist way is to have a drop down menu including the emails, but the linkly hood is, no one would know who was who so it would be pointless.
ok lets start with the form.
(exsample)
say this is what we had in the form istelf.
<select name="too">
<option>webdesigner</option>
<option>moderators</option>
<option>admin</option>
<option>weeble</option>
<option>bob</option>
</select>
Then linke an ordinary form it sends the option selected to the form handler.
in the form handler, first of all you want to change the names from the input in to emails.
Im going to do this with an if stamentet, but before that it needs to be truned in to a varible
( stuff with // before them are comments, not part of the code
$tool = $_POST['too']; // now its a varible
//next we do the if stament
if($too == "webdesigner"){$mailto = "[email protected]" ;}
elseif($too == "moderator"){$mailto = "[email protected]" ;}
elseif($too == "admin"){$mailto = "[email protected]" ;}
elseif($too == "weeble"){$mailto = "[email protected]" ;}
elseif($too == "bob"){$mailto = "[email protected]" ;}
else {die("Error, no one to send email to"); }
The if stament just see's if the vaible, $too's data maches any of the possoiblitys, if it doesnt, then the die command, stops the script and outputs an error
lets say it worked. now we have a $mailto vaible containing who we want to send the email to. so isntd of the old mail function we would use this
mail($mailto, $subject, $messig);
Wich sustitutes an abosulte email, for an email we set to the $mailto variable.
hope thats helps