<?php $zapytanie = \"select * from ksiazki\"; ?>
powyzszy kod pochodzi z ksiazki 'php i MySql Vademecum profesjonalisty'. jest tam przykladowa baza danych ksiazek, ktora poprostu dziala nieprawidlowo jak jak sie ją odpali.
tzn. jezeli w bazie mamy tytul ksiazki skladajacy sie z 'dziesieciu slaszy': \\\\\\\\\\ to po zapytaniu SELECT i zastosowaniu stripslashes na stonie otrzymuje tylko 5 slaszy \\\\\.
Z tego typu przeksztaleceniami (stripslashes) spotkalem sie w roznych przykladach w internecie oraz w kodach prezentowanych chodziazby na tym forum (jest tego mnostwo).
przed napisaniem tego postu przeszukalem dobrze forum i nikt nie poruszal tej kwestii. jedyne wytlumaczenia z jakimi sie spotkalem to takie ze trzeba uzywac stripslashes poniewaz przy wpisie do bazy danych dalismy addslashes w celach jak wiadomo bezpieczenstwa (kazdy w temacie wie o co chodzi). ale moim zdaniem to addslashes sie traci w momencie wpisu danych do bazy ktora wszelkie znaki \\ \" \' pomija i zastepuje pojedynczymi.
Przykladowo:
uzytkownik w formularzu wpisuje 'tytul' ksiazki zawierajacy te 10 slaszy czyli: \\\\\\\\\\
potem odczytujemy to przez $_POST['tytul'], uzywamy na zmiennej funkcji addslashes() (oczywiscie wszelkie magic_quotes_ w konfigu na Off).
wynikiem czego jest otrzymanie zmiennej zawierajacej 20 slaszy, ktorą taką to zmienna mozemy wstawic bezpiecznie do bazy przy pomocy INSERT np:
INSERT INTO `ksiazki` (`id`,`tytul`) VALUES (NULL, '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\');
gdzie pole tytul jest dla przykladu typu VARCHAR(10) i wszytko dziala poprawnie.
przy odczycie z bazy zgodnie z kodem php przytoczonym powyzej server mysql zwraca do zmiennej $wiersz['tytul'] lancuch 10 znakow (tych 10 slaszy) tzn. nie formatuje tekstu wyjscowego za pomoca '\'. podobnie wszelkie apostrofy i cydzyslowy zajmuja po jednym bajcie i nie sa one w jakis sposob dodatkowo 'sleszowane'. Wiec stosowanie tutaj funkcji stripslashes jest moim zdaniem bez sensu, bo jak napisalem wczesniej robi sie z pierwotnego tytulu tylko '5 slaszy' ktore widzi uzytkownik na stronie www.
sie rozpisalem ale mysle ze ktos zrozumie o co mi chodzi bo po przejrzeniu kilku ksiazek oraz wielu skryptow na sieci mam metlik w glowie jezeli chodzi o te sprawe... wiec jak ktos ma jakies wyjasnienia to prosze o odpwiedz .... dzieki