Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odswiezanie
Forum PHP.pl > Forum > Przedszkole
Gość_kuba
mam jakis tam plik, w ktorym mam link odnoszacy sie do strony wyloguj.php.
po kliknieciu tego linka, wyloguj.php powinno od razu mnie przeniesc do plan.php - bynajmniej tak bym chcial, ale nie dziala.

w wyloguj.php mam taki kod:
  1. <?php
  2. if (!isset($_COOKIE['nazwa'])) {
  3. header (&#092;"Location: http://localhost/plan/plan.php\");
  4. exit();
  5. } else {
  6. setcookie ('nazwa', '', time()-10, '/', '', 0);
  7. }
  8. ?>


dziala dopiero po kliknieciu 'odswiez'.
jak to poprawic?
kszychu
Może za pierwszym razem masz nieustawione ciastko?
Gość_kuba
ciastka mam poustawiane, bo...
podczas logowania jest tworzone ciastko i ktos tam jest przekierowywany do admin.php, gdyby nie bylo ciastka, wowczas niemoglby sie wyswietlic ten plik w oknie przegladarki.
problem mam tylko z wylogowaniem, a wlasciwie, odswiezaniem, bo wylogowuje poprawnie.

a to kod potwierdzajacy, ze ciastko jest tworzone:
  1. <?php
  2. include ('../plik.php');
  3. if (isset($_POST['wyslij'])) {
  4. $message = NULL;
  5. if (strlen($_POST['haslo1']) > 0) {
  6. if (($_POST['haslo1']) == HASLO2) {
  7. $haslo = TRUE;
  8. } else {
  9. $haslo = FALSE;
  10. $message .= 'podałe&para; nieprawidłowe hasło.' . '<br />';
  11. }
  12. } else {
  13. $haslo = FALSE;
  14. $message .= 'podaj hasło.';
  15. }
  16. if ($haslo) {
  17. setcookie ('uzytkownik', HASLO2, time()+1200, '/', '', 0);
  18. header (&#092;"Location: http://localhost/folder/admin.php\");
  19. exit();
  20. } else {
  21. $message .= 'spróbuj jeszcze raz.';
  22. }
  23. }
  24. ?>
Andree
a moze daj to
  1. <?php
  2.  
  3. if (!isset($_COOKIE['nazwa'])) {
  4. header (&#092;"Location: http://localhost/plan/plan.php\");
  5. exit();
  6. } else {
  7. setcookie ('nazwa', '', time()-10, '/', '', 0);
  8. header (&#092;"Location: http://localhost/plan/plan.php\");
  9. }
  10.  
  11. ?>



sam jestem poczatkujacy,ale wydaje mi sie ze nie dziala od razu po kliknieciu dlatego ze jesli ciacho jest to je kasuje tylko ,ale skrypt sie sam nie odswieza smile.gif
Gość_kuba
a no rzeczywiscie... tylko walnac sie w sciane. teraz wydaje sie to takie banalne, ze az mi glupio... dzieki.
jareks
Mam podobny problem, dlatego nie zakładałem nowego tematu.

Napisałem prosty system newsowy z możliwością komentowania oparty o bazę mysql. Chciałbym, by po wysłaniu komentarza z formularza do bazy strona odświerzyła się, by automatycznie można było zobaczyć napisany komentarz. (F5 powoduje, że komentarz ten zapisuje się do bazy jeszcze raz).

Próbowałem użyć proponowanej funkcji header("Location: "), jednak mam problem z poprawnym jej użyciem.

Cytat
header() może być wywoływana jedynie do momentu nim zostanie wysłana jakakolwiek treść, tzn. znaczniki HTML, puste linie lub wynik pracy php
Tymczasem przecież ja wysyłam wcześniej na stronę formularz.

Cytat
można użyć buforowania wyjścia aby ominąć ten problem. Wszystko, co skrypt wyśle do przeglądarki zostanie zatrzymane na serwerze do momentu, kiedy pojawi się instrukcja wysłania danych. Można to zrobić za pomocą funkcji ob_start() i ob_end_flush()
Nie bardzo jednak wiem jak się do tego zabrać.

Będę wdzięczny za jakieś wskazówki.
Za wskazówkę typu "Odsyłam do wyszukiwarki" serdecznie dziękuję. Za strony w języku innym niż polski również tongue.gif
yavaho
Cytat
Chciałbym, by po wysłaniu komentarza z formularza do bazy strona odświerzyła się, by automatycznie można było zobaczyć napisany komentarz.
Jezeli formularz do wysylania komentarzy i skrypt wyswietlajacy te komentarze beda znajdywac sie na jednej i tej samej stronie to nie musisz uzywac funkcji header.
Musisz tylko zbudowac taką strone z zachowaniem odpowiednej kolejnosci.
Np tak:
1) Sprawdzenie poprawnosci danych wysłanych z formularza
2) Zapisanie komentrzy do bazy
3) Odczytanie z bazy i wyswietlenie
4) Formularz

Jezeli formularz masz na osobnej stronie to musisz uzyc funkcji "header('Location: jakasstrona.php')" Tylko ze ta funkcja musi sie znajdywac na samym poczatku strony. Jezeli funkcji header nie mozesz umiescic na poczatku strony to musisz uzyc buforowania wyjścia i zastosowac funkcje: ob_start() i ob_end_flush(). Jako pierwszy wiersz na stronie dajesz: ob_start() a ostatni ob_end_flush().

Cytat
(F5 powoduje, że komentarz ten zapisuje się do bazy jeszcze raz).
A co do zabezpieczenia strony przed kilkakrotnym wyslaniem jednego i tego samego komentarza to zastosuj ciasteczka lub sesje. Ja mam inne rozwiazanie: Przed zapisem komentarza do bazy danych sprawdzam czy w bazie nie istnieje juz identyczny komentarz wyslany przez ta sama osobe z tego samego IP w przeciagu ostatnich kilku minut.
jareks
Odczytanie i wyświetlanie komentarzy realizuje w pliku wyswietlajacym newsa. Natomiast dodawanie komentarza już w innym pliku.

Tak czy inaczej, pomocna wydaje mi się wskazówka o sprawdzeniu czy komentarz dany komentarz napisany już przez tą samą osobę już istnieje w bazie.

Dzięki za odpowiedź. Pomogłeś. smile.gif

Wpadłem na inny pomysł:
Za pomocą javascript otwieram nowe okno, gdzie jest samo dodanie komentarzy bez ich wyświetlanie. Tylko jak tam przesłać zmienną o wartości równej numerowi komentowanego newsa, który jest niezbędny do zapisania komentarza?

Oto fragment javasript, który wykorzystuje.
W ramach <head></head>:
  1. <!--
  2. function displayWindow(url, width, height) {
  3. var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height + ',resizable=0,scrollbars=yes,menubar=no' );
  4. }
  5. //-->

i dalej:
  1. <A HREF=javascript:displayWindow('news/komentarze/dodaj.php',676,510)>Dodaj komentarz</A>
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.