Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> IE nie do końca reaguje na funkcję header()
freemp3
post
Post #1





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Tak jak w temacie. Wiem, że ten temat był poruszany wielokrotnie, jednak problemu nie udało mi się rozwiązać.
Więc struktura kodu wygląda mniej więcej tak. Jest to skrypt logowania i wylogowywania.
Logowanie:
Po wejściu na stronę index.php skrypt sprawdza sesje. Jak jest pusta przekierowanie na login.php. Jak narazie ok. Po podaniu danych skrypt ma przeładować stronę i sprawdzić dane. Jak jest ok przekierowanie na index i tu jest zonk bo jest biała strona i dopiero po odświeżeniu przechodzi do index. W pasku adresu pozostaje dalej login.php

Wylogowani:
Po kliknięciu w wyloguj skrypt przechodzi na wyloguj.php po czym ma się przekierować na index.php, a ponieważ zmienne sesyjne są puste powinno znów przekierować na login. No i w tym momencie znowu zonk i biała strona. W pasku adresu jest index.php, czyli przez wyloguj przeleciał normalnie. Po odświeżeniu leci dalej.
Go to the top of the page
+Quote Post
osl
post
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


może jakiś kawałek kodu?
wróżki wolne wzięły...
Go to the top of the page
+Quote Post
freemp3
post
Post #3





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


index.php
  1. <?php
  2. if($_SESSION['log'] == "")
  3. {
  4.    header("Location: adres_strony/login.php");
  5.    exit;
  6. }
  7. ?>


login.php
  1. <?php
  2. $_SESSION['log'] == "1";
  3. $_SESSION['nick'] == "$nick";
  4. header("Location: adres_strony/index.php");
  5.      exit;
  6. ?>

wyloguj.php
  1. <?php
  2. if(isset($_POST) && $_POST['wyloguj'] == "tak")
  3. {
  4. $_SESSION['nick'] = "";
  5. $_SESSION['log'] = "";
  6.    header("Location: adres_strony/index.php");
  7.        exit;
  8. }
  9. ?>


Ten post edytował freemp3 23.04.2009, 21:40:04
Go to the top of the page
+Quote Post
osl
post
Post #4





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


zakładam, że robisz session_start()?
ten exit raczej nie jest potrzebny po header (Location)
poza tym przy wylogowaniu przydało by się session_destroy().

Które to IE?
W innych przegladarkach ok?
Go to the top of the page
+Quote Post
freemp3
post
Post #5





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Oczywiście, że jest session_start();

Dokładna wersja IE to 6.0.2900.2180.xpsp i coś tam dalej.
Na innych przeglądarkach śmiga aż miło.
Go to the top of the page
+Quote Post
osl
post
Post #6





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


Nie bardzo widzę jakieś inne błędy w Twoim skrypcie, ale z IE nigdy nic nie wiadomo.
Pierwsze co mi sie nasuwa to że skrypt kończy pracę na exit, a przeglądarka nie dostała nowych nagłówków.
To bardzo naciągana teoria, jednakże z IE wszystko się może zdarzyć...
Go to the top of the page
+Quote Post
freemp3
post
Post #7





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


To raczej odpada. Wcześniej było bez, a dodałem je bo myślałem, że może przez to. Pierwotna wersja zakładała return, ale zmian nie było więc dałem exit no i zmian też nie ma.
Zapewne to wina M$. Trzeba będzie to jakoś obejść. Sprawdzę jeszcze jutro w pracy jak się tam przeglądarka zachowuje.
Go to the top of the page
+Quote Post
l0ud
post
Post #8





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Cytat
ten exit raczej nie jest potrzebny po header (Location)


Jeżeli ten skrypt coś później wykonuje (i to coś nie jest zabezpieczone warunkiem), to musi. Dużo dziur powstaje z takiego przekonania.

Ten post edytował l0ud 23.04.2009, 22:16:19
Go to the top of the page
+Quote Post
freemp3
post
Post #9





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Hmm... Dziwna sprawa. W pracy IE normalnie przekierowuje, a żeby było śmieszniej to jest ta sama wersja.
Może to jakoś zależy od łącza internetowego? Ja mam w domu tylko 512k, a tutaj jest 6m.

Jeszcze jedno pytanie. Czy po funkcji header() można zrobić jakiś panel informacyjny coś w stylu: "Zostałeś zalogowany kliknij dalej"?
Chodzi mi o takie zabezpieczenie, żeby nie było białej strony jak ktoś będzie się logował i wylogowywał (co zapewne rzadko się będzie zdarzało, ale zawsze się może zdarzyć).

Zauważyłem coś ciekawego jak dziś testowałem jeszcze skrypt. Mianowicie, po przejściu na przykład na stronę konfiguracji i wylogowaniu strona się tak jak by przeładuje i jest biała (dalej na pliku konfiguracyjnym) mimo, że w form wyraźnie jest, że ma iść do pliku wyloguj.php
Go to the top of the page
+Quote Post
okitoki
post
Post #10





Grupa: Zarejestrowani
Postów: 214
Pomógł: 18
Dołączył: 25.04.2009

Ostrzeżenie: (20%)
X----


nic po header("Location.... nie wypiszesz, ta funkcja od razu wysyła do przeglądarki kod 302 i nowy adres

poza tym tu błędu nie widać, błąd mogłeś usunąć modyfikując kod na potrzeby tego forum
Go to the top of the page
+Quote Post
lashus
post
Post #11





Grupa: Zarejestrowani
Postów: 39
Pomógł: 9
Dołączył: 12.04.2008

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


Z IE zawsze był problem (przynajmniej poniżej wersji 7.0, nie wiem jak wzwyż). Ja to obchodzilem javascriptem (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Użyj:

Kod
<?php
if(isset($_POST) && $_POST['wyloguj'] == "tak")
{
$_SESSION['nick'] = "";
$_SESSION['log'] = "";
    echo '<script type="text/javascript>
        window.location="http://google.com";
    </script>';
       exit;
}
?>
Go to the top of the page
+Quote Post
okitoki
post
Post #12





Grupa: Zarejestrowani
Postów: 214
Pomógł: 18
Dołączył: 25.04.2009

Ostrzeżenie: (20%)
X----


jeszcze widzę mały błąd, ten kod jest zakręcony

jak dajesz wyloguj to wysyła do index.php

index sprawdza że nie jesteś zalogowany to wysyła do login.php

login od razu cie loguje i znów lądujesz na index.php

czyli jednym słowem wyloguj według tego nie działa (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif)
Go to the top of the page
+Quote Post
freemp3
post
Post #13





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Też nad tym myślałem, ale wyloguj działa poprawnie. W pliku wylogowania są czyszczone sesje. Poza tym na innych przeglądarkach działa ok, no i u mnie w pracy o dziwo na IE śmiga. Pewnie to zależy od prędkości łącza. Wczoraj jeszcze się nad tym pomęczyłem i doszedłem do wniosku, że zawala plik silnika. Skrypt pisałem na podstawie tego skryptu:
http://phpbluedragon.pl/index.php?id=linuxmag_cms
Tam jest dokładnie ten sam błąd. Mało tego, to zauważyłem, że jeśli jestem już zalogowany i jestem w pliku index.php i kliknę w logo (czyli odświeżę index.php) to też wywala mi białą stronę, tak samo jest także na tym cms-ie. Spróbuje jeszcze tego z java. Może to rozwiąże problem, a jeśli nie to trzeba będzie przebudować strukturę skryptu.

No i sprawa jest jasna. Z kolegą programistą doszliśmy do wniosku, że nawala serwer. Na innych kod działa ok, po przepuszczeniu przez debuggery też jest ok, więc chyba sprawa się wyjaśniła.
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 - 00:48