Jump to content

n00b here! Undefined variables error


Robbeh

Recommended Posts

Hi Guys,

 

Real PHP newbie here, and slowly getting to grips with it (I did say slowly, right!). Basically, I've created this register page. It's supposed to ask the user for their username, password, password verificiation, email address and then finally to ask the user to select from a tick list of interests (populated via the DB).

 

Here's my code:

<?
include('includes/config.php');
$is_error = 0;

if ($_POST['task'] == 'singup_do') {

      $signup_username = $_POST['user_username'];
      $signup_password = $_POST['user_password'];
      $signup_pwd_again = $_POST['user_password_again'];
      $signup_email = $_POST['user_email_address'];
      $signup_interest = $_POST['signup_interest'];
    
    if ($signup_username == ''){
        $is_error = 1;
        $signup_username_msg = 'The username cannot be left blank';
    }

    if ($signup_password == ''){
       $is_error = 1;
        $signup_password_msg = 'Password field cannot be left blank';
    }

    if ($signup_pwd_again == ''){
        $is_error = 1;
        $signup_pwd_again_msg = 'Password again field cannot be left blank';
    }

    if ($signup_email == ''){
        $is_error = 1;
        $signup_email_msg = 'Email cannot be left blank';
    }
    if ($signup_email != '' && !validateEmailAddress($signup_email)) {
        $is_error = 1;
        $signup_email_msg = 'Incorrect E-mail address';
    }
    if (!is_array($signup_interest) || count($signup_interest)==0){
        $is_error = 1;
        $signup_interest_msg = 'Please select atleast one interest';
    }

    //EMAIL ADDRESS VALIDATION
    if ($signup_password!='' && $signup_pwd_again!='' && $signup_password != $signup_pwd_again) {
        $is_error = 1;
        $error_msg = 'Passwords don\'t match';
    }

    //USERNAME DUPLICATION VALIDATION
    if (!$is_error && $signup_username!='' && !checkUsername($signup_username)) {
        $is_error = 1;
        $signup_username_msg = 'Username already taken, please enter another';
    }

    if (!$is_error) {

       $signup_interest_ids = ( is_array($signup_interest) ? implode(',', $signup_interest) : '' );
       $users_insert = "INSERT INTO users SET user_id='', user_username = '{$signup_username}' , user_password='{$signup_password}', user_email_address = '{$signup_email}', users_interests='{$signup_interest_ids}', user_active='Y', user_date_added=NOW()";
       mysql_query($users_insert);
       header('Location:login.php?signup=success');
    }

}
?>
<html>
<head>
<title>Register</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body >
<div align="center"><BR><BR><BR>
<div style="width:50%; ">
<form name="frmSignup" action="sign_up.php" method="post">
<input type="hidden" name="task" value="singup_do">
<table width="100%" border="0" cellspacing="4" cellpadding="4" align="center">
<? if ($error_msg!='') {?>
<tr><td> </td><td class="tahoma10rednormal"><?=$error_msg?></td></tr>
<? }?>
<tr><td width="20%" valign="top">Username : </td><td><input name="user_username" type="text" class="textfield" size="35" value="<?=$signup_username?>"/><? if ($signup_username_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_username_msg. '</span>' ; } ?></td></tr>
<tr><td valign="top">Password : </td><td><input name="user_password" type="password" class="textfield"  size="35"  value="<?=$signup_password?>"/><? if ($signup_password_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_password_msg. '</span>' ; } ?></td></tr>
<tr><td valign="top">Password (again): </td><td><input name="user_password_again" type="password" class="textfield" size="35" value="<?=$signup_pwd_again?>"/><? if ($signup_pwd_again_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_pwd_again_msg. '</span>' ; } ?></td></tr>
<tr><td valign="top">Email address: </td><td><input name="user_email_address" type="text" class="textfield" size="35" value="<?=$signup_email?>"/><? if ($signup_email_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_email_msg. '</span>' ; } ?></td></tr>
<tr><td colspan="2" ><b>Interests:</b><? if ($signup_interest_msg!='') { echo '  <span class="tahoma10rednormal">' . $signup_interest_msg. '</span>' ; } ?></td></tr>
<tr><td colspan="2">
                        <? 
                         $categories = getCategories(); 
                         $categories_count = count($categories);
                         if (is_array($categories)) { $cat_counter=0; ?>
                            <table width="80%" border="0" cellspacing="4" cellpadding="4">
                            <? foreach($categories as $cats) {
                                if ($cat_counter==0 || ($cat_counter%4) == 0) echo '<tr>';

                                $chk_selected = '';
                                if (is_array($signup_interest) && in_array($cats['id'], $signup_interest)) $chk_selected = "CHECKED"; 
                            ?>
                                <td><input type="checkbox" name="signup_interest[]" value="<?=$cats['id']?>" <?=$chk_selected?>><?=$cats['text']?></td>
                             <? if ($cat_counter==$categories_count || ($cat_counter%4) == 3) echo '</tr>';
                                $cat_counter++;
                                }
                            ?>
                            </table>
                         <? 
                          } else {
                            echo 'No interest added yet.';
                         }
                        ?>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit_btn" value="Sign Up"> <input type="button" name="cancel_btn" value="Cancel" onClick="window.location.href='index.php'"></td>
</tr>
</table>
</div>
</div>
</body>
</html>

 

I'm getting undefined varible errors for:

 

Notice: Undefined variable: error_msg

Undefined variable: signup_username_msg

Notice: Undefined variable: signup_password_msg

Notice: Undefined variable: signup_pwd_again_msg

Notice: Undefined variable: signup_email_msg

Notice: Undefined variable: signup_interest_msg

Notice: Undefined variable: signup_interest

Notice: Undefined variable: signup_interest

 

Which as the canny of you will have noticed, is all of them! Hurrah at least I'm consistent!

 

If anyone could help out a n00b I'd be so so grateful.

 

Thanks!

Rob

 

Link to comment
Share on other sites

The code below should now work, notice the use of the isset construct in the if statements.

 

<?
include('includes/config.php');
$is_error = 0;

if (isset($_POST['task']) && $_POST['task'] == 'singup_do') {

      $signup_username = $_POST['user_username'];
      $signup_password = $_POST['user_password'];
      $signup_pwd_again = $_POST['user_password_again'];
      $signup_email = $_POST['user_email_address'];
      $signup_interest = $_POST['signup_interest'];
    
    if ($signup_username == ''){
        $is_error = 1;
        $signup_username_msg = 'The username cannot be left blank';
    }

    if ($signup_password == ''){
       $is_error = 1;
        $signup_password_msg = 'Password field cannot be left blank';
    }

    if ($signup_pwd_again == ''){
        $is_error = 1;
        $signup_pwd_again_msg = 'Password again field cannot be left blank';
    }

    if ($signup_email == ''){
        $is_error = 1;
        $signup_email_msg = 'Email cannot be left blank';
    }
    if ($signup_email != '' && !validateEmailAddress($signup_email)) {
        $is_error = 1;
        $signup_email_msg = 'Incorrect E-mail address';
    }
    if (!is_array($signup_interest) || count($signup_interest)==0){
        $is_error = 1;
        $signup_interest_msg = 'Please select atleast one interest';
    }

    //EMAIL ADDRESS VALIDATION
    if ($signup_password!='' && $signup_pwd_again!='' && $signup_password != $signup_pwd_again) {
        $is_error = 1;
        $error_msg = 'Passwords don\'t match';
    }

    //USERNAME DUPLICATION VALIDATION
    if (!$is_error && $signup_username!='' && !checkUsername($signup_username)) {
        $is_error = 1;
        $signup_username_msg = 'Username already taken, please enter another';
    }

    if (!$is_error) {

       $signup_interest_ids = ( is_array($signup_interest) ? implode(',', $signup_interest) : '' );
       $users_insert = "INSERT INTO users SET user_id='', user_username = '{$signup_username}' , user_password='{$signup_password}', user_email_address = '{$signup_email}', users_interests='{$signup_interest_ids}', user_active='Y', user_date_added=NOW()";
       mysql_query($users_insert);
       header('Location:login.php?signup=success');
    }

}
?>

<html>
<head>
<title>Register</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body >
<div align="center"><BR><BR><BR>
<div style="width:50%; ">
<form name="frmSignup" action="sign_up.php" method="post">
<input type="hidden" name="task" value="singup_do">
<table width="100%" border="0" cellspacing="4" cellpadding="4" align="center">
<? if (isset($error_msg) && $error_msg!='') {?>
<tr><td> </td><td class="tahoma10rednormal"><?=$error_msg?></td></tr>
<? }?>
<tr><td width="20%" valign="top">Username : </td><td><input name="user_username" type="text" class="textfield" size="35" value="<?=$signup_username?>"/><? if (isset($signup_username_msg) && $signup_username_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_username_msg. '</span>' ; } ?></td></tr>
<tr><td valign="top">Password : </td><td><input name="user_password" type="password" class="textfield"  size="35"  value="<?=$signup_password?>"/><? if (isset($signup_password_msg) && $signup_password_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_password_msg. '</span>' ; } ?></td></tr>
<tr><td valign="top">Password (again): </td><td><input name="user_password_again" type="password" class="textfield" size="35" value="<?=$signup_pwd_again?>"/><? if (isset($signup_pwd_again_msg) && $signup_pwd_again_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_pwd_again_msg. '</span>' ; } ?></td></tr>
<tr><td valign="top">Email address: </td><td><input name="user_email_address" type="text" class="textfield" size="35" value="<?=$signup_email?>"/><? if (isset($signup_email_msg) && $signup_email_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_email_msg. '</span>' ; } ?></td></tr>
<tr><td colspan="2" ><b>Interests:</b><? if (isset($signup_interest_msg) && $signup_interest_msg!='') { echo '  <span class="tahoma10rednormal">' . $signup_interest_msg. '</span>' ; } ?></td></tr>
<tr><td colspan="2">
                        <? 
                         $categories = getCategories(); 
                         $categories_count = count($categories);
                         if (is_array($categories)) { $cat_counter=0; ?>
                            <table width="80%" border="0" cellspacing="4" cellpadding="4">
                            <? foreach($categories as $cats) {
                                if ($cat_counter==0 || ($cat_counter%4) == 0) echo '<tr>';

                                $chk_selected = '';
                                if (is_array($signup_interest) && in_array($cats['id'], $signup_interest)) $chk_selected = "CHECKED"; 
                            ?>
                                <td><input type="checkbox" name="signup_interest[]" value="<?=$cats['id']?>" <?=$chk_selected?>><?=$cats['text']?></td>
                             <? if ($cat_counter==$categories_count || ($cat_counter%4) == 3) echo '</tr>';
                                $cat_counter++;
                                }
                            ?>
                            </table>
                         <? 
                          } else {
                            echo 'No interest added yet.';
                         }
                        ?>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit_btn" value="Sign Up"> <input type="button" name="cancel_btn" value="Cancel" onClick="window.location.href='index.php'"></td>
</tr>
</table>
</div>
</div>
</body>
</html>

Link to comment
Share on other sites

Thanks guys (especially GKWelding) , that's fixed most of the errors, and a couple of others I corrected using the issit statement you taught me (thanks W3Schools!).

 

The error I'm getting now tht I can't seem to fix with the same method is:

Notice: Undefined variable: signup_interest

And this appears once for each 'interest' in the database, so have I done something crazy with my looping?

 

Thanks so much guys,

Rob

Link to comment
Share on other sites

Sorry dude, more problems. I'm now getting Parse error: syntax error, unexpected T_STRING on Line 5

 

Off to W3C to look up what the bloody hell a T_String is...

 

You know how they say some people have programmers minds? Think maybe I'm just not cut out to have one!

Link to comment
Share on other sites

lol thanks dude. Your two seconds start....

 

....

 

NOW!

<?
include('includes/config.php');
$is_error = 0;

if (isset($_POST['task']) && $_POST['task'] == 'singup_do') {

      $signup_username = $_POST['user_username'];
      $signup_password = $_POST['user_password'];
      $signup_pwd_again = $_POST['user_password_again'];
      $signup_email = $_POST['user_email_address'];
      $signup_interest = $_POST['signup_interest'];
    
    if ($signup_username == ''){
        $is_error = 1;
        $signup_username_msg = 'The username cannot be left blank';
    }

    if ($signup_password == ''){
       $is_error = 1;
        $signup_password_msg = 'Password field cannot be left blank';
    }

    if ($signup_pwd_again == ''){
        $is_error = 1;
        $signup_pwd_again_msg = 'Password again field cannot be left blank';
    }

    if ($signup_email == ''){
        $is_error = 1;
        $signup_email_msg = 'Email cannot be left blank';
    }
    if ($signup_email != '' && !validateEmailAddress($signup_email)) {
        $is_error = 1;
        $signup_email_msg = 'Incorrect E-mail address';
    }
    if (!is_array($signup_interest) || count($signup_interest)==0){
        $is_error = 1;
        $signup_interest_msg = 'Please select atleast one interest';
    }

    //EMAIL ADDRESS VALIDATION
    if ($signup_password!='' && $signup_pwd_again!='' && $signup_password != $signup_pwd_again) {
        $is_error = 1;
        $error_msg = 'Passwords don\'t match';
    }

    //USERNAME DUPLICATION VALIDATION
    if (!$is_error && $signup_username!='' && !checkUsername($signup_username)) {
        $is_error = 1;
        $signup_username_msg = 'Username already taken, please enter another';
    }

    if (!$is_error) {

       $signup_interest_ids = ( is_array($signup_interest) ? implode(',', $signup_interest) : '' );
       $users_insert = "INSERT INTO users SET user_id='', user_username = '{$signup_username}' , user_password='{$signup_password}', user_email_address = '{$signup_email}', users_interests='{$signup_interest_ids}', user_active='Y', user_date_added=NOW()";
       mysql_query($users_insert);
       header('Location:login.php?signup=success');
    }

}
?>

<html>
<head>
<title>Register</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body >
<div align="center"><BR><BR><BR>
<div style="width:50%; ">
<form name="frmSignup" action="sign_up.php" method="post">
<input type="hidden" name="task" value="singup_do">
<table width="100%" border="0" cellspacing="4" cellpadding="4" align="center">
<? if (isset($error_msg) && $error_msg!='') {?>
<tr><td> </td><td class="tahoma10rednormal"><?=$error_msg?></td></tr>
<? }?>
<tr><td width="20%" valign="top">Username : </td><td><input name="user_username" type="text" class="textfield" size="35" value="<?=$signup_username?>"/><? if (isset($signup_username_msg) && $signup_username_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_username_msg. '</span>' ; } ?></td></tr>
<tr><td valign="top">Password : </td><td><input name="user_password" type="password" class="textfield"  size="35"  value="<?=$signup_password?>"/><? if (isset($signup_password_msg) && $signup_password_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_password_msg. '</span>' ; } ?></td></tr>
<tr><td valign="top">Password (again): </td><td><input name="user_password_again" type="password" class="textfield" size="35" value="<?=$signup_pwd_again?>"/><? if (isset($signup_pwd_again_msg) && $signup_pwd_again_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_pwd_again_msg. '</span>' ; } ?></td></tr>
<tr><td valign="top">Email address: </td><td><input name="user_email_address" type="text" class="textfield" size="35" value="<?=$signup_email?>"/><? if (isset($signup_email_msg) && $signup_email_msg!='') { echo '<BR><span class="tahoma10rednormal">' . $signup_email_msg. '</span>' ; } ?></td></tr>
<tr><td colspan="2" ><b>Interests:</b><? if (isset($signup_interest_msg) && $signup_interest_msg!='') { echo '  <span class="tahoma10rednormal">' . $signup_interest_msg. '</span>' ; } ?></td></tr>
<tr><td colspan="2">
                        <? 
                         $categories = getCategories(); 
                         $categories_count = count($categories);
                         if (is_array($categories)) { $cat_counter=0; ?>
                            <table width="80%" border="0" cellspacing="4" cellpadding="4">
                            <? foreach($categories as $cats) {
                                if ($cat_counter==0 || ($cat_counter%4) == 0) echo '<tr>';

                                $chk_selected = '';
                                if (isset($signup_interest) && is_array($signup_interest) && in_array($cats['id'], $signup_interest)) $chk_selected = "CHECKED"; 
                            ?>
                                <td><input type="checkbox" name="signup_interest[]" value="<?=$cats['id']?>" <?=$chk_selected?>><?=$cats['text']?></td>
                             <? if ($cat_counter==$categories_count || ($cat_counter%4) == 3) echo '</tr>';
                                $cat_counter++;
                                }
                            ?>
                            </table>
                         <? 
                          } else {
                            echo 'No interest added yet.';
                         }
                        ?>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit_btn" value="Sign Up"> <input type="button" name="cancel_btn" value="Cancel" onClick="window.location.href='index.php'"></td>
</tr>
</table>
</div>
</div>
</body>
</html>

 

Link to comment
Share on other sites

not quite sure wtf is going on there, line 5 looks fine to me.

 

check that line 5 is exactly like it is in your php file as that shouldn't be throwing any kind of error.

 

And I say PHP errors aren't cryptic but wait until you get an 'Unexpected: T_PAAMAYIM_NEKUDOTAYIM'... Meaning you have an extra : somewhere...

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.