PHP Web Form Script Problem

J

Jeff Dunnett

Hello,

I have written the following HTML Form:

<html><head><title>Survey</title></head>
<body bgcolor="black" text="white" link="#f6b580" vlink="#c0c0ff">
<img src="logo.gif" width="324" height="104"alt="logo.gif (15760
bytes)"><br><br>

<table border="0" cellpadding="0" cellspacing="0" width="307" align="left">
<tr>
<td background="tableback.gif" height="25"><p align="center"><big>Game
Submission</big><br></td>
</tr>
</table>

<tr>
<td>
<br><br><br>
<FORM METHOD="POST" ACTION="sendgamesub.php"
enctype="text/plain">

<b>Game Title</b>:<br> <INPUT TYPE="text" NAME="title" SIZE="35"><br><br>

<b>Game Master</b>:<br> <INPUT TYPE="text" NAME="game_master"
SIZE="35"><br><br>

<b>E-Mail</b>:<br> <INPUT TYPE="text" NAME="email" SIZE="35"><br><br>

<b>Game System</b>:<br> <INPUT TYPE="text" NAME="game_system"
size="35"><br><br>

Standard Rules <INPUT TYPE="radio" NAME="rules" VALUE="Standard_Rules">

Modified Rules <INPUT TYPE="radio" NAME="rules"
VALUE="Modified_Rules"><br><br>

<b>Game Type</b>:<br>
CCG <input type="radio" name="type" value="CCG"><br>
Miniatures <input type="radio" name="type" value="mini"><br>
RPG <input type="radio" name="type" value="rpg"><br>
LARP <input type="radio" name="type" value="larp"><br>
Board <input type="radio" name="type" value="board"><br><br>


<b>Maturity Rating</b>:<br>
PG <INPUT TYPE="radio" NAME="rating" VALUE="PG"><br>
AA <INPUT TYPE="radio" NAME="rating" VALUE="AA"> <br>
R <INPUT TYPE="radio" NAME="rating" VALUE="R"> <br><br>

<b>Number of Players</b>:<br> Minimum:<input type="text" name="minplayers"
size="2"> Maximum:<input type="text" name="maxplayers" size="2"><br><br>

<b>Game Description:</b><br>
What is your game about? What sort of characters are <br> available? Brief
synopsis of plot.
Limit to 5-6 sentences <br>
<TEXTAREA NAME="Game_Description" ROWS=6 COLS=35></TEXTAREA> <br><br>

<b>Anything else we should know about?:</b><br>
<TEXTAREA NAME="Additional_Info" ROWS=6 COLS=35></TEXTAREA> <br><br>

<INPUT TYPE="image" VALUE="Send" SRC="submit.gif" HEIGHT="33" WIDTH="159"
BORDER=0 ALT="picture button">

</td>
</tr>

<table border="0" width="307" align="left">
<tr>
<td align=center><br><br><h6> <a href="main.html">Home</a> | <a
href="location.html">Location</a> | <a href="games.html">Games</a> | <a
href="register.html">Register</a> | <a href="survey.html">Survey</a> | <a
href="contact.html">Contact</a>
</h6>
<h6> <br> </td>
</tr>
</table></div></body></FORM></html>


I have also written the following PHP script:

<?php
$to = (e-mail address removed);
$title = ($_POST['title']);
$game_master = ($_POST['game_master']);
$email = ($_POST['email']);
$game_system = ($_POST['game_system']);
$rules = ($_POST['rules']);
$type = ($_POST['type']);
$rating = ($_POST['rating']);
$minplayers = ($_POST['minplayers']);
$maxplayers = ($_POST['maxplayers']);
$Game_Description = ($_POST['Game_Description']);
$Additional_Info = ($_POST['Additional_Info']);


$sub = "Game Submission";
$headers .= "From: " .$game_master."<".$email.">\n";
$headers .= "Content-Type: text/plain; charset=iso-8859-1\n";
$mes = "Title: ".$title."
Game Master: ".$game_master."
E-Mail: ".$email."
Game System: ".$game_system."
Rules: ".$rules."
Type: ".$type."
Rating: ".$rating."
Min. Players: ".$minplayers."
Max. Players: ".$maxplayers."
Game Description: ".$Game_Description."
Additional Info: ".$Additional_Info."";

mail($to, $sub, $mes, $headers);
?>

The script isn't working properly. It sends the email but there is no data
in the email. For instance it doesn't send the Game Master or the Rating.
I can't seem to see where the problem is coming from. Can somebody point
out the problem. From what I can tell there doesn't seem to be any syntax
errors. I am fairly new to PHP so I could be mistaken.

Regards,
Jeff
 
N

News Me

Jeff said:
Hello,

I have written the following HTML Form:

<html><head><title>Survey</title></head>
<body bgcolor="black" text="white" link="#f6b580" vlink="#c0c0ff">
<img src="logo.gif" width="324" height="104"alt="logo.gif (15760
bytes)"><br><br>

<table border="0" cellpadding="0" cellspacing="0" width="307" align="left">
<tr>
<td background="tableback.gif" height="25"><p align="center"><big>Game
Submission</big><br></td>
</tr>
</table>

<tr>
<td>
<br><br><br>
<FORM METHOD="POST" ACTION="sendgamesub.php"
enctype="text/plain">

<b>Game Title</b>:<br> <INPUT TYPE="text" NAME="title" SIZE="35"><br><br>

<b>Game Master</b>:<br> <INPUT TYPE="text" NAME="game_master"
SIZE="35"><br><br>

<b>E-Mail</b>:<br> <INPUT TYPE="text" NAME="email" SIZE="35"><br><br>

<b>Game System</b>:<br> <INPUT TYPE="text" NAME="game_system"
size="35"><br><br>

Standard Rules <INPUT TYPE="radio" NAME="rules" VALUE="Standard_Rules">

Modified Rules <INPUT TYPE="radio" NAME="rules"
VALUE="Modified_Rules"><br><br>

<b>Game Type</b>:<br>
CCG <input type="radio" name="type" value="CCG"><br>
Miniatures <input type="radio" name="type" value="mini"><br>
RPG <input type="radio" name="type" value="rpg"><br>
LARP <input type="radio" name="type" value="larp"><br>
Board <input type="radio" name="type" value="board"><br><br>


<b>Maturity Rating</b>:<br>
PG <INPUT TYPE="radio" NAME="rating" VALUE="PG"><br>
AA <INPUT TYPE="radio" NAME="rating" VALUE="AA"> <br>
R <INPUT TYPE="radio" NAME="rating" VALUE="R"> <br><br>

<b>Number of Players</b>:<br> Minimum:<input type="text" name="minplayers"
size="2"> Maximum:<input type="text" name="maxplayers" size="2"><br><br>

<b>Game Description:</b><br>
What is your game about? What sort of characters are <br> available? Brief
synopsis of plot.
Limit to 5-6 sentences <br>
<TEXTAREA NAME="Game_Description" ROWS=6 COLS=35></TEXTAREA> <br><br>

<b>Anything else we should know about?:</b><br>
<TEXTAREA NAME="Additional_Info" ROWS=6 COLS=35></TEXTAREA> <br><br>

<INPUT TYPE="image" VALUE="Send" SRC="submit.gif" HEIGHT="33" WIDTH="159"
BORDER=0 ALT="picture button">

</td>
</tr>

<table border="0" width="307" align="left">
<tr>
<td align=center><br><br><h6> <a href="main.html">Home</a> | <a
href="location.html">Location</a> | <a href="games.html">Games</a> | <a
href="register.html">Register</a> | <a href="survey.html">Survey</a> | <a
href="contact.html">Contact</a>
</h6>
<h6> <br> </td>
</tr>
</table></div></body></FORM></html>


I have also written the following PHP script:

<?php
$to = (e-mail address removed);
$title = ($_POST['title']);
$game_master = ($_POST['game_master']);
$email = ($_POST['email']);
$game_system = ($_POST['game_system']);
$rules = ($_POST['rules']);
$type = ($_POST['type']);
$rating = ($_POST['rating']);
$minplayers = ($_POST['minplayers']);
$maxplayers = ($_POST['maxplayers']);
$Game_Description = ($_POST['Game_Description']);
$Additional_Info = ($_POST['Additional_Info']);


$sub = "Game Submission";
$headers .= "From: " .$game_master."<".$email.">\n";
$headers .= "Content-Type: text/plain; charset=iso-8859-1\n";
$mes = "Title: ".$title."
Game Master: ".$game_master."
E-Mail: ".$email."
Game System: ".$game_system."
Rules: ".$rules."
Type: ".$type."
Rating: ".$rating."
Min. Players: ".$minplayers."
Max. Players: ".$maxplayers."
Game Description: ".$Game_Description."
Additional Info: ".$Additional_Info."";

mail($to, $sub, $mes, $headers);
?>

The script isn't working properly. It sends the email but there is no data
in the email. For instance it doesn't send the Game Master or the Rating.
I can't seem to see where the problem is coming from. Can somebody point
out the problem. From what I can tell there doesn't seem to be any syntax
errors. I am fairly new to PHP so I could be mistaken.

Regards,
Jeff

Not that it has anything to do with the problem, but you should be
single-quoting the email address:

$to = '(e-mail address removed)';

In fact, with PHP 5, the script aborted with this error:

PHP Parse error: syntax error, unexpected '@' in
D:\\htdocs\\sendgamesub.php on line 2, referer: http://localhost/test.html


You don't need the parens around all these:

$var = $_POST[...];


As for the empty content, it started working for me when I dropped the
'enctype="text/plain"' from the <form ...> element.


You should consider using an HTML validator. Firefox was a Tidy
extensions that lists 15 warnings for the page as listed above.

NM
 
G

Geoff Berrow

You don't need the parens around all these:

$var = $_POST[...];

In fact he could have saved the bother of writing those lines at all
e.g.

$headers .= "From: " .$_POST['game_master']."<".$_POST['email'].">\n";
 
P

Philip Ronan

Geoff said:
You don't need the parens around all these:

$var = $_POST[...];

In fact he could have saved the bother of writing those lines at all
e.g.

$headers .= "From: " .$_POST['game_master']."<".$_POST['email'].">\n";

NO!!!

Never *ever* put unvalidated content into your email headers.

Suppose I posted some data to your site with "game_master" set to something
like this:

(e-mail address removed)%0ATo:%[email protected]%0ASubject:%20V14GR4...

Insecure scripts like yours make things really easy for spammers. Think
about it.
 
T

Toby Inkster

Geoff said:
$headers .= "From: " .$_POST['game_master']."<".$_POST['email'].">\n";

Ugly.

Better:
$headers .= "From: {$_POST[game_master]} <{$_POST}>\n";
 
G

Geoff Berrow

I noticed that Message-ID:
$headers .= "From: " .$_POST['game_master']."<".$_POST['email'].">\n";

Ugly.

Better:
$headers .= "From: {$_POST[game_master]} <{$_POST}>\n";[/QUOTE]

The OP had already used the concatenation operator and so was familiar
with it. When I am teaching PHP, I find my students struggle with
syntax. Reducing the amount of things to remember helps.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top