Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> exit; niszczy stronę!
waqmaz
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.01.2011
Skąd: Murowana Goślina

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


Powiedzmy, że masz stronę css napisaną w index.php.
Jeżeli wywołasz funkcję z innego pliku zawierającą <?php exit; ?> na stronie .php, wtedy od miejsca, w którym została wywołana kod css jest obcięty!!! Czy ktoś wie dlaczego tak się dzieje i jakie są sposoby, aby to ominąć?

Przykład:


index.php:
  1. <div class="logo"></div>
  2. <?php require('plik_z_exitem.php');
  3. <div class="strona></div>
  4. <div class-"stopka></div>

plik_z_exitem.php:
  1. <?php exit; ?>


No i zamiast wyświetlić takie coś:
  1. <div class="logo"></div>
  2. <?php require('plik_z_exitem.php');
  3. <div class="strona></div>
  4. <div class-"stopka></div>

To wyświetla samo logo:
  1. <div class="logo"></div>
  2. <?php require('plik_z_exitem.php');

Czyli wszystko co pod exit zostaje wycięte. Strasznie wnerwiające to, gdyż np. chcę wprowadzić obsługę błędów w innym pliku np. logowania czy rejestracji, łączenia z bazą itp. no i wszystko działa, tylko mi obcina resztę strony, przez co wygląda okropnie, jak jakieś pogniecione badziewie. Wie ktoś jak to omijają inni?

Ten post edytował waqmaz 3.02.2011, 18:28:19
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Piogola
post
Post #2





Grupa: Zarejestrowani
Postów: 151
Pomógł: 36
Dołączył: 1.02.2011
Skąd: Warszawa

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


  1. if(czy_jest_blad == true){
  2. echo 'Wykryty błąd!';
  3. }else{
  4. echo 'Nie ma błędu, można kontynuować';
  5. }
  6. // Dalsza część strony


exit używa się tylko w krytycznych sytuacjach, kiedy jest jakiś błąd który powoduje, że strona nie będzie działać prawidłowo

Ten post edytował Piogola 3.02.2011, 18:34:31
Go to the top of the page
+Quote Post
-mkdes-
post
Post #3





Goście







exit;
Przerywa wykonywanie skryptu. Więc nic co masz poniżej niego się nie wykona.
http://php.net/manual/en/function.exit.php
Go to the top of the page
+Quote Post
kulczycki
post
Post #4





Grupa: Zarejestrowani
Postów: 76
Pomógł: 8
Dołączył: 10.11.2010
Skąd: Polska,Katowice

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


na chłopski rozum exit zachowuje się jak return w funkcji, tylko że exit działa na cały skrypt.
Go to the top of the page
+Quote Post
cipronex
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.02.2011

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


Ja zazwyczaj stopkę mam w oddzielnym pliku i w przypadku gdy chcę zakończyć skrypt z jakiegoś powodu, to wygląda u mnie tak:

Kod
if (warunek) {
    print "Informacja o błędzie";
    require_once("plik stopki");
    exit;
}
Go to the top of the page
+Quote Post
waqmaz
post
Post #6





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.01.2011
Skąd: Murowana Goślina

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


Cytat(cipronex @ 3.02.2011, 18:45:23 ) *
Ja zazwyczaj stopkę mam w oddzielnym pliku i w przypadku gdy chcę zakończyć skrypt z jakiegoś powodu, to wygląda u mnie tak:

Kod
if (warunek) {
    print "Informacja o błędzie";
    require_once("plik stopki");
    exit;
}


Tak, tylko, że ja wyświetlam to w danym boxie w index.php a musiała by być pod tym boxem (IMG:style_emoticons/default/tongue.gif)
btw. exit działa jak return true?
Go to the top of the page
+Quote Post
kulczycki
post
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 8
Dołączył: 10.11.2010
Skąd: Polska,Katowice

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


Może źle to ujałem. Bo nie zwraca żadnych danych, ale chodzi o samo zakańczanie działania skryptu. Ale możesz w exit wyświetlić informacje

exit('tresc');
Go to the top of the page
+Quote Post
waqmaz
post
Post #8





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.01.2011
Skąd: Murowana Goślina

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


w sumie jak daję return true; zamiast exit; to nie ucina mi strony i skrypt działa, prawie poprawnie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
benio101
post
Post #9





Grupa: Zarejestrowani
Postów: 111
Pomógł: 10
Dołączył: 16.07.2009
Skąd: Toruń

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


przym przypadku nie ma znaczenia, co zwracasz, czy prawdę, czy fałsz, ważne, że return przerywa i tyle.
A exit robi to globalnie.
Go to the top of the page
+Quote Post
Pilsener
post
Post #10





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Tylko improwizujący amatorzy używają exit, die itp. bo nie potrafią (lub im się nie chce) zaimplementować obsługi błędów.
Najprościej wszędzie tam gdzie jest exit/die zrobić:
  1. $errors[] = 'Blad!';


I sprawdzać często i gęsto czy tablica błędów jest pusta, jeśli nie jest to ją wyświetlić + szablon strony błędu. Ładna strona błędu świadczy o nas (IMG:style_emoticons/default/smile.gif)

A w nowych aplikacjach oczywiście używać wyjątków.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 23:23