Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] problem z '/' w formularzu
Forum PHP.pl > Forum > Przedszkole
Endure
Witam, mam na stronie formularz, wszystko w nim działa, zostaje przesłany do bazy problem pojawia się kiedy użytkownik poda znak '/' po jego podaniu oczywi¶cie pojawia się komunikat żeby użytkownik poprawił dane pole, nie rozpoznaje znaku. Po usunięciu fragmentu kodu:

else {
$shipping_errors['first_name'] = 'Wpisz imię';

Formularz z znakiem '/'dociera do bazy danych ale pola w których pojawił się znak '/' s± puste. Jak by kto¶ mógł rzucić okiem na kod byłbym wdzięczny.
Bo już nie wiem gdzie szukać przyczyny, cały dzień się z tym meczę. Inne znaki mi wczytuje: ',.#-


PHP Version: 5.2.17
MySQL 5.1.65
Apache 2.2.22

na serwerze: magic_quotes_gpc = On

  1. // Sprawdza, czy formularz został‚ przesł‚any:
  2. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  3.  
  4. // Sprawdza, czy mechanizm Magic Quotes jest wł±czony:
  5. $_POST['first_name'] = stripslashes($_POST['first_name']);
  6.  
  7. }
  8.  
  9. // Sprawdza pole imienia:
  10. if (preg_match ('/^[A-Z±ćęłń󶿼ˇĆĘŁŃӦݬ \'.-]{2,255}$/i', $_POST['first_name'])) {
  11. $fn = addslashes($_POST['first_name']);
  12. } else {
  13. $shipping_errors['first_name'] = 'Wpisz imię';
  14. }
  15. $_POST['last_name'] = stripslashes($_POST['last_name']);
  16. }
  17. // Sprawdza pole nazwiska:
  18. if (preg_match ('/^[A-Z±ćęłń󶿼ˇĆĘŁŃӦݬ \'.-]{2,255}$/i', $_POST['last_name'])) {
  19. $ln = addslashes($_POST['last_name']);
  20. } else {
  21. $shipping_errors['last_name'] = 'Wpisz nazwisko!';
  22. }
  23. $_POST['address1'] = stripslashes($_POST['address1']);
  24. }
  25. // Sprawdza pole adresu - ulica:
  26. if (preg_match ('/^[A-Z±ćęłń󶿼ˇĆĘŁŃӦݬ0-9 \',.#-]{2,80}$/i', $_POST['address1'])) {
  27. $a1 = addslashes($_POST['address1']);
  28. } else {
  29. $shipping_errors['address1'] = 'Podaj nazwę™ ulicy!';
  30. }
  31. $_POST['address2'] = stripslashes($_POST['address2']);
  32. }
  33. // Sprawdza pole adresu - ulica (2):
  34. if (empty($_POST['address2'])) {
  35. $a2 = NULL;
  36. } elseif (preg_match ('/^[A-Z±ćęłń󶿼ˇĆĘŁŃӦݬ0-9 \',.#-]{2,80}$/i', $_POST['address2'])) {
  37. $a2 = addslashes($_POST['address2']);
  38. } else {
  39. $shipping_errors['address2'] = 'Podaj nazwę ulicy!';
  40. }
  41. $_POST['city'] = stripslashes($_POST['city']);
  42. }
  43. // Sprawdza pole miasta:
  44. if (preg_match ('/^[A-Z±ćęłń󶿼ˇĆĘŁŃӦݬ \'.-]{2,60}$/i', $_POST['city'])) {
  45. $c = addslashes($_POST['city']);
  46. } else {
  47. $shipping_errors['city'] = 'Podaj nazwę™ miasta!';
  48. }
  49.  
  50. // Sprawdza pole województwa:
  51. if (preg_match ('/^[A-Z±ćęłń󶿼ˇĆĘŁŃӦݬ]{2}$/', $_POST['state'])) {
  52. $s = $_POST['state'];
  53. } else {
  54. $shipping_errors['state'] = 'Podaj nazwę województwa!';
  55. }
  56. $_POST['zip'] = stripslashes($_POST['zip']);
  57. }
  58. // Check for a zip code:
  59. if (preg_match ('/^(^\d{2}\d{3})$/', $_POST['zip'])) {
  60. $z = $_POST['zip'];
  61. } else {
  62. $shipping_errors['zip'] = 'Podaj kod pocztowy!';
  63. }
  64.  
  65. // Sprawdza numer telefonu:
  66. // Usuwa spacje, ł±…czniki i nawiasy okr±głe:
  67. $phone = str_replace(array(' ', '-', '(', ')'), '', $_POST['phone']);
  68. if (preg_match ('/^[0-9]{9}$/', $phone)) {
  69. $p = $phone;
  70. } else {
  71. $shipping_errors['phone'] = 'Wpisz numer telefonu!';
  72. }
  73.  
  74. // Sprawdza adres e-mailowy:
  75. if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
  76. $e = $_POST['email'];
  77. $_SESSION['email'] = $_POST['email'];
  78. }



  1. -- Struktura tabeli dla tabeli `customers`
  2. --
  3.  
  4. CREATE TABLE IF NOT EXISTS `customers` (
  5. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  6. `email` varchar(80) NOT NULL,
  7. `first_name` varchar(255) NOT NULL,
  8. `last_name` varchar(255) NOT NULL,
  9. `address1` varchar(80) NOT NULL,
  10. `address2` varchar(80) DEFAULT NULL,
  11. `city` varchar(60) NOT NULL,
  12. `state` char(2) NOT NULL,
  13. `zip` char(6) NOT NULL,
  14. `phone` int(10) NOT NULL,
  15. `date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  16. PRIMARY KEY (`id`),
  17. KEY `email` (`email`)
  18. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;


procedura:

  1. CREATE PROCEDURE `add_customer`(IN `e` VARCHAR(80), IN `f` VARCHAR(255), IN `l` VARCHAR(255), IN `a1` VARCHAR(80), IN `a2` VARCHAR(80), IN `c` VARCHAR(60), IN `s` CHAR(2), IN `z` CHAR(6), IN `p` INT, OUT `cid` INT)
  2. BEGIN
  3. INSERT INTO customers VALUES (NULL, e, f, l, a1, a2, c, s, z, p, NOW());
  4. SELECT LAST_INSERT_ID() INTO cid;
  5. END
Vion
Cytat(Endure @ 29.10.2012, 20:05:24 ) *
na serwerze: magic_quotes_gpc = On


tak w ogóle ta funkcja powinna być na off, nie powinno się jej używać
Endure
napisałem do administratora serewra żeby przestawił z on na off. I wtedy mam usun±ć fragmenty:

if (get_magic_quotes_gpc()) {
$_POST['first_name'] = stripslashes($_POST['first_name']);

A ma kto¶ jaki¶ pomysł na wczytywanie znaku: /


ok już mi na off zmienili. usuwam te fragmenty.

usun±łem, oraz dodałem // w :

// Sprawdza pole adresu - ulica:
if (preg_match ('/^[A-Z±ćęłń󶿼ˇĆĘŁŃӦݬ0-9 \',.#-//]{2,80}$/i', $_POST['address1'])) {
$a1 = addslashes($_POST['address1']);
} else {
$shipping_errors['address1'] = 'Podaj nazwę™ ulicy!';


po wpisaniu w formularzu nazwy ulicy np: znaczkowa 4/43 wyskakuje error:
preg_match() [function.preg-match]: Unknown modifier '/'

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.