|
Posted by linda on 11/17/06 01:51
"Christoph Burschka" <christoph.burschka@rwth-aachen.de> wrote in message
news:4s2gpdFtml9lU1@mid.dfncis.de...
> 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
Hi Christoph,
I had planed on putting in some more validation, but the form was giving me
head ache getting it to work. lol not enough sleep of late. So I decided to
do that later, the site wont be going live yet for months, until I'm sure
I've covered all the bases that need to be addressed. I realised after
reading steve's post I'd made some errors, and also found that I didn't call
the error checking. But thank you for your kind response! I'm very new to
php/mysql so it's been a real upward struggle, but I'm getting there. This
news group has been a life saver on more than one occasion. And hopefuly
after I've thanked you it will come to my sanity again. As I'm about to
post another question. lol..
Best wishes,
Linda
Navigation:
[Reply to this message]
|