Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]preg_match i apostrof
djtomaszq
post
Post #1





Grupa: Zarejestrowani
Postów: 192
Pomógł: 0
Dołączył: 5.07.2015

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


Używam sprawdzenia w rejestracji:
  1. if(!preg_match("@^[a-zA-Z0-9_-]+$@",$login))
  2. {
  3. $flaga = false;
  4. }


używam zmiennej login w zapytaniu
  1. $rezultat = $polaczenie->query("SELECT id_users FROM users WHERE login = '$login'");


Jak wpisze w loginie string z apostrofem w liczbie pazystej wyskakuje:
  1. Exception: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'd'dsd'' at line 1 in


Czy preg_match przepuszcza apostrofy czy czegoś nie rozumiem ? (Pewnie to drugie).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
djtomaszq
post
Post #2





Grupa: Zarejestrowani
Postów: 192
Pomógł: 0
Dołączył: 5.07.2015

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


tak używam poprawnie (tzn wszystko działa po za tymi apostrofami) bo nie chciałem stu linijek kodu wysyłać ogólnie sprawdzam flage tak:
  1. if(isset($_POST['submit']))
  2. {
  3. $flaga = true;
  4. //Sprawdzanie poprawności loginu np. ile znaków
  5. ....
  6. if(!preg_match("@^[a-zA-Z0-9_\-]+$@",$login))
  7. {
  8. $flaga = false;
  9. }
  10. //Sprawdzanie e-mail hasla
  11. ........
  12. try{
  13. if($polaczenie->connect_errno != 0)
  14. {
  15. throw new Exception($polaczenie->mysqli_connect_errno());
  16. }else
  17. {
  18. //Sprawdzenie czy istnieje e-mail
  19. $rezultat = $polaczenie->query("SELECT id_users FROM users WHERE email = '$email'");
  20.  
  21. if(!$rezultat) throw new Exception($polaczenie->error);
  22.  
  23. $ile_mail = $rezultat->num_rows;
  24. if($ile_mail > 0)
  25. {
  26. $flaga = false;
  27. $_SESSION['e_email'] = trans('key23');
  28. }
  29.  
  30. //Czy istnieje taki Login
  31. $rezultat = $polaczenie->query("SELECT id_users FROM users WHERE login = '$login'");
  32.  
  33. if(!$rezultat) throw new Exception($polaczenie->error);
  34.  
  35. $ile_login = $rezultat->num_rows;
  36. if($ile_login > 0)
  37. {
  38. $flaga = false;
  39. $_SESSION['e_login'] = trans('key24');
  40. }
  41.  
  42. //Zapisywanie użytkownika do bazy
  43. if($flaga == true)
  44. {
  45. $data = date('Y-m-d H:i:s');
  46. if($polaczenie->query("INSERT INTO users VALUES (NULL, 1, '$login', '$haslo_hash', '$email', '$data', 50)"))
  47. {
  48. $_SESSION['komunikat'] = trans('key25');
  49. $_SESSION['kolor_kom'] = "succes";
  50. header('Location: '.linkGenerator('logowanie').'');
  51. }else
  52. {
  53. throw new Exception($polaczenie->error);
  54. }
  55. }
  56.  
  57. $polaczenie->close();
  58. }
  59.  
  60. }


ale co zrobić z tym apostrofem którego jak wpisze przy rejestracji wywołuje błąd oczywiści 2 apostrofy nie dają błędu.

Ja to rozumiem tak jakby preg_match apostrof przepuszczało i traktowało jako koniec stringa przy 2 apostrofach jest ok bo traktowany jako pusty tekst... (?)
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: 6.10.2025 - 18:46