Tack för berömmet, det var jag som skrev den artikeln! :D
En sessionsvariabel är global by default, precis som du säger. Ur säkerhetssynpunkt är det ingen fara, för jag antar att du menar globala variabler i det aktuella dokumentet? Det är det som global används till, för man kan inte sätta globala variabler över flera dokument - utom med sessioner.
Vad menar du egentligen med global $username? Eftersom att en sessionvariabel är global, så kan du använda den utan problem i funktioner. Dock kan du inte sätta värden på den globala, associativa arrayen, utan du måste registrera en ny sessionvariabel, förslagsvis med samma namn, med det nya värdet.
Exempel:
<?php
session_start ();
if ( $HTTP_SESSION_VARS['username'] != "" ) {
ändraUsername ();
}
else {
echo "Du har ingen session, maaan!";
}
function ändraUsername () {
$username = "Nytt";
session_register ( "username" );
}
?>
Såg nu att du använde dig av:
if ( !$HTTP_SESSION_VARS['username'] )...
Det är inte alls säkert för fem öre, eftersom att ( Enligt php.net ) alla globala, associativa arrayer har värden i sig. Man måste alltså kolla så att platsen inte är tom. Dvs:
if ( $HTTP_SESSION_VARS['username'] != "" )...
En variabel för $HTTP_SESSION_VARS är alltid satt, därför funkar inte not-operatorn.
------------------
SPiN, bjorne.w@telia.com
-- Wise men talk because they have something to say; fools, because they have to say something. --