Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z funkcją header
Forum PHP.pl > Forum > Przedszkole
tomazzi
Probuje stworzyć prosty system logowania. Napotkałem problem: chcę, aby po udanej rejestracji pokazał się komunikat, a po kilku sekundach nastąpiło przekierowanie na stronę logowania. W kodzie wygląda to tak:
Kod
if($log->checkUser()){
                echo "Rejestracja przebiegła pomyślnie. Poczekaj aż system przekieruje Cię na stronę logowania.";
                sleep(5);
                header("Location: log.php");
            }


Problem w tym, że w takiej postaci nie wyświetla się komunikat, wywyołuje się jedynie funkcja sleep(), po czym następuje przekierowanie. Gdy wyrzuce funkcje header komunikat pokazuje się normalnie. Jak można temu zaradzić?
Pawel_W
wyświetl stronę z komunikatem, a następnie przekieruj za pomocą meta bądź js
tomazzi
Oba wymienione przez Ciebie sposoby są mi zupełnie nie znane. Mógłbyś nakreślić schemat postępowania?
Spawnm
Wyświetlasz strone html która ma tag meta który przekieruje po 5s.
tomazzi
Sorry ale nie mam pojęcia jak to zrobić. Jedyny sposób który znam, aby wyświetlić stronę z poziomu php to funkcja header albo składnie heredoc.
Wazniak96
A takiej znanej stronki jak google.pl nigdy nie używałeś.? Pierwsze co wyświetliło się po wpisaniu "przekierowanie po czasie META" ---> Klik
tomazzi
Dalej nie wiem jak to zrobić kod, który podałem znajduje się w klasie Registration. Przy rejestracji tworzony jest obiekt tej klasy po pomyślnym dodaniu do bazy nowego użytkownika chcę zrobić przekierowanie. Da się to zrobić z poziomu obiektu przez meta tag?
Spawnm
Tomazzi, masz wstawić jeden tag <meta> do sekcji <head>. Czego tutaj nie ogarniasz?!
tomazzi
Nie mam sekcji head. Mam oddzielny plik php z klasą registration, w której znajduje się kod który podałem.

Nie rozumiecie mnie. Jak wrzuce tag meta do strony z formularzem rejestracji. Przekierowanie jest automatycznie po x sekundach. Użytkownik musi podać dane do rejestracji, po wpisaniu danych do formularza i kliknięciu "ok" tworzony jest obiekt registration. Jego zadaniem jest wrzucenie danych do bazy i sprawdzenie czy się nie powtarzają jeśli wszystko jest ok, chcę wyświetlić prosty komunikat i przekierować do strony log.php.

Zdaje sobie sprawę, że być może mój system nie jest pisany w sposób książkowy. Pewnie z tąd te nie porozumienia. Prosze o wyrozumiałość jest to moja pierwsza samodzielnie pisana aplikacja. Do tej pory uczyłem się tylko czytając ksiązki i analizując przykłady. Może udzilicie mi jakiś wskazówek jak napisać wzorcowy system logowania?
mieszkos
Nie, po prostu nie skumałeś.
Chodzi o to, że teraz wyświetlasz sam komunikat nie? A im chodzi o to byś po prostu zamiast tego

  1. if($log->checkUser()){
  2. echo "Rejestracja przebiegła pomyślnie. Poczekaj aż system przekieruje Cię na stronę logowania.";
  3. sleep(5);
  4. header("Location: log.php");
  5. }


A konkretnie, zamiast tego co jest w Ifie, wczytał tzw "widok", czyli np zrobić sobie funkcję (to taki przykład teraz banalny) np. show_success() w której załadujesz jakiś plik .php w którym będziesz mieć stronke z tym komunikatme twoim ze rejestracja przebiegła pomyślnie itd, i w tym pliku jescze w skecji meta dać właśnie te przekierowanie META smile.gif i ktoś zobaczy komunikat a po 5 sek go przewali na stronę jaką chcesz.
mokry
  1. echo 'Rejestracja przebiegła pomyślnie. Poczekaj aż system przekieruje Cię na stronę logowania. <meta http-equiv="refresh" content="5;url=log.php" /> '
tomazzi
'Mokry' doklejenie na końcu komunikatu tag meta działa wzorowo.

Cytat(mieszkos @ 3.01.2013, 23:54:14 ) *
Nie, po prostu nie skumałeś.
Chodzi o to, że teraz wyświetlasz sam komunikat nie? A im chodzi o to byś po prostu zamiast tego

  1. if($log->checkUser()){
  2. echo "Rejestracja przebiegła pomyślnie. Poczekaj aż system przekieruje Cię na stronę logowania.";
  3. sleep(5);
  4. header("Location: log.php");
  5. }


A konkretnie, zamiast tego co jest w Ifie, wczytał tzw "widok", czyli np zrobić sobie funkcję (to taki przykład teraz banalny) np. show_success() w której załadujesz jakiś plik .php w którym będziesz mieć stronke z tym komunikatme twoim ze rejestracja przebiegła pomyślnie itd, i w tym pliku jescze w skecji meta dać właśnie te przekierowanie META smile.gif i ktoś zobaczy komunikat a po 5 sek go przewali na stronę jaką chcesz.


Wszystko jasne tylko nie wiem jak technicznie wykonać "wczytanie widoku". Przychodzi mi tylko na myśl funkcja header. Pomyślałem teraz, że może warto byłoby zrobić funkcję która pobierałaby zmienną z komunikatem a następnie wyświatlała stronę podaną stronę html z komunikatem ze zmienne, byłoby to chyba bardziej eleganckie rozwiązanie. Da się coś takiego zrobić?
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.