Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] przekierowanie przy ładowaniu strony [rozwiązany]
elektrrrus
post
Post #1





Grupa: Zarejestrowani
Postów: 175
Pomógł: 18
Dołączył: 11.06.2007
Skąd: Koszalin/Poznań

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


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.

Ten post edytował elektrrrus 3.08.2007, 12:40:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
John
post
Post #2





Grupa: Zarejestrowani
Postów: 107
Pomógł: 11
Dołączył: 1.08.2007
Skąd: Poland,Warsaw

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


  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. ?>


Ten post edytował John 3.08.2007, 11:53:41
Go to the top of the page
+Quote Post
elektrrrus
post
Post #3





Grupa: Zarejestrowani
Postów: 175
Pomógł: 18
Dołączył: 11.06.2007
Skąd: Koszalin/Poznań

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


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/ .
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 - 01:11