![]() |
![]() ![]() |
![]() |
![]()
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. |
|
|
![]()
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... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
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? |
|
|
![]()
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. |
|
|
![]()
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ć... |
|
|
![]()
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. |
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 214 Pomógł: 18 Dołączył: 25.04.2009 Ostrzeżenie: (20%) ![]() ![]() |
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 |
|
|
![]()
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; } ?> |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 214 Pomógł: 18 Dołączył: 25.04.2009 Ostrzeżenie: (20%) ![]() ![]() |
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) |
|
|
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 00:48 |