Wyłączenie magic_quotes_gpc
Otóż co możemy poradzić na kłopotliwe magic quotes gpc oraz magic quotes runtime które dodają nam w naszych danych niechciane backslashe za pomocą addslashes
magic_quotes_gpc dodaje nam backslashe w tablicach Get, Post oraz Cookie przed znakami cudzysłowów
magic_quotes_runtime tak samo jak wyżej, ale dodaje backslashe w danych z zewnętrznych źródeł (baza mysql, otwierane pliki)
Za pomocą konfiguracji php
Niestety ten sposób zadziała tylko jeśli możemy konfigurować interpreter php za pomocą plików php.ini, co rzadko jest dostępne na hostingach ale można spróbować stworzyć taki plik w katalogu głównym domeny
Więc modyfikujemy dwa wpisy aby miały wartość Off
magic_quotes_gpc = Off magic_quotes_runtime = Off |
Za pomocą pliku .htaccess
Pamiętaj wszystkie podkatalogi dziedziczą ustawienia pliku .htaccess
Niestety ale i to może nie zadziałać. Otwieramy plik .htaccess w głównym katalogu domeny (jeśli nie istnieje należy go utworzyć) i dodajemy w nim takie linijki:
php_flag magic_quotes_gpc off php_flag magic_quotes_runtime off |
Konfiguracja w skrypcie php
Możemy spróbować także wyłączyć te dwie funkcje bezpośrednio w skrypcie php za pomocą tych dwóch linijek:
ini_set('magic_quotes_runtime', 'Off'); |
Niestety ini_set(‘magic_quotes_gpc’, ‘Off’); dyrektywa magic_quotes_gpc jest typu PHP_INI_PERDIR i nie da się jej zmienić za pomocą ini_set();
W przypadku niemożności wyłączenia
W przypadku gdy nie możemy tego wyłączyć to możemy skontaktować się z adminem lub na początku skryptu dodać taki mały skrypcik który oczyści nasze dane za pomocą stripslashes (niestety dane z plików i baz mysql musimy ręcznie czyścić poprzez stripslashes)
if (get_magic_quotes_gpc ()) { function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $_POST = (isset($_POST) && !empty($_POST)) ? array_map('stripslashes_deep', $_POST) : array(); $_GET = (isset($_GET) && !empty($_GET)) ? array_map('stripslashes_deep', $_GET) : array(); $_COOKIE = (isset($_COOKIE) && !empty($_COOKIE)) ? array_map('stripslashes_deep', $_COOKIE) : array(); $_REQUEST = (isset($_REQUEST) && !empty($_REQUEST)) ? array_map('stripslashes_deep', $_REQUEST) : array(); } |
Który sprawdzi czy magic_quotes_gpc jest włączone i w razie potrzeby oczyści nam jedną z tablic $_COOKIE, $_GET lub $_POST
Aktualny stan magic quotes gpc oraz magic quotes runtime można sprawdzać odpowiednio za pomocą:
get_magic_quotes_gpc() get_magic_quotes_runtime() |
Obydwie funkcje zwracają 1 (true) jeśli opcja jest włączona lub 0 (false) gdy jest wyłączona.
Najnowsze komentarze