Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularze - ogromny problem :(
Forum PHP.pl > Forum > Przedszkole
pitbull82
Bardzo prosty kodzik:

  1. <?php
  2. if (!isset($_REQUEST[&#092;"blabla\"]))
  3. {
  4. ?>
  5. <form name=\"me\" method=\"post\" action=\"form.php\">
  6. <textarea name=\"blabla\"></textarea>
  7. <input type=\"submit\">
  8. </form>
  9. <?
  10. }
  11. else
  12. {
  13. echo $_REQUEST[&#092;"blabla\"].\"<br />\";
  14. echo $_POST[&#092;"blabla\"].\"<br />\";
  15. }
  16. ?>

Dwie tablice REQUEST i POST wypisane dla testu.

Co się dzieje jak wpiszę w formularzu znak \ a raczej co się powinno stać?

W php 4.3.3 mam (moim zdaniem poprawnie) wypisany nadal znak\ a w php 4.3.8 (na moim obecnym serwerze) znak zostaje zamaskowany i w przypadku obu tablic uzyskuję wynik \\.

Rzecz w tym, że w żadnym wypadku nie mogę sobie pozwolić na takie zamaskowanie. Ewentualnie, czy da się to jakoś odwrócić lub "zabronić" zamaskowania?

Pozdrawiam i czekam na odpowiedź
Kuziu
Przed dodaniem do bazy danych znak \ powinien być poprzedzony znakiem ucieczki czyli \\

a przed samym wyświetleniem go na stronie należy użyć funkcji:
  1. <?php
  2.  
  3. $zmienna = stripslashes($zmienna);
  4.  
  5. ?>

Usunie ona wszystkie znaki ucieczki ... np.
\" -> "
\\ -> \
itd ...

a jeśli chcesz sam je dodać to możesz użyć funkcji ... addslashes .....
pitbull82
Wielkie dzięki.

Szczerze mówiąc pierwszy raz się spotkałem, żeby znaki były zamieniane przy formularzach, a moja strona targała się już po kilku serwerach (widzę, że chyba nie chodzi też o wersję tylko o "magic quotes" chociaż nie wnikam w szczegóły winksmiley.jpg )

Napisałem sobie "moda" do kolorowania składni programów C++ na forum i się załamałem, jak u mnie na localhoście wszystko pięknie śmigało, a na serwerze się zaczeło psuć. W końcu doszedłem, że tylko wysyłając i odbierając dane już się psuje, bo zamienia znaki smile.gif i to, że nie działa, to nie wina skryptu biggrin.gif

Pozdrawiam smile.gif
a79rtur
w ksiazce jednej, akurat na ten temat czytam, było na ten temat:

Na przykład pojedynczy apostrof jest wyświetlany na stronie jako sekwencja \'. Również znaki końca linii wprowadzone w polu tekstowym nie są uwzględniane w wyświetlanym tekście.
Pierwsze z zakłóceń jest powodowane przez dyrektywę konfiguracji --enable-magic-quotes oraz opcje pliku php.ini magic_quotes_gpc, magic_quotes_runtime i magic_quotes_sybase. Jeżeli jest ona uaktywniona, wszystkie apostrofy, cudzysłowy, NUL i znaki backslash pochodzące z zewnętrznych źródeł, na przykład formularzy i bazy danych, są automatycznie poprzedzane ukośnikiem. Jest to szczególnie przydatne, jeżeli dane te będą zapisywane w bazie danych, ponieważ nie będziesz musiał ręcznie oznaczać tych znaków w ciągu SQL. Aby wyświetlić taki ciąg, należy wywołać funkcję strip_slashes(), która usuwa te dodatkowe znaki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.