Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Informacja o nie istniejącej stronie
Forum PHP.pl > Forum > Przedszkole
ZeTu
Witam
Mam skrypt, który po wpisaniu w przeglądarce index.php?s=1 wyświetla rekord o id 1, ale jeśli wpiszę np. index.php?s=costam, to powinien wyskoczyć komunikat o tym, że taka strona nie istnieje, ale niestety ten komunikat wyświetla się tylko jak wpisujemy liczby, a nie litery:
  1. ...
  2. $li=mysql_query("SELECT * FROM nazwa WHERE id=$id");
  3. $w = mysql_num_rows($li);
  4. if ($w == 0)
  5. print '<h1>Błąd</h1>Taka strona nie istnieje';
  6. else
  7. ...

A więc jak zrobić, aby wyświetlał się komunikat gdy zamian liczb, wpiszemy jakieś litery?
Methestel
Po prostu sprawdź co masz w zmiennej $id przed wykonaniem zapytania (a najlepiej przed połączeniem się z bazą danych). Jeśli $id nie przechowuje dodatniej liczby całkowitej większej od 0 to wyświetlasz komunikat o błędzie 404.
Np:

  1. if ((string)$id == (string)(int)$id && $id > 0) {
  2. //Masz pewność że w $id jest dodatnią liczbą całkowitą
  3. } else {
  4. //Wyświetlasz komunikat o błędzie 404
  5. }


I tak zawsze powinieneś sprawdzać wartość zmiennych przed użyciem ich w zapytaniu. To bardzo ważne - poczytaj o SQL Injection. Zawsze zakładaj że użytkownik ma złe zamiary smile.gif
nospor
W przypadku wkładania liczb do zapytań wystarczy rzutować je na liczbę i już. Nie widzę sensu jakiegoś większego kombinowania a już na pewno nie w tym omawianym tu przypadku

$id = (int)$id;
ZeTu
Ok dzięki za pomoc smile.gif
A o SQL Injection to już wiem smile.gif
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.