Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z " przy formularzu
Forum PHP.pl > Forum > Przedszkole
kaszanka
Hi,

Wysyłając formularz gdzie w inpucie wpiszemy np:
  1. temat: "książka czarowników"
w wyniku otrzymamy:
  1. temat:
czyli usunie nam to co mamy w " ", natomiast gdy wpiszemy
  1. temat"książka
to wynik będzie:
  1. temat\"książka


z php.net.pl oraz grupy dyskusyjnej wyciągnąłem kod:
  1. <?php
  2.  function stripslashes_array($array) { return is_array($array) ? array_map('stripslashes_array',$array) : stripslashes($array); }
  3.  $_SERVER = stripslashes_array($_SERVER);
  4. $_GET = stripslashes_array($_GET);
  5. $_POST = stripslashes_array($_POST);
  6. $_COOKIE = stripslashes_array($_COOKIE);
  7. $_FILES = stripslashes_array($_FILES);
  8. $_ENV = stripslashes_array($_ENV);
  9. $_REQUEST = stripslashes_array($_REQUEST);
  10. $HTTP_SERVER_VARS = stripslashes_array($HTTP_SERVER_VARS);
  11. $HTTP_GET_VARS = stripslashes_array($HTTP_GET_VARS);
  12. $HTTP_POST_VARS = stripslashes_array($HTTP_POST_VARS);
  13. $HTTP_COOKIE_VARS = stripslashes_array($HTTP_COOKIE_VARS);
  14. $HTTP_POST_FILES = stripslashes_array($HTTP_POST_FILES);
  15. $HTTP_ENV_VARS = stripslashes_array($HTTP_ENV_VARS);
  16. }
  17. ?>

Ale i tak nic to nie dało.
Próbowałem dać np:
  1. <?php
  2.  function stripslashes_array($array) { return is_array($array) ? array_map('stripslashes_array',$array) : stripslashes($array); }
  3.  
  4. $tytul = stripslashes_array($tytul); // zmienna z jednego inputa
  5.  
  6.  $_SERVER = stripslashes_array($_SERVER);
  7. $_GET = stripslashes_array($_GET);
  8. $_POST = stripslashes_array($_POST);
  9. $_COOKIE = stripslashes_array($_COOKIE);
  10. $_FILES = stripslashes_array($_FILES);
  11. $_ENV = stripslashes_array($_ENV);
  12. $_REQUEST = stripslashes_array($_REQUEST);
  13. $HTTP_SERVER_VARS = stripslashes_array($HTTP_SERVER_VARS);
  14. $HTTP_GET_VARS = stripslashes_array($HTTP_GET_VARS);
  15. $HTTP_POST_VARS = stripslashes_array($HTTP_POST_VARS);
  16. $HTTP_COOKIE_VARS = stripslashes_array($HTTP_COOKIE_VARS);
  17. $HTTP_POST_FILES = stripslashes_array($HTTP_POST_FILES);
  18. $HTTP_ENV_VARS = stripslashes_array($HTTP_ENV_VARS);
  19. }
  20. ?>
to działa ale gdy dodam do powyższego kodu dodatkową zmienną z drugiego inputa to już nie działa dla obu sad.gif
Daimos
  1. <?php
  2. $str = 'string z cudzyslowami przeslany POSTem"""""asdasd""ASDasdad';
  3. echo str_replace('"', '&quot;', $str);
  4. ?>
to Ci zamieni cudzyslowia na quoty winksmiley.jpg
l0ud
Nie ma co tak kombinować. Przy odbieraniu danych od użytkownika (bądź przed zapisem do bazy/pliku - lepiej) użyj funkcji addslashes().
http://pl2.php.net/manual/pl/function.addslashes.php

Wtedy dodasz \ przed ", a nie będziesz się martwił, czy to PHP samo zrobi czy nie zrobi.

Przy wyrzucaniu zmiennej do formularza, użyj stripslashes() i htmlspecialchars(). Stripslashes usunie \ przed ", a htmlspecialchars zamieni " na odpowiednie znaki dla html'a.

  1. <?php
  2. ?>


http://pl2.php.net/manual/pl/function.htmlspecialchars.php
http://pl2.php.net/manual/pl/function.stripslashes.php
kaszanka
Wszystko fajnie, tylko metoda "@my salsa" nie działa dla formularzy z method=post wysyłanych submitem.
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.