Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] przekierowanie przy ładowaniu strony [rozwiązany]
Forum PHP.pl > Forum > Przedszkole
elektrrrus
Witam.
Mam problem z przekierowaniem w php. Adresem startowym jest powiedzmy: http://jakis.serwis.pl/~user/portal/ , gdy ktoś wejdzie na tą strone ma być przekierowany pod http://jakis.serwis.pl/~user/portal/index/glowna. Próbóję tutaj zastosować technikę niceurl, ale coś mi nie wychodzi. Oto fragmenty kodu odpowiedzlne za to:

plik index, który jest stroną startową:

  1. <?php
  2. require('config.php');
  3. require("classes/url.php");
  4. $includ = new url;
  5. $location = "Location: "._URL_."index/".$includ->getUnderpage();
  6. header($location);
  7. _MODE_ ? require('main.php') : require('konserwacja.php');
  8. ?>

Jak widać, dołącza on config.php, w którum definuję stałą _URL_ jako: http://jakis.serwis.pl/~user/portal/ i _MODE_, która przyjmuje wartość 1 dla wyświetlania normalnie strony main.php, gdzie znajduje się kod strony startowaej, głównie html.
Dalej plik url.php:

  1. <?php
  2. class url{
  3. protected $arrParm = array();
  4. public function __construct()
  5. {
  6. if(isset($_SERVER['PATH_INFO'])){
  7. $this->arrParm = explode('/', substr($_SERVER['PATH_INFO'], 1));
  8. }
  9. else{
  10. $this->arrParm[0] = 'glowna';
  11. }
  12. }//end __construct
  13. public function getUnderpage(){
  14. return $this->arrParm[0];
  15. }//end getUnderpage
  16. }//end class
  17. ?>

Wyciąłem tylko fragment z interesującą metodą.
Problem w tym, że gdy próbóję wejść na stronę http://jakis.serwis.pl/~user/portal/ nie zostaję przekierowany, tylko strona wiecznie sie ładuje. Nie mam pomysłu w czym jest problem.

Z góry dzękuję za wskazówki.
John
  1. <?php
  2.  
  3. // możesz spróbować header'em, ale on chyba musi być wysłany jako pierwszy więc może nie zadziałać
  4.  
  5. header($location);
  6.  
  7. ?>


Gdyby nie zadziałał to możesz meta tagami.
  1. <?php
  2. echo '<meta http-equiv="refresh" content="1;url='.$location.'">';
  3. ?>
elektrrrus
Dzięki za szybką odpowiedź.
Jak to mi się prawie zawsze, rozwiązanie znalazłem sam chwilkę po tym jak wysłałem posta...

A wygląda to tak:
Kiedy w tym kodzie:
  1. <?php
  2. $includ = new url;
  3. $location = "Location: "._URL_."index/".$includ->getUnderpage();
  4. header($location);
  5. _MODE_ ? require('main.php') : require('konserwacja.php');
  6. ?>

wysyłany jest header, strona już nie ma sans się załadować, require już nie zostaną wykone, tylko nastąpi przekierowanie. Kiedy już przekierowanie nastąpi, znowu zgłosi sie skrypt, w który znowu będzie przekierowanie i tak w kółko... main.php albo konserwacja.php nie mają prawa się załadować. Rozwiązałem to tak:
  1. <?php
  2. require('config.php');
  3. require("classes/url.php");
  4. $includ = new url;
  5. if(isset($_SERVER['PATH_INFO'])){
  6. _MODE_ ? require('main.php') : require('maintenance.php');
  7. }
  8. else{
  9. $location = "Location: "._URL_."index/".$includ->getUnderpage();
  10. header($location);
  11. ?>

Teraz przekierowanie występuje tylko, jeśli $_SERVER['PATH_INFO'] jest puste, czyli wpisano sam adres http://jakis.serwis.pl/~user/portal/ .
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.