Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] preg_match nie działa tak jak powinien
Forum PHP.pl > Forum > Przedszkole
Lethys
Witam, mam w skrypcie zmienna przekazywaną linkiem i chciałbym się zabezpieczyć przed wpisywaniem tam niechcianych znaków.

W linku chcę akceptować tylko małe, duże litery, cyfry i myślnik.

  1.  
  2. if(!preg_match("/[A-Za-z0-9-]+/", $link)){
  3. $problem = TRUE;
  4. $error = "W linku są niedozwolone znaki.";
  5. }
  6. $link_przetworzone = mysqli_real_escape_string($con, $link);
  7. $test_filmu = mysql_num_rows(mysql_query("select * from links where link='$link_przetworzone'"));
  8. if ($test_filmu == 0) {
  9. $problem = TRUE;
  10. $error = "Nie ma takiego linku.";
  11. }
  12.  
  13. if (!$problem){
  14.  
  15. //Przeszło zabezpieczenia
  16.  
  17. }


Mój problem polega na tym, że preg_match jest praktycznie omijany, nawet jak wpiszę powiedzmy polski znak to pokazuje, że "Nie ma takiego linku." w bazie danych czyli po prostu działa drugi warunek. A co się dzieje z preg_march? Czemu nie sprawdza znaków i nie wywala w pierwszeństwie błędu pierwszego warunku z preg_match?
johny_s
  1. if() {
  2.  
  3. } else {
  4.  
  5. }
Lethys
Cytat(johny_s @ 25.02.2015, 17:18:55 ) *
  1. if() {
  2.  
  3. } else {
  4.  
  5. }



To nic nie zmienia.


Jak uproszczę kod i zostawię tylko preg_match w moich zabezpieczeniach to nadal nie działa. Myślałem, że się może zmianna $error nadpisywać ale to nie to.

  1. if(!preg_match("/[A-Za-z0-9-]+/", $link)){
  2. $problem = TRUE;
  3. $error = "W nazwie filmu są niedozwolone znaki.";
  4. }
  5.  
  6. if (!$problem){
  7.  
  8. $link = mysql_fetch_array(mysql_query("select * from links where link='$link_przetworzone'")) or mysql_error();
  9.  
  10. }


Przy wklepaniu w linku polskich znaków, omija zabezpieczenia i jest problem FALSE.
johny_s
  1. /^[A-Za-z0-9-]+$/
Pyton_000
  1. if(preg_match('[^A-Za-z0-9-]+', $url))
  2. { die('niedozwolone 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.