![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 21.02.2004 Skąd: Tychy Ostrzeżenie: (0%)
|
mam konkretne pytanie: czy jest potrzebne i w jakim celu, stosowanie funkcji stripslashes() do ciagów otrzymanych z bazy mysql np. w takim przykladowym kodzie:
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:
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 |
|
|
|
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%)
|
Addslashes dodaje slashe, żeby się zapytanie nie rozsypało, a w bazie danych tego nie zobaczysz, więc stripslashes raczej nie jest na miejscu w tym przypadku. Z resztą sam do tego doszedłeś...
|
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 20:08 |