Czemu nie działają mi zmienne globalne po upgradzie?
Z PHPEdia.pl
włączenie zmiennych globalnych
Prawdopodobnie przeszedśeś z bardzo starej wersji php na znacznie nowszć (np. skok z 4.0 do 4.3 bądź 5.0). Powodem takiego stanu rzeczy jest wyśćczenie dyrektywy register_globals w pliku php.ini. Aby powrżcić do używania zmiennych globalnych otwżrz plik konfiguracyjny php i znajdż linić
register_globals = Offi zmieś 'Off' na 'On'
Uwagi
pamiętaj - korzystanie z tablic superglobalnych (między innymi $_POST), jest o wiele bezpieczniejsze niż korzystanie ze zmiennych globalnych, dlaczego? Używając np. zmiennej $moje_pole nie masz pewności czy pochodzi ona z sesji czy z formularza wysłanego metodą GET bądź POST, stąd też w bardzo łatwy sposób można spowodować 'wysypanie się' aplikacji.
błędy
przykład zśego użycia zmiennych globalnych:
<form method="post" action="<?php echo $PHP_SELF; ?>"> <input type="text" name="subject" /> Temat<br /> <textarea name="body"></textarea> Treść<br /> <input type="submit" /></form> <?php if( isset($subject) && strlen($subject) > 2 ) { if( strlen($body) > 2 ) { @mail( 'adres@odbiotcy.pl', $subject, 'Wiadomosc ze strony:'. $body ); } else { echo 'Podaj treść listu'; } } ?>
W takim przypadku autor zaśożyś, że użytkownik wypeśni formularz i go prześle moetodć POST. Jednak w bardzo łatwy sposób możemy go 'oszukać'. Wystarczy w adresie dopisać parć zmiennych, tak aby przybraś on postać: www.adres.pl/mail.php?subject=temat&body=tresc... aby wysłać list.
Jest to element FAQ, czyli zestawienia odpowiedzi na najczęściej zadawane pytania.
Zestawienie: Informacje | Podstawy PHP | Porady praktyczne | Pytania z forum | Bezpieczeństwo
