Jump to content


Photo

Registration form help


  • Please log in to reply
8 replies to this topic

#1 zephyrstudios

zephyrstudios
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 10 July 2006 - 07:31 AM

Hello,
I am trying to create a quick little registration page-trying to learn php. I have the form created and get the response-but now I am trying to get the registrars name back in the return statement and am unable to figure out the code to do that. Any help is appreciated.

Thank you
Anne


<?php // register.php

//This script registers a user by storing their information in a text file and creating a directory for them.


if(isset ($_POST['submit'])){//Handle form

$problem = FALSE; //No problems so far

//Check for each value.
if (empty ($_POST['fname'])) {
$problem = TRUE;
print '<p>Please enter a first name!</p>';
}

if (empty ($_POST['lname'])) {
$problem = TRUE;
print '<p>Please enter a last name!</p>';
}



if (!$problem) {

if ($fp = fopen ('./users.txt', 'ab')) {//Open the file

//Create the data to be written
$dir = time() . rand (0, 4596);
$data = $_POST['fname'] . "\t" . $data = $_POST['lname'] . "\t" . $data = $_POST['address'] . "\t" . $dir ."\r\n";

//Write the data and close the file
fwrite ($fp, $data);
fclose ($fp);

//create the directory
mkdir ("./users/$dir");

//Print a message

print '<p>Congratulations  $fname $lname!  /></p>';

} else {//Couldn't write to the file
print '<p>You could not be registered due to a system error.</p>';
}
} else {//Forgot a field
print '<p> Please try again!</p>';

}
} else {//Display again

//Leave PHP and display the form
?>

<form action="register.php" method="post">
<br />
<table width="100%"  border="0">
  <tr>
    <th width="11%" scope="col"><div align="left"><strong>First Name: </strong></div></th>
    <th width="81%" scope="col"><div align="left">
      <input type="text" name = "fname" size="25" />
      </div></th>
    <th width="4%" scope="col">&nbsp;</th>
    <th width="4%" scope="col">&nbsp;</th>
  </tr>
  <tr>
    <td><div align="left"><strong>Last Name: </strong></div></td>
    <td><div align="left">
      <input type="text" name="lname" size="25" />
    </div></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><div align="left"><strong>Address: </strong></div></td>
    <td><div align="left">
      <input type="text" name="address" size="35"/>
    </div></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><strong>City:</strong></td>
    <td><input type="text" name="city" size="35"/></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
 
</table>
<br />
<br />
<input type="submit" name="submit" value="Register" />
</form>
<?php

#2 Daniel0

Daniel0
  • Staff Alumni
  • Advanced Member
  • 11,956 posts

Posted 10 July 2006 - 08:13 AM

Here you go:
<?php // register.php

//This script registers a user by storing their information in a text file and creating a directory for them.


if(isset ($_POST['submit'])) //Handle form
{
	$problem = FALSE; //No problems so far
	
	//Check for each value.
	if(empty($_POST['fname']))
	{
		$problem = TRUE;
		print '<p>Please enter a first name!</p>';
	}
	
	if(empty($_POST['lname']))
	{
		$problem = TRUE;
		print '<p>Please enter a last name!</p>';
	}
	
	if(!$problem)
	{
		if($fp = fopen('./users.txt', 'ab')) //Open the file
		{
			//Create the data to be written
			$dir = time().rand(0, 4596);
			$data = $_POST['fname']."\t".$data = $_POST['lname']."\t".$data = $_POST['address']."\t".$dir."\r\n";
			
			//Write the data and close the file
			fwrite($fp, $data);
			fclose($fp);
			
			//create the directory
			mkdir("./users/$dir");
			
			//Print a message
			print "<p>Congratulations  {$fname} {$lname}!  /></p>";
		}
		else { //Couldn't write to the file
			print '<p>You could not be registered due to a system error.</p>';
		}
	}
	else { //Forgot a field
		print '<p> Please try again!</p>';
	}
}
else { //Display again

//Leave PHP and display the form
?>

<form action="register.php" method="post">


<table width="100%"  border="0">
  <tr>
    <th width="11%" scope="col"><div align="left"><strong>First Name: </strong></div></th>
    <th width="81%" scope="col"><div align="left">
      <input type="text" name = "fname" size="25" value='<?=$_POST['fname']?>' />
      </div></th>
    <th width="4%" scope="col">&nbsp;</th>
    <th width="4%" scope="col">&nbsp;</th>
  </tr>
  <tr>
    <td><div align="left"><strong>Last Name: </strong></div></td>
    <td><div align="left">
      <input type="text" name="lname" size="25" value='<?=$_POST['lname']?>' />
    </div></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><div align="left"><strong>Address: </strong></div></td>
    <td><div align="left">
      <input type="text" name="address" size="35" value='<?=$_POST['address']?>'/>
    </div></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><strong>City:</strong></td>
    <td><input type="text" name="city" size="35" value='<?=$_POST['city']?>'/></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
 
</table>


<input type="submit" name="submit" value="Register" />
</form>

<?php
}
?>


#3 zephyrstudios

zephyrstudios
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 11 July 2006 - 04:15 AM

Thank you for helping me-I am only seeing that you added the

{$fname} {$lname} and that did not work-is there something else I am missing??? Thank you in advance for your time and patience.

Anne

#4 akitchin

akitchin
  • Staff Alumni
  • Advanced Member
  • 2,516 posts
  • LocationCalgary, AB, Canada

Posted 11 July 2006 - 04:44 AM

the problem is that unless register_globals is on (which it shouldn't and needn't be), $fname and $lname will not be registered as local variables.  try doing one of the following:

1)  setting $fname = $_POST['fname'] and likewise for last name, or
2)  using {$_POST['fname']} in place of $fname.

i'd suggest the latter, as it is better practice in my opinion (rather than crowding the namespace with useless variables).  note that the braces are needed when using array values, since otherwise the single quotes are taken as literals (as far as i remember).

hope this helps.

#5 zephyrstudios

zephyrstudios
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 11 July 2006 - 05:24 AM

That helped alot!!! :)    This is what worked:

'.($_POST['fname']).'

But now I am trying to add their last name.  I have tried

'.($_POST['fname']['lname']).' 

'.($_POST['fname']).' '.($_POST['lname'].'

I keep getting errors. i am looking in alot of books trying to solve this and I am sure it is very simple-just not simple to a newbie.  Thanks again in advance for your time and patience.

Anne

#6 akitchin

akitchin
  • Staff Alumni
  • Advanced Member
  • 2,516 posts
  • LocationCalgary, AB, Canada

Posted 11 July 2006 - 05:35 AM

perhaps i can go ahead and fix the offending line for you:

print '<p>Congratulations '.$_POST['$fname'].' '.$_POST['lname'].'!  /></p>';

when exiting single quotes, you may include variables as you normally would, without parentheses.

let me know how this works out.

#7 zephyrstudios

zephyrstudios
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 11 July 2006 - 04:05 PM

I am sorry I can't figure this out.....frustrating!!  I tried what you had and know only the last name shows up, I even took the dollar sign out from the fname and still ony the last name works.  Anymore help is greatly appreciated.

Thank you

Anne

#8 Daniel0

Daniel0
  • Staff Alumni
  • Advanced Member
  • 11,956 posts

Posted 11 July 2006 - 04:08 PM

What exactly are you trying to do then?

#9 zephyrstudios

zephyrstudios
  • New Members
  • Pip
  • Newbie
  • 6 posts

Posted 11 July 2006 - 04:11 PM

I am sorry.... I got it. I found a mistake in my code that I had changed during a test. Thank you very much for your help. I am so excited I was able to get this to work with a lot of help from this forum!!!!!!

Thank you for having a place like this.

Anne




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users