![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 642 Pomógł: 2 Dołączył: 9.03.2006 Ostrzeżenie: (30%) ![]() ![]() |
Witam,
W skrypcie mam zabezpieczenie, żeby zamiast id nie mozna bylo pisać liter
I kiedy wpisyje np.costam.php?finish=18a to co prawda pojawia się napis "Użyto niedozwolonych znaków w numerze celu." ale przed się pojawia: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\programy\WebServ\httpd\costam\costman.php on line 33 Da się jakoś usunąć pokazywanie tego błędy mysql? Ok znalazłem, error_reporting(E_ALL); ini_set('display_errors','0'); ale czy mozna tak ukrywac bledy, nie jest to jakis mega blad? -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 286 Pomógł: 12 Dołączył: 23.11.2006 Skąd: WL Ostrzeżenie: (0%) ![]() ![]() |
Musisz dać
@mysql_fetch_array(); -- wtedy nie wywali ci żadnego błędu Edit: ale skoro wywala błąd mysql to znaczy że tak czy tak do pytania ten ciąg jest wsadzany. daj intval przy id i to powinno załatwić. Ten post edytował szmerak 3.11.2011, 20:28:40 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@up -> nie pokaże, ale nadal ostrzeżenie jest.
Powinieneś je wyeliminować. Poza tym nie lepiej użyć funkcji is_int zamiast patternu? Ten post edytował IceManSpy 3.11.2011, 20:29:15 -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 286 Pomógł: 12 Dołączył: 23.11.2006 Skąd: WL Ostrzeżenie: (0%) ![]() ![]() |
Pytał się o pokazywanie błędu więc odpowiadam
![]() A tak wogóle to niech zrobi to z intval ja tak przynajmniej zawsze robię. A jeśli chodzi o regularne to też bym użył is_int. Przypuszczam że zmienna $problem jest ustawiana na true jeśli walidacja się nie powiedzie czyli że if(!$problem == TRUE) { mysql_fetch_array } Czyli skoro tak czy tak dochodzi do tego momentu to coś masz nie tak. Sprawdź wszystkie zmienne czy zawierają napewno co mają zawierać. Ten post edytował szmerak 3.11.2011, 20:33:26 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Przeczytajcie dokładnie przykłady: is_int. Ta funkcja to nie jest najlepszy wybór.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Czemu?
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 642 Pomógł: 2 Dołączył: 9.03.2006 Ostrzeżenie: (30%) ![]() ![]() |
$ukonczony = @mysql_fetch_array(mysql_query("select * from blablabla"));
Dodałem małpę przed zmienna i pomogło. Dlaczego? Co daje małpa przy zapytaniu do bazy? Ten post edytował Lethys 3.11.2011, 22:28:05 -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Dodałem małpę przed zmienna i pomogło. Dlaczego? Co daje małpa przy zapytaniu do bazy? Ukrywa warningi, ale ich nie eliminuje. Temat: PHP Znak przed nazw zmiennej -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Na pewno nie powinieneś pisać kodu ukrywając błędy. Prędzej czy później zemści Ci się to. preg case insensitive (/i) trochę bez sensu dla liczb. Może rozważysz przejście na PDO gdzie masz i poprawne quotowanie, i możesz wskazać jak typ danych to jest PDO::PARAM_INT.
Poczytaj więcej w kursie: http://tworzenie-stron-www.org/article/10/...luge_baz_danych -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie to źle podszedłeś do tematu. Bo sprawdzałeś czy przekazywane dane to cyfry przed zapytaniem i w przypadku kiedy to nie była cyfra to trafiała prawdopodobnie pusta zmienna, i prawdopodobnie twój warunek jedynie wyświetlał komunikat że to nie jest cyfra. W sumie najpierw powinieneś wysłać zapytanie do bazy z danymi które otrzymałeś (oczywiście dane escapowane, lub bindowane w pdo) i sprawdzić ile otrzymasz wyników (mysql_num_rows/pdo->rowCount itp), jeżeli zero to dopiero wtedy wywalasz informację o błędzie, że takiej strony nie ma.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 8 Dołączył: 10.11.2010 Skąd: Polska,Katowice Ostrzeżenie: (0%) ![]() ![]() |
Zastąp handler za wyświetlanie błędów tak by logował Ci wszystko do pliku. Musisz na czymś monitorować pracę systemu. Później wyłącz wyświetlanie na stronie.
Pamiętaj - błędów się nie maskuję, ukrywa się je na tyle ile można na public. Ten post edytował kulczycki 4.11.2011, 10:34:28 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 17:21 |