By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,290 Members | 1,363 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,290 IT Pros & Developers. It's quick & easy.

Accessing $_SESSION variables in PHP5 needs isset() first?

P: n/a
Greetings everyone!

I'm porting everything to PHP5. I have session variables in all of my
web application. Until PHP5 I was using session variables like:

if ($_SESSION['foo'] == 'Bar') {
$value = 5;
}

$_SESSION['foo'] is of course set on some other script. But this now
generates a NOTICE error:

NOTICE: Undefined index: foo in ....... on line ...

The only way I can think of to get around this (without, of course,
turning Notices off in the php.ini) is to first use isset on the
session variable, like this:

if ( isset($_SESSION['foo']) && $_SESSION['foo'] == 'Bar' ) {
$value = 5;
}

Is this really necessary? Or is there any other way of doing this in
PHP5? IMHO the whole point of session variables is that they don't
really have to be defined in one particular script, so why that
NOTICE?... Do I really need the superfluous call to isset()?
Jul 17 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Hi,

On 27 Jul 2004 15:24:48 -0700, no****@pedrofonseca.com (Pedro Fonseca)
wrote:
Greetings everyone!

I'm porting everything to PHP5. I have session variables in all of my
web application. Until PHP5 I was using session variables like:

if ($_SESSION['foo'] == 'Bar') {
$value = 5;
}

$_SESSION['foo'] is of course set on some other script. But this now
generates a NOTICE error:

NOTICE: Undefined index: foo in ....... on line ...

I think default error_reporting() has changed. Look up that function.
The only way I can think of to get around this (without, of course,
turning Notices off in the php.ini) is to first use isset on the
session variable, like this:

if ( isset($_SESSION['foo']) && $_SESSION['foo'] == 'Bar' ) {
$value = 5;
}

Is this really necessary?
I personally find error_reporting very helpful, because it tells you
some of the typos and AFAIK in PHP5 even more of them.

However, you need to use isset everywhere. I think it is worthwhile.
Or is there any other way of doing this in
PHP5? IMHO the whole point of session variables is that they don't
really have to be defined in one particular script, so why that
NOTICE?... Do I really need the superfluous call to isset()?

HTH, Jochen

--
Jochen Daum - Cabletalk Group Ltd.
PHP DB Edit Toolkit -- PHP scripts for building
database editing interfaces.
http://sourceforge.net/projects/phpdbedittk/
Jul 17 '05 #2

P: n/a

"Pedro Fonseca" <no****@pedrofonseca.com> wrote in message
news:15**************************@posting.google.c om...
The only way I can think of to get around this (without, of course,
turning Notices off in the php.ini) is to first use isset on the
session variable, like this:

if ( isset($_SESSION['foo']) && $_SESSION['foo'] == 'Bar' ) {
$value = 5;
}

Is this really necessary? Or is there any other way of doing this in
PHP5? IMHO the whole point of session variables is that they don't
really have to be defined in one particular script, so why that
NOTICE?... Do I really need the superfluous call to isset()?


One thing you can do with PHP5 is wrap $_SESSION in an object and access the
element as properties:

class DataObject {
private $values;
function __construct($values, $default = array()) {
$this->values = array_merge($default, $values);
}
function __get($name) {
return isset($this->values[$name]) ? $this->values[$name] : null;
}
}

$Session = new DataObject($_SESSION);

if($Session->foo == 'bar') {
...
}

Property access is one of the neatest features of PHP5. Has the potential of
majorly decluttering your code. In an expanded version of the class above,
for example, I have the get function automatically escaping the property
value based on a suffix. $Post->foo_html would be
htmlspecialchars($_POST['foo']), $Post->foo_sql would be
mysql_escape_string($_POST['foo']), etc.

Unfortunately it seems to be one of the buggier features. My code blew up
when I had an array in there :-(
Jul 17 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.