Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]include_once()->wyświetla pustą stronę
--rgalka--
post 12.05.2008, 10:19:39
Post #1





Goście







Witam
Ponieważ coś co robię mam kilka podstron, dlatego zrobiłem takie skrypty:
index.php:
  1. <?php
  2. error_reporting(!E_NOTICE);
  3. include_once("conf.php");
  4. include_once("template.php");
  5. ?>


conf.php zawiera spis podstron:
  1. <?php
  2. if(!$_GET[p])
  3. {
  4.  $page = 'login.php';
  5. }
  6. else
  7. {
  8.  switch($_GET[p])
  9.  {
  10. case 0:
  11. $page = 'login.php';
  12. break;
  13.  
  14. case 1:
  15. $page = 'main.php';
  16. break;
  17.  
  18. case 2:
  19. $page = 'users.php';
  20. break;
  21. .
  22. .
  23. .
  24. case 99:
  25. $page = 'logout.php';
  26. break;
  27.  
  28. default:
  29. $page = 'login.php';
  30.  }
  31. }
  32. ?>


i ostatni skrypt - template.php:
  1. <?php
  2. if(!@file_exists($page))
  3. {
  4.  $page = 'login.php';
  5.  include_once("$page");
  6. }
  7. else
  8. {
  9.  include_once("$page");
  10. }
  11. ?>

pod mozilla wszystko jest w porządku. odpowiednie strony się ładują do przeglądarki, ale problem mam w IE.
gdy w Internet Explorerze chcę załadować którąś z podstron, to pojawia się puste okno przeglądarki, wraz ze starym adresem, dopiero po odświeżeniu okna przeglądarki, na pasku adresu pojawia się odpowiedni URL, natomiast w oknie przeglądarki prawidłowa zawartość.
mam zielonego pojęcia dlaczego tak się dzieje.
Go to the top of the page
+Quote Post
rgalka
post 12.05.2008, 10:53:15
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.05.2008

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


trochę zmieniłem skrypt tamplate.php:
  1. <?php
  2. echo 'Zmienna $page = '.$page.''; 
  3. $included = include_once(&#092;"$page\");
  4. if($included)
  5. {
  6.  echo 'Dołączono plik';
  7. }
  8. else
  9. {
  10. echo 'Nie dołączono pliku';
  11. }
  12. echo 'Koniec skryptu'; 
  13. ?>


w mozilla wszystko jest ok. natomiast w IE po kliknięciu na odnośnik do danej podstrony, wyświetlany jest tylko komunikat z linii nr 2 i nic więcej, okno przeglądarki pozostaje puste. dopiero po odświerzenie wszystko wraca do normy, tzn. widać komunikaty w linii: 2, 6 ,12 no i całą resztę, która powinna być widoczna.

Ten post edytował rgalka 12.05.2008, 10:57:52
Go to the top of the page
+Quote Post
Shili
post 12.05.2008, 11:20:52
Post #3





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


PHP jest wykonywany po stronie serwera, więc skoro mozilla go dobrze akceptuje to raczej jest poprawny. Czy mógłbyś ten skrypt zamieścić na jakimś ogólnodostępnym serwerze do przetestowania? Moim zdaniem specyfika problemu skłania do szukania dziwnych problemów raczej w przeglądarce niż w kodzie.

  1. <?php
  2. $included = include_once(&#092;"$page\");
  3. ?>
Tutaj jak rozumiem nie ma tej dziwnej "encji", a co ze slashem na końcu?
Go to the top of the page
+Quote Post
rgalka
post 12.05.2008, 11:29:10
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.05.2008

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


oczywiście tam powinno być:
  1. <?php
  2. $included = include_once("$page");
  3. ?>


niestety, nie za bardzo mogę umieścić to na ogólnodostępnym serwerze, czego bardzo żałuję.

Ten post edytował rgalka 12.05.2008, 11:32:20
Go to the top of the page
+Quote Post
potreb
post 12.05.2008, 15:01:54
Post #5





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


  1. <?php
  2. $page = $_GET['page'];
  3. $included = include_once("$page");
  4. ?>


--------------------

Go to the top of the page
+Quote Post
rgalka
post 13.05.2008, 09:10:24
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.05.2008

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


tak żeczywiście to może byłby dobry pomysł, gdyby nie fakt, że przed template.php includowany jest plik conf.php, którego zadaniem jest odebranie zmienne $_GET i na jej podstawie przypisanie odpowiedniej wartości do zmiennej $page.

ale przetestowałem to swoje "NiewiadomoCo" w lokalnej sieci na innych komputerach i okazało się, że problemy są tylko w przypadku Internet Expolorer w wersji 6. w IE7 wszystko bangla. zatem pytanie co powoduje te problemy w wersji 6. dodatkowo na kolejnych komputerach są problemy z ładowaniem innych podstron, tak jakby się w przeglądarce włączył jakiś "random".

jeśli ktoś spotkał się z takim problemem, lub chociaż ma pomysł co to może być, to proszę o pomoc, gdyż "NiewiadomoCo" będzie chodziło głównie pod IE6.
Go to the top of the page
+Quote Post
potreb
post 13.05.2008, 09:27:58
Post #7





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Możesz mieć problemy z serwerem lub spróbuj jeszcze w tej wersji:
  1. <?php
  2. if(!$_GET[p])
  3. {
  4.  $page = 'login.php';
  5. }
  6. else
  7. {
  8.  switch($_GET[p])
  9.  {
  10. case 'login':
  11. $page = 'login.php';
  12. break;
  13.  
  14. case 'home':
  15. $page = 'main.php';
  16. break;
  17.  
  18. case 'user':
  19. $page = 'users.php';
  20. break;
  21.  
  22. case 'logout':
  23. $page = 'logout.php';
  24. break;
  25.  
  26. default:
  27. $page = 'login.php';
  28.  }
  29. }
  30. ?>


Sprawdzałem u siebie i wszystko jest okey.

Ten post edytował potreb 13.05.2008, 09:28:24


--------------------

Go to the top of the page
+Quote Post
rgalka
post 13.05.2008, 11:03:10
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.05.2008

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


niestety zaproponowane rozwiązanie nie działa->wszystko pozostaje po staremu
jeśli chodzi o kwestię serwera, to nie mogę się z tobą zgodzić, ponieważ na tym samym serwerze, ale pod IE7, mozillą i operą wszystko działa poprawnie. dlatego skłaniałbym się ku twierdzeniu, że to jednak wina przeglądarki.
niestety w zachowaniu przeglądarki brak jakiej kolwiek konsekwencji, podstona, która ładowała się normalnie w pierwszym momencie, nie wyświetla się przy następnej odsłonie. natomiast ta z którą były problemy wcześniej, nagle się ładuje. to dodatkowo utrudnia znalezienie rozwiązania problemu.
czekam na kolejne pomysły
Go to the top of the page
+Quote Post
potreb
post 13.05.2008, 11:10:26
Post #9





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Dość dziwna sprawa. Nie wiem dlaczego u mnie działa poprawnie. Może wyczyść cache przeglądarki i dodatkowo możesz pozamieniać:
  1. <?php
  2. $included = include_once("$page");
  3. // na
  4. $included = include("".$page."");
  5. ?>


Już nic więcej nie wymyślę.
Możesz jeszcze na początku indeksu dać:
error_reporting(E_ALL);

Może jakiś komunikat się wyświetli i dodatkowo zmieniłem:
  1. <?php
  2. if(!file_exists($page))
  3. {
  4.  $page = 'login.php';
  5.  include("".$page."");
  6. }
  7. else
  8. {
  9.  include_once("$page");
  10. }
  11. ?>


Ten post edytował potreb 13.05.2008, 11:10:38


--------------------

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 07:50