|
Posted by Christoph Burschka on 11/16/06 07:03
Christoph Burschka wrote:
> linda wrote:
>> Sigh thought I'd found it, but no, also noticed I had a closing
>> bracket after the included header, but that did nothing the hunt still
>> goes on... this is driving me mad!
>>
>> "linda" <n0spamF0rme@tiscali.co.uk> wrote in message
>> news:455b839d$1_3@mk-nntp-2.news.uk.tiscali.com...
>>> Can anyone see the error! I've been looking for over three hours and
>>> I just can find it. I'm getting a parse error. I just can't find
>>> it, what am I missing? Sigh.... I hoping someone else can see it.
>>>
>>> Best wishes,
>>> Linda
>>>
>>> <?php
>>> $title = 'Register';
>>> include_once 'includes/header.html';
>>> ?>
>>> //Check if the form has been submitted.
>>> if (isset($_POST[submitted])) {
>>>
>>> $errors = array(); //Initialize error array.
>>>
>>> //Check for a name.
>>> if (empty($_POST['name'])) {
>>> $errors[] = 'You forgot to enter your name.';
>>> }
>>>
>>> //Check for an email address.
>>> if (empty($_POST['email'])) {
>>> $errors[] = 'You forgot to enter your email address.';
>>> }
>>>
>>> //Check for a password and match against the confirmed password.
>>> if (empty($_POST['password1'])) {
>>> if ($_POST['password1'] !=$_POST['password2']) {
>>> $errors[] = 'Your passwords did not match.';
>>> }
>>> } else{
>>> $errors[] = 'You forgot to enter your password.';
>>> }
>>>
>>> //Register the user here.
>>>
>>>
>>>
>>>
>>> //Send them an email.
>>> $body = "Thank you for registering with us.\n\nYour Password Is:
>>> '{$_POST['password1']}'.\n\nSincerely Admin\nMy domain name";
>>> mail ($_POST['email']), 'Thank you for registering', $body, 'From:
>>> admin@mydomain.co.uk';
>>>
>>> echo '<h2>Thank You!</h2>
>>> <p>You are now registered. An email has been sent to your email
>>> address confirming the information.<br />';
>>>
>>> //Report the errors.
>>> }else{
>>>
>>> echo '<h2>Error!</h2>\n
>>> <p>The following error(s) occured:<br /></p>';
>>>
>>> foreach ($errors as $msg) { //Print each error message.
>>> echo " - $msg<br />\n";
>>> }
>>> echo '</p><p>Please correct the fields.<br /></p>';
>>> } else{
>>> //Display the form.
>>> ?>
>>>
>>> <fieldset>
>>> <legend><h2>Register For An Account</h2></legend>
>>> <form action="register.php" method="POST">
>>> <input type="hidden" value="TRUE" name="submitted" />
>>> <p align="left">Please ensure the email you supply is valid, as
>>> accounts where email confirmations bounced back after registration
>>> <b>are deleted</b>!</p>
>>> <table>
>>> <tr>
>>> <td>Name: </td>
>>> <td><input type="text" name="name" size="50" /></td>
>>> </tr>
>>> <tr>
>>> <td>Email Address: </td>
>>> <td><input type="text" name="email" size="50" /></td>
>>> </tr>
>>> <tr>
>>> <td>Password: </td>
>>> <td><input type="password" name="password1" /></td>
>>> </tr>
>>> <tr>
>>> <td>Confirm Password: </td>
>>> <td><input type="password" name="password2" /></td>
>>> </tr>
>>> <tr>
>>> <td COLSPAN="2" align="right"><input type="submit" value="Register"
>>> /></td>
>>> </tr>
>>> </table>
>>> </form>
>>> </fieldset>
>>>
>>>
>>> <?php
>>> }//Close the main IF_ELSE.
>>> include_once 'includes/footer.html';
>>> ?>
>>>
>>
>>
>
> There are several issues here. Not all of them cause parsing errors, but
> they will make the script work other than probably intended.
>
> 1. mail ($_POST['email']), 'Thank you for registering', $body, 'From:
> admin@mydomain.co.uk';
>
> The closing paranthesis needs to be moved.
>
> 2. The if-else tree is quite tricky to see through. This is probably why
> you hadn't noticed the double else around line 53. There are some other
> problems (take a close look at the password validation; the way it's
> now, the form will always claim you didn't enter a password), but this
> is the only one that causes a parsing error.
>
> 3. You are adding to an array of error messages, and you have code in
> place that will echo them, but you never check if errors occurred: The
> user will be registered and the mail sent regardless of errors.
>
> I had some time just now to fix the script up a bit (along with a few
> minor things like code indentation and validating the email address). It
> worked and sent an email when I tested it.
>
> I'm not familiar with newsgroups so I don't know if I can send
> attachments here. If not, I'll paste it into the next message.
>
In case that didn't work, here it is again, pasted:
<?php
$title = 'Register';
include_once('includes/header.html');
//Check if the form has been submitted.
if (isset($_POST['submitted'])) {
$errors = array(); //Initialize error array.
//Check for a name.
if (empty($_POST['name'])) {
$errors[] = 'You forgot to enter your name.';
}
//Check for an email address.
if (empty($_POST['email'])) {
$errors[] = 'You forgot to enter your email address.';
} else {
if (!preg_match('/^[A-Za-z0-9\._\-+]+@[A-Za-z0-9\-\._]+/',$_POST['email'])) {
// won't catch all errors, but the most blatant ones.
$errors[] = '"'.$_POST['email'].'" is not a valid email address.';
}
}
//Check for a password and match against the confirmed password.
if (empty($_POST['password1'])) {
$errors[] = 'You forgot to enter your password.';
}
else if ($_POST['password1'] !=$_POST['password2']) {
$errors[] = 'Your passwords did not match.';
}
if (!$errors) {
//Register the user here.
//Send them an email.
$body = "Thank you for registering with us.\n\nYour Password Is:
'{$_POST['password1']}'.\n\nSincerely Admin\nMy domain name";
mail ($_POST['email'], 'Thank you for registering', $body, 'From:
admin@mydomain.co.uk');
echo '<h2>Thank You!</h2>
<p>You are now registered. An email has been sent to your email address
confirming the information.<br />';
}
else {//Report the errors.
echo '<h2>Error!</h2>\n
<p>The following error(s) occured:<br /></p>';
foreach ($errors as $msg) { //Print each error message.
echo " - $msg<br />\n";
}
echo '</p><p>Please correct the fields.<br /></p>';
}
}
if (!isset($_POST['submitted']) || $errors) { //Either errors occurred, or it's not submitted yet.
//Display the form.
?>
<fieldset>
<legend><h2>Register For An Account</h2></legend>
<form action="" method="POST">
<input type="hidden" value="TRUE" name="submitted" />
<p align="left">Please ensure the email you supply is valid, as accounts
where email confirmations bounced back after registration <b>are
deleted</b>!</p>
<table>
<tr>
<td>Name: </td>
<td><input type="text" name="name" size="50" value="<?=$_POST['name']?>" /></td>
</tr>
<tr>
<td>Email Address: </td>
<td><input type="text" name="email" size="50" value="<?=$_POST['email']?>" /></td>
</tr>
<tr>
<td>Password: </td>
<td><input type="password" name="password1" /></td>
</tr>
<tr>
<td>Confirm Password: </td>
<td><input type="password" name="password2" /></td>
</tr>
<tr>
<td COLSPAN="2" align="right"><input type="submit" value="Register" /></td>
</tr>
</table>
</form>
</fieldset>
<?php
}
include_once('includes/footer.html');
?>
--
CB
[Back to original message]
|