Re: Another sessions question
| From: | Justin French | Date: | Wed, 30 Apr 2003 04:53:24 +0000 |
| Subject: | Re: Another sessions question | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-145732@lists.php.net to get a copy of this message | ||
1. Perhaps you are confusing the uses of arrays and vars?
Are you wanting to do this:
$error = 'your password was not correct'; //good
Or this:
$error['your password was not correct'] = '';
// bad way to do this
Or this:
$error['login'] = 'your password was not correct'
// good
Or this:
$error[] = 'your password was not correct'
// good way to queue up multiple errors
2. Clearing the array with $error = Array() doesn't clear the array, it just
empties it, which is why you're getting "Array" on the page. You should be
clearing the array with
unset($error);
3. In regards to sessions, I don't think you NEED to be using sessions for
the errors... they could be passed around in the URL.
4. Your code will be a lot cleaner, more secure, and debugging will be a
little bit easier if you refer to variables with their superglobal arrays
$_SESSION['error'] instead of $error;
$_GET['error'] instead of $error;
etc etc.
Similarly
$_SESSION['error'] = array('foo','bar');
$_SESSION['error'] = 'you did not enter a username';
unset($_SESSION['error']);
etc etc.
Justin
on 01/05/03 3:54 PM, C.R. (odcs@rogers.com) wrote:
> I have a login, registration, update, and a form if you forget your
> password. I am using sessions to control the login and error messages. So
> this is my problem
>
> When a user enters the login page a session is started, if the user enters
> the wrong login info they will get an error message which is set in a
> session variable called $error['whatever'] (this will change depending on
> the error). If the user then decides he should register first, and goes to
> the register page - he gets a message on the page that simply says 'Array'.
> This is because the session is still active and $error['whatever'] is still
> set, although I've cleared the array with - $error = array(); On each page
> I have something like if($error) { echo $error['whatever']; }. I have used
> done it this way to make things more uniform and understandable, but I may
> also have shot myself in the foot - is there a way to get around this
> without having to change the session variables for each of these pages.
>
> I hope I have explained this properly, or for that matter used sessions
> properly - I am still trying to learn about sessions and problems like this
> keep popping up.
>
> TIA
>
>