Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Problem z addslashes
cezarek
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 14.11.2010

Ostrzeżenie: (0%)
-----


Witam,
mam taki kod:
  1. $id= addslashes(trim($_POST["id"]));
  2. $zmienna = addslashes(trim($_POST["zmienna"]));
  3.  
  4. $zapytanie = "update tabela
  5. set zmienna = '$zmienna'
  6. where id= '$id'";
  7. $wynik = mysql_query($zapytanie) or die ("Błąd nr ".mysql_errno().": ".mysql_error()."!");
  8. echo "Zmienna ".stripslashes($zmienna)." została zmieniona.";

gdzie $zmienna to ścieżka dostępu do pliku (np. "C:\Documents and Settings\User\Moje dokumenty\Moja muzyka\fotki\"). I problem polega na tym, że do bazy zapisuje się wartość bez dodanych backslash'y i po wyciągnięciu tego z bazy za pomocą stripslashes otrzymuję ścieżkę w postaci "C:Documents and SettingsUserMoje dokumentyMoja muzykafotki". Natomiast ostatnia linia powyższego kodu wyświetla zmienną w postaci prawidłowej, czyli "C:\Documents and Settings\User\Moje dokumenty\Moja muzyka\fotki". Czyli funkcja addslashes działa dopóki nie dodaję danych do bazy.
W czym tkwi problem? Co robię źle?

Pozdrawiam
cezarek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To, że używasz starych kursów widać poprzez <?= bo choć jest to poprawne, oznacza, że używasz dyrektywy, która powoduje problemy z XML.

Addslashes jest podawane w kursach, bo wspomniana przez chłopaków funkcja nie jest staruszkiem aż takim ( wyszła w gałęzi 4.3, czyli ostatniej z serii PHP4 ) i wcześniej tak się robiło. Ale trzeba było uważać na magic_quotes_gpc (które robi właśnie addslashes, przez co możesz je podwójnie wykonać, nie wiedząc o tym) i inne syfy, więc nie jest to lubiane i akceptowane rozwiązanie w chwili obecnej, gdy nigdy nie wiesz czym Cię uraczy hosting w php.ini przy zakupie serwera i czy da się prosto pewne rzeczy włączyć/wyłączyć czy też nie. W efekcie musisz sprawdzać czy owa, nienawidzona prze wielu, dyrektywa jest włączona i wedle niej aplikować bądź nie addslashes, a sam widzisz, że to mało eleganckie, a przede wszystkim upierdliwe.

Jeśli walisz cokolwiek do value formularzy to zawsze może zajść konflikt apostrofów (pojedynczych i podwójnych) i dlatego wrzucanie tam treści zakończy się problemami. Tekst zobaczysz w Źródle strony, ale nie na samej stronie, bo przeglądarka tego nie zinterpretuje dobrze. Tutaj trzeba użyć wspomnianej html_entities z właściwą dla Ciebie w skrypcie flagą quotów (nie zawsze jest to wartość domyślna).
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 11:24