Re: Another sessions question

From: Date: Thu, 01 May 2003 12:49:38 +0000
Subject: Re: Another sessions question
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-145767@lists.php.net to get a copy of this message
To be more precise of the problem - I have a form with roughly 20 fields in total over 5 pages (i.e. name, address, email, zip, phone, etc.). if the user fills out these fields incorrectly he would get a message for each (i.e. Not a valid zipcode, Not a valid phone number, etc.) these are stored in a session as $error['zip'] = "Not a valid zipcode", $error['phone'] = "Not a valid phone number", etc. Each time before the validation of the form the $error array is emptied with $error = Array() (it could be unset, but would make no difference to my problem.). If the user were to make further errors, he would then get lets say 'Not a valid email', which is stored in $error['email'], and so on. I got the idea of doing it this way from a PHP tutorial (I think it was an O'Reily book if I'm not mistaken) and seemed to be the easiest way. To carry the error messages in the url I don't think would be a good way to do this, and in any event I already have the session started to hold the input of the user until the end of the form so that it can be written to the database - so as a session is already being used, I might as well use it for the errors as well. One other note, $_SESSION['error'] is a pain - then I would need $_SESSION['error']['zip'], etc. - been there. TIA ----- Original Message ----- From: "Justin French" <justin@indent.com.au> To: "C.R." <odcs@rogers.com>; "PHP General" <php-general@lists.php.net> Sent: Wednesday, April 30, 2003 12:53 AM Subject: Re: [PHP] Another sessions question > 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 > > > > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > >

« previous php.general (#145767) next »