DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Override register globals... (http://www.devprotalk.com/showthread.php?t=1553)

dee 26. 09. 2006. 20:51

Override register globals...
 
ako ikad iko naidje sa slicnim problemom, neka ne izgubi zivaca i vremena ko ja danas...

alzo...

dobio na instalaciju neki prastari CMS koji radi samo sa register_globals=on. da stvar bude interesantnija, instalira se na php/MySQL 5/5 i Apache 2 (koji za php_flag u .htaccess vraca Server Error)...

i nakon lutanja i googlanja, ispade ovaj komadic koda koji dodan u npr. config (kojeg inkludaju sve skripte aplikacije) rjesava stvar:

Citat:

if (!ini_get('register_globals')) {
$superglobals = array($_SERVER, $_ENV,
$_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {

array_unshift($superglobals, $_SESSION);
}
foreach ($superglobals as $superglobal) {
extract($superglobal, EXTR_SKIP);

}
}
pa ako ikome ustedi minutu vremena i milimetar zivaca - vrijedi :)

Ilija Studen 26. 09. 2006. 21:02

Ovo treba zakonom zabraniti. Mislio sam da su diskusije na ovu temu zatvorene pre dve godine?

dinke 26. 09. 2006. 21:09

Ma daj, ne znam da li sam nesto propustio, ali koliko se razumem u medicinu ovo:

PHP kôd:

ini_set('register_globals'1); 

resava sve probleme.

Edit
Ah, ipak ne ... PHP_INI_PERDIR

@Ilija
Ne bi mi verovao koliko se starih aplikacija/sajtova vrti jos uvek live, a nemaju svi volje/novca da ispravljaju taj kod.

dee 26. 09. 2006. 21:19

Citat:

Originalno napisao dinke
Ma daj, ne znam da li sam nesto propustio, ali koliko se razumem u medicinu ovo:

PHP kôd:

ini_set('register_globals'1); 

resava sve probleme.

ne sa register globals...

@Ilija
sorry, nisam ovo mislio stavit kao diskusiju jer je o ovome receno sve i preko vise toga. nego bas ovo sto dinke kaze, naleti se na takav slucaj i onda razbijaj glavu sta ces -> smisljat/trazit ovakva rjesenja ili prepisivat varijable u par hiljada linija koda.

al ko sto rekoh, namjera mi nije bila diskusija nego cisto arhiviranje jednog konkretnog slucaja ako ikad ikome bude zatrebalo. that's all :)

Ilija Studen 26. 09. 2006. 21:38

Opušteno. Shvatam i zašto si postavio temu, a i da imaju tone koda koji još uvek koristi tehnike koje su odavno "obeležene" kao zastarele ili potencijalno opasne.

Btw, postoji par načina kako da umetneš promenjive u globalni scope - ekstraktovanjem promenljivih dok si u njemu (što si ti i uradio) ili da ih umetneš u $GLOBALS niz. Iako nije diskusija ipak savet: ne radite to. Što čistiji globalni scope to je lakše, posebno ako su u pitanju složenije aplikacije koje treba održavati na duže staze.

dinke 26. 09. 2006. 21:47

Btw, Apache2 obicno vraca "internal server error" ako php podesavanja u .htaccess fajlu ne uokviris sa <IfModule ... na primer :

<IfModule mod_php5.c>
php_flag register_globals on
</IfModule>

cvele 26. 09. 2006. 23:34

mnogo jednostavno
PHP kôd:

if(!empty($_GET)) extract($_GET);
if(!empty(
$_POST)) extract($_POST);
if(!empty(
$_COOKIE)) extract($_COOKIE);
if(!empty(
$_SESSION)) extract($_SESSION); 



Vreme je GMT +2. Trenutno vreme je 18:59.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.