Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja error
Forum PHP.pl > Forum > PHP
bne
Witam, chciałbym stworzyć funkcje error, która wywalać będzie błąd na całej stronie i nie będzie przetwarzać jej dalej ale też nie będzie zwracać wcześniejszej zawartości...

prosty przykład :
plik index.php...
  1. <?php
  2. echo 'jakas tam zawartosc strony';
  3.  
  4. if($a=1) {
  5. error("error");
  6. }
  7. ?>

jeśli $a=1 wyskoczy error, aby dalej nie przetwarzało strony wystarczy exit; ale jak pozbyć się wcześniejszej zawartości strony?

Wcześniej korzystałem z funkcji powiązanej z smarty, niestety przy kodzie bez smarty jest bezużyteczne...
Lecz jeśli komuś to może podsunąć rozwiązanie to podaje niżej:
  1. <?php
  2. function error($text) {
  3.  
  4. global $smarty;
  5. global $db;
  6. global $start_time;
  7. global $player;
  8.  
  9. if (!ereg("<a href",$text)) {
  10. $text = $text." (<a href="".$_SERVER['PHP_SELF']."">Wróć</a>)";
  11. }
  12. $smarty->assign("Message", $text);
  13. $smarty->display('error.tpl');
  14. require_once("includes/foot.php");
  15. }
  16. ?>

Pozdrawiam
bne
cadavre
Output Control http://pl.php.net/manual/pl/ref.outcontrol.php ?

start i jeśli error to clean?
bne
a coś po polsku?
Cysiaczek
@bne - manual to manual - chcesz programować, to musisz poznać chociaż podstawy angielskiego. Jeśli nie rozumiesz, co jest napisane, to spróbuj zrozumieć przedstawiony tam kod.

Uruchom to i zobacz co się stanie.
  1. <?php
  2. print "cos";
  3. ?>


Pozdrawiam.
bne
Nie wyświetla mi "cos" ale jakie to ma mieć niby zastosowanie w mojej funkcji error ?
Cysiaczek
Cytat
ale jak pozbyć się wcześniejszej zawartości strony?


Właśne tak. Strone zaczynasz od ob_start(); i jeśli jest error, to przed wywołaniem exit() wywołujesz ob_end_clean(). Czyli wszystko, co zostało do tej pory zbuforowane zostanie usunięte i się nie wyświetli.

Przykład:
  1. <?php
  2. $test=1;
  3.  
  4. print "cos";
  5. if ($test==1){
  6. print 'error';
  7. exit();
  8. }
  9. print "cos jeszcze";
  10. }
  11. ?>


Pozdrawiam.
bne
Ok, dzięki zrozumiałem, zaraz wszystko przetestuje...

edit ...

zrobiłem tak :

na końcu headera ob_start();

i funckcja:

  1. <?php
  2. function error($message) {
  3. echo $message;
  4. require_once 'system/down.php';
  5. }
  6. ?>


i wszystko śmiga elegancko, dzięki za pomoc...
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.