Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Informacja o nie istniejącej stronie
ZeTu
post
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 8
Dołączył: 8.12.2010

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


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?


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Methestel
post
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 10
Dołączył: 30.06.2008

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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;


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ZeTu
post
Post #4





Grupa: Zarejestrowani
Postów: 217
Pomógł: 8
Dołączył: 8.12.2010

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


Ok dzięki za pomoc smile.gif
A o SQL Injection to już wiem smile.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 07:55