Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  5 731
Kom til å tenke på en ting nå som jeg holder på å scripte dvd scripte mitt....

med tanke på at flere host nå fremover har planer å gå over til å ha register_globals on; i php.ini filen, som i teorien gjør at de fleste script må skrives litt om....

hva bør man scripte sitt script i da? med denne nye standarden, eller den "gode gamle" som vistnok har flere sikkerhetshull...
du bør uansett bruke de arrayene som inneholder get/post/cookie-variabler, fordi det er sikrere og det er mye enklere å holde styr på.. fra og med versjon 4.2 heter vel disse $_SESSION, $_POST og $_GET eller noe.. husker ikke, har ikke drevet med php på en stund..
MINST 12år
tore-'s Avatar
Trådstarter
har sjekket litt rundt om de forskjellige ja, men kan ikke se noen downsides med å bruke det, bortsett fra hvis brukeren er nødt å ha globals off på serveren sin....


edit: men er de globale arrayene bakoverkompitable?

tenker på hvis serveren har register globals off, og script inneholder superglobale arrays...
Sist endret av tore-; 7. august 2002 kl. 17:50.
altså, slik funker det: i det "supersmarte" script-språket php blir variabler fra query-string, headere og cookies automatisk lagret i "vanlige" (lokale) variabler hvis register_globals er satt til "on". dvs. hvis query stringen er "foo=bar&tiss=nam", inneholder $foo stringen "bar", og $tiss stringen "nam".

uansett om register_globals er satt til "off" eller "on", blir disse lagret i "superglobale" arrays, som heter $HTTP_*_VARS, der * er GET, POST osv. altså, $HTTP_GET_VARS['foo'] inneholder stringen "bar". GET fordi det var fra en query string.

men dette var altså før versjon 4.2.0 (eller kanskje det var 4.1.0), der de fant ut at dette (register_globals) var veldig usikkert og mange idioter ikke skjønte at man ikke burde bruke slike variabler til f.eks. å sjekke om brukere var logget inn. problemet var at om man brukte f.eks. bare $foo i stedet for $HTTP_SESSION_VARS['foo'], kunne man ikke skille mellom session-variabler, get-variabler osv.. dermed kunne noen h4x3 det fine login-scriptet ved simpelthen å sende en variabel med query stringen.

i versjonere senere enn dette er register_globals automatisk satt til "off", slik at man _må_ bruke de superglobale arrayene til å hente ut variabler fra query string, cookies osv. i disse versjonene er navnene på de superglobale arrayene forkortet, slik at folk skal "gidde" å bruke dem.. de heter $_SESSION, $_GET, $_POST osv.

altså: med versjoner som er eldre enn 4.2.0 (eller var det 4.1.0? :), bruk $HTTP_*_VARS, og med nyere versjoner, bruk $_GET, $_POST osv.. og la register_globals være "off".

edit: skrudde av de ekle smiley-bildene :)
MINST 12år
tore-'s Avatar
Trådstarter
takker! nå forsto jeg det mye bedre.... men jeg er fremdeles usikker på om jeg skal følge den nye normen, med tanke på at public servere ikke alltid kjører siste versjon av php
hvis du vil at scriptene skal funke uansett hvilken versjon som kjøres, tror jeg du kan bruke $HTTP_*_VARS, som støttes både av versjoner før og etter at register_globals ble slått av. men det er ikke noe garanti for at de vil kunne brukes i all fremtid..