Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zmienne przez funkcje... ?
Ccn
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 2.07.2005

Ostrzeżenie: (30%)
XX---


Mam taki skrypt portalowy, który robi blok po lewej, treść po środku i blok po prawej...

Lewa strona: inc/header.php -> rozpoczęcie skryptu, sesje itp.
Środek: plik.php -> plik, który jest otwierany, includuje header.php na początku i footer.php na końcu
Prawa strona inc/footer.php -> blok prawy i stopka

Czasami w pliku na który sie wchodzi jakaś akcja ma go zakończyć. Funkcja exit() spowoduje zatrzymanie pliku i nie zaincluduje sie prawy blok...
Więc dałem funkcje cexit(), która wygląda tak:
  1. <?php
  2. function cexit() {
  3. include('inc/footer.php');
  4. exit();
  5. }
  6. ?>

To zakończy strone i zaincluduje prawy blok...
Ale jest problem, bo wtedy na prawy blok nie przechodzą zmienne... Niewiecie jak to rozwiązać?
Go to the top of the page
+Quote Post
zulus
post
Post #2





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

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


Na początek polecam lekturę: include" title="Zobacz w manualu php" target="_manual.

W sumie to możesz użyć coś takiego:
  1. <?php
  2. function cexit() {
  3. global $pierwszaZmienna, $drugaZmienna;
  4. //reszta funkcji
  5. }
  6. ?>
Go to the top of the page
+Quote Post
siemakuba
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


include nie ma tu nic do rzeczy. W pliku dołączanym (include) masz dostep do zmiennych do ktorych masz dostep w tym samym miejscu w ktorym dołączasz plik. Jeżeli używasz include wewnątrz funkcji, będziesz miał w nim dostęp tylko do zmiennych dostępnych wewnątrz fukcji. Możesz to rozwiązać za pomocą global, jak podał @Ccn. Trochę to mało elastyczne rozwiązanie - to zależy od tego ile tych zmiennych potrzebujesz w dołączanym pliku.

Może zamiast kończenia wykonywania skryptu przez exit() niech wykonana akcja zmienia wartośc jakiejś zmiennej i potem możesz użyć instrukcji warunkowych i dalej wykonywać określone zadania na podstawie wcześniej ustawionej wartości.

pozdr.
Go to the top of the page
+Quote Post
Ccn
post
Post #4





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 2.07.2005

Ostrzeżenie: (30%)
XX---


Kod niektórych plików jest taki:
  1. <?php
  2. if(!$admin) {
  3. echo("<b>MODUŁ TYLKO DLA ADMINA</b>");
  4. cexit();
  5. }
  6. ?>

Myślalem nad tym, żeby cexit() poprostu zastąpić includem i exit()'em...
Ale to troche niewygodne...

Może też być
  1. <?php
  2. if(!$admin) {
  3. echo("<b>MODUŁ TYLKO DLA ADMINA</b>");
  4. } else {
  5. // treść pliku
  6. }
  7. ?>

Ale to też jest niewygodne...
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


  1. <?php
  2. function cexit() {
  3. foreach($GLOBALS as $id=>$val){
  4. $$id=$val;
  5. }
  6. include('inc/footer.php');
  7. exit();
  8. }
  9. ?>

rozwiązanie do d*** ale jak nie potrzebujesz skryptu w super klasie to to rozwiazanie zadziala.

edit:

albo nawet:
  1. <?php
  2. function cexit() {
  3. foreach($GLOBALS as $id=>$val){
  4. global $id;
  5. }
  6. include('inc/footer.php');
  7. exit();
  8. }
  9. ?>
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: 23.08.2025 - 23:24