Error when submitting a form

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
User avatar
evilchris2003
Forum Contributor
Posts: 106
Joined: Sun Nov 12, 2006 6:43 am
Location: Derby, UK

Error when submitting a form

Post by evilchris2003 »

Hi there

im reletivly new to PHP i am using a web form to register a user

the problem arises when i submit i get a 404: File not found error

im using the below code to handle the form

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" METHOD="POST">

i know there are no syntax errors on the page

I am willing to post the full page code if anyone feels it is necessary however i did not want to bog the post down with it initially
User avatar
feyd
Neighborhood Spidermoddy
Posts: 31559
Joined: Mon Mar 29, 2004 3:24 pm
Location: Bothell, Washington, USA

Post by feyd »

If you alter that to use # as the action target, how does the behavior change?
User avatar
evilchris2003
Forum Contributor
Posts: 106
Joined: Sun Nov 12, 2006 6:43 am
Location: Derby, UK

Post by evilchris2003 »

get the same 404 error
User avatar
feyd
Neighborhood Spidermoddy
Posts: 31559
Joined: Mon Mar 29, 2004 3:24 pm
Location: Bothell, Washington, USA

Post by feyd »

Do other (relative) links (on this same page) also produce this error? If so, does you page have a base href set (incorrectly)?
User avatar
evilchris2003
Forum Contributor
Posts: 106
Joined: Sun Nov 12, 2006 6:43 am
Location: Derby, UK

Post by evilchris2003 »

I have just clicked every link on the page (about 8 total)

and each works fine in respect to what is supposed to happen altho these dont perform any function other than the standard HREF link
User avatar
feyd
Neighborhood Spidermoddy
Posts: 31559
Joined: Mon Mar 29, 2004 3:24 pm
Location: Bothell, Washington, USA

Post by feyd »

Hmm, okay. I think it's time to see more of the code. Please remember to place it in

Code: Select all

tags so our code highlighter will parse it.
User avatar
evilchris2003
Forum Contributor
Posts: 106
Joined: Sun Nov 12, 2006 6:43 am
Location: Derby, UK

Post by evilchris2003 »

Ok here it is because im a novice large parts are extracted from a book im using
This is the complete page

Code: Select all

<?php # Register.php

$page_title = 'Star Racing Registration';

include ('./header.inc');
?>
<BR><BR> 
<FONT FACE="Tahoma"><B>
<div id="navcontainer">
<ul id="navlist">
<li>| <A HREF="index.php">Home</a></li> |
<li><A HREF="about.php"> About Us</a></li> |
<li><A HREF="tips.php"> Tips</a></li> |
<li><A HREF="past.php"> Past Results</a></li> |
<li><A HREF="account.php"> My Account</A></li> | 
<li><A HREF="faq.php"> FAQ</A></li> | 
<li><A HREF="links.php">Links</A></li> | 
</ul>
</div>
<?php
if (isset($_POST['submit']))
 { // Handle Form

	require_once ('./mysql_connect.php');

	function escape_data ($data)
		{
			global $dbc; 
			if (ini_get('magic_quotes_gpc'))
			{
				$data = stripslashes($data);
			}
			return mysql_real_escape_string ($data, $dbc);
		}
	$message = NULL; //Create Empty message
	
	if (empty($_POST['username']))
		{ $un = FALSE;
		  $message = '<P><FONT COLOR="red">You Need to enter your Username!!</P></FONT>';
		}
		else {
			$un = escape_data($_POST['username']);
		}	

	if (empty($_POST['password']))
		{ $pw = FALSE;
		  $message = '<P><FONT COLOR="red">You Need to 
			enter your Password!!</P></FONT>';
		}
		else {
			if ($_POST['password'] == $_POST['confirmpass'])
				{
				$pw = escape_data($_POST['password']);
				}
				else {
					$pw = FALSE;
					$message = '<P><FONT COLOR="red">Your Password did not match!! Please try again</P></FONT>';
				     }
		}

	if (empty($_POST['first_name']))
		{ $first = FALSE;
		  $message = '<P><FONT COLOR="red">You Need to 
			enter your First name!!</P></FONT>';
		}
		else {
			$first = escape_data($_POST['first_name']);
		}
	
	if (empty($_POST['last_name']))
		{ $last = FALSE;
		  $message = '<P><FONT COLOR="red">You Need to enter your Last name!!</P></FONT>';
		}
		else {
			$last = escape_data($_POST['last_name']);
		}

	if (empty($_POST['address']))
		{ $add = FALSE;
		  $message = '<P><FONT COLOR="red">You Need to 
			enter your Address!!</P></FONT>';
		}
		else {
			$add = escape_data($_POST['address']);
		}

	if (empty($_POST['email']))
		{ $em = FALSE;
		  $message = '<P><FONT COLOR="red">You Need to 
			enter your Email Address!!</P></FONT>';
		}
		else {
			$em = ($_POST['email']);
		}

}

if ($un && $pw && $first && $last && $add && $em)
{
	//Register the user
	
	//Database Query
	$query = "INSERT INTO Customers (username, password, first_name, last_name, address, email, reg_date)
		  VALUES ('$un', PASSWORD ('$pw'), '$first', '$last', '$add', '$em', NOW())";
	$result = @mysql_query ($query); //Execute
	if ($result)
		{
			echo '<P><B>Congratulations you are now registered! <P>';
			echo '<P><B>We have sent an Email to $em to confirm your registration details with us<P><P>';
			include ('./footer.inc');
			exit();
		}
		else
		{
			//If we get problems 
			$message = '<P><B>You could not be registered because of a system error.</P><P>' . mysql_error() . '</P>';
			include ('./footer.inc');
			
		}	
			mysql_close();

		if (isset($message))
		{
			echo '<FONT COLOR="red">' , $message, '</FONT>';
		}
}

?>
<form action="#" METHOD="POST">

<TABLE WIDTH=200 ALIGN=center BORDER=0 CELLSPACING=10 CELLPADDING=15>
<TR>
<TD><B>Username :</TD>
<TD><INPUT TYPE="text" NAME="Username" SIZE="15" MAXLENGTH="40" value="<?php if (isset($_POST['username'])); ?>"></TD></TR>
<TR>
<TD><B>Password :</TD>
<TD><INPUT TYPE="password" NAME="password" SIZE="15" MAXLENGTH="20"></TD></TR>
<TR>
<TD><B>Re-type Password :</TD>
<TD><INPUT TYPE="password" NAME="confirmpass" SIZE="15" MAXLENGTH="20"></TD></TR>
<TR>
<TD><B>FirstName :</TD> 
<TD><INPUT TYPE="text" NAME="first_name" SIZE="15" MAXLENGTH="40" value="<?php if (isset($_POST['first_name'])); ?>"></TD></TR>
<TR>
<TD><B>Surname :</TD> 
<TD><INPUT TYPE="text" NAME="last_name" SIZE="15" MAXLENGTH="40" value="<?php if (isset($_POST['last_name'])); ?>"></TD></TR>
<TR>
<TD><B>Address :</TD>
<TD><TEXTAREA NAME="address" ROWS=5 COLUMNS=20 WRAP ALIGN="top" value="<?php if (isset($_POST['address'])); ?>"></TEXTAREA></TD></TR>
<TR>
<TD><B>Email :</TD> 
<TD><INPUT TYPE="text" NAME="email" SIZE="40" MAXLENGTH="100" value="<?php if (isset($_POST['email'])); ?>"></TD></TR>
<TR><TD COLSPAN=2>
<FONT SIZE=2> <B>Please Check the box to indicate you have read and understood the <A HREF="terms.html" TARGET="_blank">Terms and Conditions</A>
 of using Star Racing <INPUT TYPE="checkbox" NAME="terms" Value="checked"></TD></TR>
<TR>
<TD><INPUT TYPE="submit" VALUE="Register"></TD>
<TD><INPUT TYPE="reset" VALUE="Clear Form"></TD></TR>
</TABLE>

<?php include ('./footer.inc'); ?>
User avatar
RobertGonzalez
Site Administrator
Posts: 14293
Joined: Tue Sep 09, 2003 6:04 pm
Location: Fremont, CA, USA

Post by RobertGonzalez »

Change that $_SERVER['PHP_SELF'] to basename($_SERVER['SCRIPT_FILENAME']). Load the page and before you post it, view the source to see what the page name is that the form is expecting to post to. Make sure that it is the same name as the name of the file you are in and if it is, post it and see what happens. Post your findings back here.
User avatar
evilchris2003
Forum Contributor
Posts: 106
Joined: Sun Nov 12, 2006 6:43 am
Location: Derby, UK

Post by evilchris2003 »

right many thanks that works

only problem now is pointing require_once('./mysql_connect.php'); at the right place on the server
i was thinking it was similar to the redirect using
$_SERVER['HTTP_HOST'] . dirname($_SERVER['foldername']) . "/register.php")

i will attempt to figure that out later work beckons

many thanks for you help and to feyd it is much appreciated
Post Reply