Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z sesją w IE
Forum PHP.pl > Forum > PHP
pjozwiak1
Witam,
Mam bardzo dziwny problem z sesją w Internet Explorerze.
Mianowicie mam taki skrypt:

  1. <?php
  2. //Zabezpieczenie przed bezpośrednim
  3. //odwołaniem się do skryptu
  4. //aplikacja/app.inc.php
  5. if (!defined('APP_DIR')) exit('Nie można wywołać skryptu');
  6.  
  7. //Załadowanie pliku konfiguracyjnego
  8. include('define.inc.php');
  9.  
  10. //Załadowanie klas obiektów
  11. include(APP_DIR.'klasy/blad.klasa.inc.php'); //Błąd
  12. include(APP_DIR.'klasy/baza_danych.klasa.inc.php'); //Baza danych
  13. include(APP_DIR.'klasy/functions.klasa.inc.php'); //Klasa z funkcjami niezwiązanymi z obiektami
  14. include(APP_DIR.'klasy/sekcja.klasa.inc.php'); //Klasa z funkcjami niezwiązanymi z obiektami
  15.  
  16. //Błąd aplikacji
  17. $error = null;
  18. $info = null;
  19.  
  20.  
  21. //zmienna rozpoznająca wybrane menu
  22. if (isset($_GET['page']))
  23. $page = $_GET['page'];
  24. else $page = null;
  25.  
  26. //Nawiązanie połączenia z bazą danych
  27. if (!Blad::jestBledem($blad = Baza_danych::polaczZBazaDanych())) {
  28.  
  29. //Rozpoczęcie sesji
  30.  
  31. //tutaj wykonujemy obliczenia związane z ładowaniem stron
  32. //********************************* OBSŁUGA WYLOGOWANIA **************************
    ********
  33. if (isset($_GET['logout']))
  34. {
  35.  unset($_SESSION['ADMIN']);
  36.  $info = 'Poprawnie wylogowano.';
  37. }
  38. //********************************* OBSŁUGA LOGOWANIA ****************************
    ********
  39. if(isset($_POST['login'])&&isset($_POST['pass'])) //sprawdzamy dane logowania
  40.  {
  41.  //$ret = User::sprawdzLogowanie($_POST['login'],$_POST['pass']);
  42.  if(USER==$_POST['login'] && UPASSWD==$_POST['pass'])
  43.  {
  44.  $_SESSION['ADMIN'] = true;
  45.  $_SESSION['LOGIN'] = strtolower($_POST['login']);
  46.  //poprawnie zalogowano - obliczenia związane z definicją środowiska po zalogowaniu
  47.  }else
  48.  { // niepoprawny login
  49.  $error = 'Niepoprawny login lub hasło.';
  50.  }
  51.  }
  52. //********************************* EDYCJA SEKCJI ********************************
    ********
  53.  if(isset($_POST['SECID']))
  54.  {
  55.  $Sekcja = Sekcja::getObjectById($_POST['SECID']);
  56.  }
  57. //********************************* ŁADOWANIE DANYCH UŻYTKOWNIKA *****************
    ********
  58. /*if(isset($_SESSION['ADMIN']))
  59.   {
  60. $uzytkownik = new User(User::getUserData($_SESSION['LOGIN']));
  61.   } else $uzytkownik = null;*/
  62. //********************************** OBSŁUGA PODSTRON ****************************
    *********
  63.  switch ($page)
  64.  {
  65. case 'home' : break;
  66. case 'login'  : break;
  67. default  : $page = 'home'; break;
  68.  }
  69. //********************************************************************************
    *********
  70.  
  71. } else 
  72. {
  73. //Błąd krytyczny - brak połączenia z bazą danych
  74. $error = $blad->_tresc;
  75. include(APP_DIR.'szablony/fatal.error.tpl.php');
  76. exit();
  77. }
  78.  
  79. //Wyświetlenie layoutu
  80. include (APP_DIR.'szablony/index.tpl.php');
  81. ?>


Wszystko idealnie działa w każdej innej przeglądarce. Jednak jak uruchamiam stronę na IE to po kliknięciu na niektóre linki na tej stronie strona się nie ładuje. Tzn.
Naciskam link. Pojawia się biały ekran w miejscu strony. Adres strony w IE się nie zmienia na nowy. Dopiero po kliknięciu na odśwież strona się ładuje.

Ja już rozkładam ręce, nie wiem gdzie szukać błędu. Problem znika jak wykomentuje linie z
Kod
session_start()

Na pweno nigdzie nie ma znaków które wysyłają się przed sesją. Nawet nie wiem jak dobrze określić co powoduje błąd i w którym miejscu.

Dla przykładu. Zdarzyło mi się taka sytuacja, gdzie zawartość strony jest ładowana z bazy danych. Załóżmy że szablon strony jest stały i ładujemy tylko treść na podstawie zmiennej
Kod
$_GET['page']
. Strona potrafi działać poprawnie dla wartości tej zmiennej np. 1 a dla wielu innych wartości występuje opisany powyżej błąd.

Proszę o pomoc.

Śledząc dalej problem napotkałem na bardzo dziwne zachowanie. Okazuje się, że białe okno ukazujące się w przeglądarce IE jest wynikiem zatrzymania się parsowania HTML'a na lini z
  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />

Wczytywanie strony zatrzymuje się zawsze w tym miejscu. Jednak nie zawsze strona się zatrzymuje. Są podstrony dla których to działa , a dla innych powoduje zawieszenie się.

Może ktoś z Was ma pomysł co może być przyczyną.
W innych przeglądarkach jest ok.
Jeśli zmienie pozycję tego wpisu w sekcji HEAD to skrypt wykona się tylko do tego miejsca gdzie jest definicja kodowania znaków?questionmark.gif
fuul
To jest wina localhosta. Skrypt na serwerze bedzie działał poprawnie.


---
mysqli
pjozwiak1
U mnie nie ma znaczenia czy na localhoscie czy na innym serwerze (płatnym w nazwa.pl)
Wydaje mi się, że doszedłem jak obejść ten problem.
należy wysłać nagłówek

  1. <?php
  2. header('Content-Type: text/html; charset=iso-8859-2');
  3. ?>


Problem ten opisałem na innym poście: http://forum.php.pl/index.php?showtopic=78...mp;#entry403529
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.