Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Automatyczne przeładowanie strony
joolek
post 15.11.2010, 13:11:28
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.11.2010

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


Hej, przedszkolak potrzebujemy pomocy.
Poróbowałem na innym forum ale w końcu się poddałem dlatego teraz bezpośrednio do zawodowców.

Oto fragment kodu
  1. }
  2.  
  3. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  4. $message = "Tresc wiadomosci:\n$_POST[tresc]\nWyslal: $_POST[imie]\ne-mail: $_POST[email]";
  5. $header = "From: $_POST[imie] <$_POST[email]>";
  6. @mail("email@gmail.com","Wiadomosc ze strony WWW","$message","$header")
  7. or die('Nie udalo sie wyslac wiadomosci');
  8. echo "Dzieki za wiadomosc - odzezwiemy sie wkrotce";
  9. sleep(1);
  10. @header("Location: <a href="http://strona" target="_blank">http://strona</a> na która chce przekierować");
  11. }


Mój problem, dla mnie ogromny polega na tym że po wysłaniu wiadomości chciałbym aby strona przeładowała się automatycznie na inny adres pod którym podziękuje za wysłanie wiadomości itp itp. Na ten moment strona wyświetla podziękowanie za wysłanie wiadomości gdzieś w stronie, poprostu wrzucone bez ładu i za każdym razem jak odświeżam stronę to wysyła kolejnego maila.

Czy obejdzie się to bez Javy?
Czy mogę dwa razy użyć header?

Generalnie bardzo proszę o pomoc w rozwiązaniu mojego przedkoszkolakowego problemu.
Z góry dzięki za wasz czas.
Pozdrawiam
J
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
CuteOne
post 15.11.2010, 13:43:39
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


A po co ci JavaScript [żadne Java] questionmark.gif

Tam gdzie masz formularz dodaj
  1. <?php
  2.  
  3.  
  4. if(####) {
  5.  
  6. }
  7. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email']) && (!$_SESSION['interval'] || time() < $_SESSION['interval'])) {
  8. $message = "Tresc wiadomosci:\n$_POST[tresc]\nWyslal: $_POST[imie]\ne-mail: $_POST[email]";
  9. $header = "From: $_POST[imie] <$_POST[email]>";
  10. @mail("email@gmail.com","Wiadomosc ze strony WWW","$message","$header")
  11. or die('Nie udalo sie wyslac wiadomosci');
  12. echo "Dzieki za wiadomosc - odzezwiemy sie wkrotce";
  13.  
  14. $_SESSION['interval'] = time() + 300; // 5min
  15. sleep(1);
  16. @header("Location: http:// strona. pl/");
  17. }
  18.  
  19.  


Innymi słowy użytkownik nie może wysłać kolejnego maila przez 5min

Ten post edytował CuteOne 15.11.2010, 13:47:03
Go to the top of the page
+Quote Post
konrados
post 15.11.2010, 13:44:21
Post #3





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


Przed wywołaniem header nie możesz wypluwać niczego na ekran (a Ty wypluwasz echo "Dzieki za wiadomosc ..")

Tak więc chcesz raczej przekierować (wywołać header) na stronkę np. wyslane.php gdzie wyplujesz swoje "dzięki za wiadomość..."
Go to the top of the page
+Quote Post
CuteOne
post 15.11.2010, 13:49:37
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Zrobił sleep [chociaż faktycznie głupie rozwiązanie smile.gif]
Go to the top of the page
+Quote Post
thek
post 15.11.2010, 15:04:39
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Problem to wspomniane wyplucie podziękowania przed header. O to Ci się pluje i pluć będzie, bo według standardów przed wysłaniem nagłówków do przeglądarki nic nie powinno się wymknąć do niej. Jak to rozwiązać? Przykładowo wrzucasz komunikat podziękowania do sesji i na stronie do której kierujesz sprawdzasz, czy jakiś komunikat jest. Jeśli tak - wyświetlasz i usuwasz z sesji (żeby sobie on w niej nie wisiał do czasu końca sesji). A co do możliwości blokowania ponownej wysyłki maila, to pomysłów jest wiele, ale tak naprawdę nie można tego napisać tak, by ktoś nie obszedł tego. Jedynie jeśli ktoś jest zalogowany, to mu blokniesz wysyłkę poprzez blokadę na id smile.gif Ale gość zawsze to obejdzie przy odrobinie wiedzy i/lub sprytu.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Webmasterr
post 15.11.2010, 18:17:42
Post #6





Grupa: Zarejestrowani
Postów: 71
Pomógł: 5
Dołączył: 7.08.2010

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


NIe lepiej użyć metatagu Refresh w sekcji Head strony?

Do sekcji Head dodajesz:

  1. <meta http-equiv="refresh" content="ilość sekund; url=adres URL" />


--------------------

Darmowe e-booki (kliknij tutaj)
------------------------------------------------------------
Zapunktuj (kliknij tutaj) <--- Zarejestruj się i zobacz!
Darmowe doładowania telefonu, Eurogąbki itp.
------------------------------------------------------------
PHP 5, CSS 2.1, xHTML 1.1, JavaScript 1.7
Go to the top of the page
+Quote Post
luck
post 15.11.2010, 19:15:53
Post #7





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


A jak już bardzo chcesz zrobić przekierowanie po wysyłce za pomocą "header()", to daj na początku pliku:
A na końcu:


--------------------
Go to the top of the page
+Quote Post
joolek
post 16.11.2010, 12:27:07
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.11.2010

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


Hej,
Dzięki za wasze odpowiedzi.... (tak na marginesie to jak dobrze że nie pamiętam jak to było być przedszkolakiem bo... bo zupełnie nie rozumiem o czym do mnie mówicie smile.gif )

A poważnie to:
- nie chce ograniczać nikomu czasu przebywania na stronie (wielu moich znajomych potrzebuje czasu aby napisać kilka słów na klawiaturce)
- specjalnie ograniczać wysyłania kolejnej wiadomości. To strona dla skoczków którzy potrzebują szybkiej możliwości skontaktowania się ze mną, jak najprościej się da.

Z całym szacunkiem i uznaniem do waszych umiejętności - tutaj nikt nie będzie usiłował czegoś obejść - poprostu chciałem po wysłaniu wiadomości przejść na konkretny adres.

Czy jak przedszkolak się uśmiechnie to dostanie jakiegoś ew. gotowca albo naprowadzicie mnie b. czytelnie co mam gdzie zrobić.

Ja wiem że takich jak ja kopie się w (...) ale b.proszę o pomoc.
Z góry dzięki
J
Go to the top of the page
+Quote Post
CuteOne
post 16.11.2010, 16:28:04
Post #9





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Po wysłaniu maila ( mail() ) i przejściu na nową stronę ( header('Location') ) nie można ponownie wysłać maila poprzez odświeżenie strony
Go to the top of the page
+Quote Post
joolek
post 16.11.2010, 17:07:49
Post #10





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.11.2010

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


OK - ale jak można najprościej przejść na inną stronę?
Dzięki
Go to the top of the page
+Quote Post
CuteOne
post 16.11.2010, 18:38:08
Post #11





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


toż napisałem........ do tego masz opisane jak ominąć wszelkie błędy związane z wysyłaniem kilku nagłówków do przeglądarki [ob_start()]

google i jedziesz..
Go to the top of the page
+Quote Post
joolek
post 17.11.2010, 12:36:32
Post #12





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.11.2010

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


Hej,

Dzięki za podpowiedź, ch...nie bardzo ciężko mi załapać to w czym wy śmigacie tak biegle no ale... każdy ma swoją działkę.
Powiedzmy że działa - jeszcze parę lat i to dopracuje smile.gif

Mam jeszcze jedno pytanie: czy w

  1. echo "jakaś tam wiadomość";
  2. }


Czy jest możliwość edycji stylu tego komunikatu? Tzn może zmiana czcionki itp itd?

Dzięki
Go to the top of the page
+Quote Post
thek
post 17.11.2010, 12:41:59
Post #13





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Najprościej? Obejmij to tagiem html. Choćby <span style="definicja fonta koloru, tła itp...">Komunikat</span>


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
joolek
post 22.01.2011, 22:01:33
Post #14





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.11.2010

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


Hej, zrobilem jak powiedziales i wyskakuje mi blad

  1. Parse error: parse error, unexpected '<' in /kontakt.php on line 95



  1. // sprawdzamy, czy zmienne przeslane z formularza nie sa puste
  2. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  3. // jezeli powyzszy warunek jest spelniony tworzona jest wiadomosc
  4. // zmienna $message zawiera tresc wiadomosci
  5. $message = "Tresc wiadomosci:\n$_POST[tresc]\nWyslal: $_POST[imie]\ne-mail: $_POST[email]";
  6. // zmienna $header zawiera przede wszystkim adres zwrotny
  7. $header = "From: $_POST[imie] <$_POST[email]>";
  8. // funkcja mail() za pomoca której wiadomosc zostanie wyslana
  9. @mail("adres@gmail.com","Wiadomosc ze strony WWW","$message","$header")
  10. or die('Nie udalo sie wyslac wiadomosci');
  11. // wyswietlenie komunikatu w przypadku powodzenia
  12. <span class="dzieki">
  13. echo "Your email has been sent correctly - we will back to you shortly";
  14. </span>
  15. }
  16. // lub w przypadku nie wypelnienia formularza do konca
  17. //else echo "<span style=\"color: #FF0000; text-align: center;\">Wypelnij wszystkie pola formularza!</span>";
  18. //ob_end_flush();
  19. ?>



Linia 95 odpowiada 13. Proszę naprowadź co robię źle.
Dziękuje!
Go to the top of the page
+Quote Post
thek
post 4.02.2011, 18:21:15
Post #15





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Twoim problemem jest już linia 12 tutaj. (<span class="dzieki">) i będzie 14 ( </span> ), które to są tagami html walniętymi wprost do php. Tak nie można zrobić. Albo je wrzuć do echo, ale "wyrzuć" poza interpreter. Czyli albo
  1. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  2. $message = "Tresc wiadomosci:\n$_POST[tresc]\nWyslal: $_POST[imie]\ne-mail: $_POST[email]";
  3. $header = "From: $_POST[imie] <$_POST[email]>";
  4. @mail("adres@gmail.com","Wiadomosc ze strony WWW","$message","$header") or die('Nie udalo sie wyslac wiadomosci');
  5. echo '<span class="dzieki">';
  6. echo "Your email has been sent correctly - we will back to you shortly";
  7. echo '</span>';
  8. }
  9. ?>

albo
  1. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  2. $message = "Tresc wiadomosci:\n$_POST[tresc]\nWyslal: $_POST[imie]\ne-mail: $_POST[email]";
  3. $header = "From: $_POST[imie] <$_POST[email]>";
  4. @mail("adres@gmail.com","Wiadomosc ze strony WWW","$message","$header") or die('Nie udalo sie wyslac wiadomosci');
  5. ?>
  6. <span class="dzieki">
  7. <?php
  8. echo "Your email has been sent correctly - we will back to you shortly";
  9. ?>
  10. </span>
  11. <?php
  12. }


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
benio101
post 4.02.2011, 18:36:44
Post #16





Grupa: Zarejestrowani
Postów: 111
Pomógł: 10
Dołączył: 16.07.2009
Skąd: Toruń

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


@up: Ten 2. kod ma niepotrzebne 2 linie i echo. Lepiej:

  1. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  2. $message = "Tresc wiadomosci:\n$_POST[tresc]\nWyslal: $_POST[imie]\ne-mail: $_POST[email]";
  3. $header = "From: $_POST[imie] <$_POST[email]>";
  4. @mail("adres@gmail.com","Wiadomosc ze strony WWW","$message","$header") or die('Nie udalo sie wyslac wiadomosci');
  5. ?>
  6. <span class="dzieki">
  7. Your email has been sent correctly - we will back to you shortly
  8. </span>
  9. <?
  10. }
Go to the top of the page
+Quote Post
--joolek--
post 24.06.2011, 15:38:45
Post #17





Goście







Dziękuje dziękuje dziękuje!
...i jeszcze raz dziekuje smile.gif
J
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 07:20