Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wykrywanie błedów
Forum PHP.pl > Forum > PHP
stroju
jak wykonać funkcje aby wykrywała błedy i zaptrzymywała kod np. jeżeli plik do includowania nie istnieje to że by wyświetlio że nie ma pliku do includowania a nie błędy po angieldku?questionmark.gif?
dr_bonzo
sprawdz czy plik istnieje (file_exists()), jesli nie to wypisz swoj komunikat
zainteresuj sie tez set_error_handler().
stroju
mam cos takiego:
  1. <?
  2. function bledy($numerbl, $ciagbl, $plikbl, $liniabl)
  3. {
  4.  
  5.      echo "<br /><table bgcolor='red'><tr><td>
  6.           <p><b>BŁĄD:</b> $ciagbl</p>
  7.           <p>Proszę spróbować ponownie lub skontaktować się z administratorem i
  8.           przekazać, że błąd wystąpił w linii $liniabl pliku '$plikbl'</p>";
  9.      if ($numerbl == E_USER_ERROR||$numerbl == E_ERROR)
  10.      {
  11.      
  12.           echo '<p>Błąd krytyczny, zakończenie programu</p>';
  13.  
  14.      }
  15.      
  16.      echo '</td></tr></table>';
  17. }
  18.  
  19. ?>

i jak w kodzie jest jakaś zmienna to wyświtla cos takiego:
Kod
BŁĄD: Undefined index: cmd

Proszę spróbować ponownie lub skontaktować się z administratorem i przekazać, że błąd wystąpił w linii 31 pliku '/home/kamesenin/domains/compsite.info/public_html/cms/admin.php'

a ja chcem aby wyświtlalo wytlko bledy includowania polaczeniaz baza danych oraz otwioeraniem plików przez fopen() czy file_get_contents().

w pracę systemu włożułem dużo pracy a ten sposub mi wszystko psuje!!!. co mam zrobić?questionmark.gif
Lars
  1. <?php
  2. ## BLOCK START
  3. function errorDB() {
  4. die('Error bazy');
  5. }
  6. function errorInclude() {
  7. die('Error inkluda');
  8. }
  9.  
  10. include($file) or errorInclude();
  11. mysql_connect($host, $user, $pass) or errorDB();
  12. mysql_query("SELECT `lars`, `id`, `fe324` FROM `cms_dupa` WHERE `lars`='1'") or errorDB();
  13. ## BLOCK END
  14. ?>


i tak dla kazdego wywolania funkcji include, czy innej
DzikiLis
Przedmówców odsyłam do stron/książek nt. usability, szczególnie friendly error messages. O, pierwszy z brzegu link.

Komunikaty typu "Undefined index: cmd" czy masakrycznie długa ścieżka '/home/kamesenin/domains/compsite.info/public_html/cms/admin.php' nie mówią NIC normalnym użytkownikom. Podobnie prośba o kontakt z jakimś administratorem. Czego? Budynku? Takie rzeczy to można do pliku error.log sobie wrzucać.

Ładny komunikat z przeprosinami, krótkim wyjaśnieniem dlaczego została wyświetlona strona błędu, a nie ta, której się spodziewali i ew. krótki formularz kontaktowy powinny załatwić sprawę.
Rzast
Jeszcze lepsza byłaby funkcja mail() wysyłająca do admina wiadomość. A zapełniająca się skrzynka to najlepszy sposób na szybkie naprawienie błędu aaevil.gif
sobstel
Cytat(Rzast @ 2006-01-11 09:55:14)
Jeszcze lepsza byłaby funkcja mail() wysyłająca do admina wiadomość. A zapełniająca się skrzynka to najlepszy sposób na szybkie naprawienie błędu aaevil.gif

tylko to musi byc jakos rozsadnie zrobione, bo przy wiekszym serwisie, jak np. padnie baza na pol godziny to szykuje sie masakra w skrzynce.
NuLL
A moze by tak sie zinteresowac wyjatkami ? W koncu mamy jest PHPv5.
hwao
@Null funkcje nie zwracaja wyjatkow Rkingsmiley.png

Mozna napisac do tego łatwo error handler'a zeby lapal tylko te bledy co chcessz.

Imho sytuacja ze plik nie istnie nie powinna zainstniec w dobrze zaprojektowanym systemie!
Rzast
Cytat(sopel @ 2006-01-11 09:29:57)
... szykuje sie masakra w skrzynce.

No i masz doping aaevil.gif
A na poważnie: przy częstym sprawdzaniu poczty jesteś na bieżąco, a błędów z bazy nie musisz wysyłać - traktować to jako zło konieczne i niezależne od nas... <- jeżeli system jest dobrze zabezpieczony, to jedyne błędy bazy to brak dostępu do niej snitch.gif
DzikiLis
Cytat(Rzast @ 2006-01-11 08:55:14)
Jeszcze lepsza byłaby funkcja mail()

Zakładam, że każdy porządny administrator serwisu co jakiś czas zagląda do logów i statystyk strony.
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.