Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Automatyczne wysyłanie formularza
Forum PHP.pl > Forum > PHP
xsonic
Witam robię sobie małą stronkę i nie mam pojęcia jak automatycznie wysyłać formularz dana ilość razy np 5 po naciśnięciu czegoś nie załadowaniu się strony.
Randallmaster
  1. <?php
  2. // sprawdzamy, czy zmienna $submit jest pusta
  3. if (empty($_POST['submit'])) {
  4. // wy?wietlamy formularz
  5. echo "<table border=\"0\"><form method=\"post\">
  6. <tr>
  7. <td align=\"right\"><font face=\"ARIAL\" SIZE=\"2px\" >Użytkownik:   </font></td>
  8. <td><input type=\"text\" name=\"uzytkownik\" style=\"width: 150px\"></td>
  9. </tr>
  10. <tr>
  11. <td align=\"right\"><font face=\"ARIAL\" SIZE=\"2px\" >Temat:   </font></td>
  12. <td><input type=\"text\" name=\"imie\" style=\"width: 150px\" maxlength='20'></td>
  13. </tr>
  14. <tr>
  15. <td align=\"right\"><font face=\"ARIAL\" SIZE=\"2px\" >e-mail:   </font></td>
  16. <td><input type=\"text\" name=\"email\" style=\"width: 150px\" maxlength='20'></td>
  17. </tr>
  18. <tr>
  19. <td align=\"right\"><font face=\"ARIAL\" SIZE=\"2px\" >Wiadomo?ć:   </font></td>
  20. <td><textarea name=\"tresc\" style=\"width: 300px; height: 70px\"></textarea></td>
  21. </tr>
  22. <tr>
  23. <td> </td>
  24. <td><br><center>
  25. <input type=\"submit\" class=\"wyslij\" name=\"submit\" value=\"Wy?lij\"><alt=\"Wy?lij\"></br></center> 
  26. </form>
  27. </tr>
  28. </table>";
  29. }
  30. // sprawdzamy, czy zmienne przesłane z formularza nie s? puste
  31. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  32. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomo?ć
  33. // zmienna $message zawiera tre?ć wiadomo?ci
  34. $message = "Użytkownik: $_POST[uzytkownik]\nTemat: $_POST[imie]\ne-mail: $_POST[email]\n\nWiadomo?ć:\n$_POST[tresc]";
  35. // zmienna $header zawiera przede wszystkim adres zwrotny
  36. $header = "From: $_POST[uzytkownik] <$_POST[email]>";
  37. // funkcja mail() za pomoc? której wiadomo?ć zostanie wysłana
  38. @mail("randall.kamil@gmail.com","Zmiana Konta - pracujkalisz","$message","$header")
  39. or die('Nie udało się wysłać wiadomo?ci');
  40. // wy?wietlenie komunikatu w przypadku powodzenia
  41. echo "<div align=\"center\"><font color='#43ae2e'>Wiadomo?ć została wysłana poprawnie! Dziękujemy.</font></div>";
  42. }
  43. // lub w przypadku nie wypełnienia formularza do końca
  44. else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
  45.  
  46. ?>


to kod z mojej strony przerób sobie smile.gif
xsonic
naprawdę nie wiem w czym to mi miało pomóc wiem jak zrobić formularz w html wyświetlić go w php echem tu chodzi żeby po naciśnięciu przycisku dane z formularza (te same) wysyłane były 5 razy w odstępie czasowym np 5 sekund

  1. <?php
  2.  
  3. echo '<form target="indexprawy" name="formularz" action="http://...." method="post" >
  4. <input type=submit value="Wyślij">
  5. </form>
  6.  
  7. <script>
  8.  
  9. function GO(){
  10. setTimeout("subForm()",5000)
  11. }
  12.  
  13. function subForm(){
  14. document.formularz.submit()
  15. }
  16.  
  17. onload = GO
  18.  
  19. </script> ';
  20.  
  21. ?>


Coś takiego mnie interesuje tylko żeby włączało się po naciśnięciu przycisku i powtarzało się 5 krotnie
furman12
pętla for oraz if + isset i sleep.
xsonic
a może jakiś przykład?

tz najgorsze nie wiem jak już wypełniony formularz zmusić do wysłania automatycznego bo w taki sposób to będzie mi się daną ilość razy wyświetlał przycisk wyślij, a on powinien mi sam pętlować żeby tego wyślij nie trzeba było naciskać

  1. <?php
  2. $czas = trim($_POST['czas']);
  3. $ilosc = trim($_POST['ilosc']);
  4. $hp = trim($_POST['hp']);
  5. if(empty($czas) and empty($ilosc) and empty($hp)){
  6. echo '<form target="indexprawy" name="formularz" action="http://...indexlewy.php" method="post" >
  7. <input type="text" name="czas" " size="5" maxlength="5" /><br />
  8. <input type="text" name="ilosc" " size="5" maxlength="5" /><br />
  9. <input type="text" name="hp" " size="5" maxlength="5" /><br />
  10. <input type=submit value="Zapisz">
  11. </form>';
  12. }
  13. else
  14.  
  15. for( $x = 0; $x <= $ilosc; $x++ ) {
  16.  
  17. sleep($czas);
  18.  
  19. echo '<form target="indexprawy" name="formularz" action="http://...strona.php'.$hp.'" method="post" >
  20. <input type=submit value="Wyślij">';
  21.  
  22. }
  23.  
  24. ?>


naprawdę nikt nie wie jak tozrobić?
tehaha
powiedz może dokładniej co TY próbujesz osiągnąć, bo ten sposób kombinowania jak na razie wydaje się bez sensu, powinieneś zrobić tak że po wypełnieniu formularza użytkownik klika na wyślij i wtedy skrypt php w pętli wysyła maila. czyli coś na zasadzie
  1. for($i=1;$i<=5;++$i)
  2. {
  3. mail();
  4. }
xsonic
wiec tak mam stronę osadzoną w 2 ramkach lewa to tak jakby spis treści prawa strona stąd te target-y na początku skrypt pyta się o ilość wysłań, czas pomiędzy nimi i zmienną która jest potem podawana w adresie do wysłania formularza po kliknięciu na zapisz to załadowywuje się w index-e lewym i powinno zacząć się wykonywać samo... czyli wysłać mi to np 5 razy poprzez indexprawy do serwera
tehaha
Po pierwsze to powinieneś zrezygnować z ramek, bo się często coś w nich chrzani poza tym to już bardzo przestarzały sposób. Po drugie no to robisz praktycznie tak jak Ci napisał furman12.Czyli robisz to tak: u góry tam gdzie masz formularz robisz taki kod:
  1. if(isset($_POST['send']))
  2. {
  3. if(!isset($_POST['repeats']) || !is_numeric($_POST['repeats']))
  4. {
  5. $repeats = '1';
  6. } else
  7. {
  8. $repeats = $_POST['repeats'];
  9. }
  10. if(!isset($_POST['intervals']) || !is_numeric($_POST['intervals']))
  11. {
  12. $intervals = '1';
  13. } else
  14. {
  15. $intervals = $_POST['intervals'];
  16. }
  17.  
  18. for($i=1;$i<=$repeats;++$i)
  19. {
  20. mail();
  21. sleep($intervals);
  22. }
  23. }


Resztę już chyba sam dopasujesz
Pilsener
Jak chcesz wysyłać tablicę $_POST na dowolny adres dowolną ilość razy to polecam CURL:
http://pl2.php.net/manual/pl/book.curl.php

Ale zapomnij, że użyjesz do tego browsera użytkownika kombinując z ramkami czy JS, prawia każda nowoczesna przegblądarka jest odporna na tego typu machinacje. I jak chcesz wykonać jakieś większe operacje to najlepiej dodać to do crona i wykonać np. w nocy.
xsonic
  1. <?php
  2. $czas = trim($_POST['czas']);
  3. $ilosc = trim($_POST['ilosc']);
  4. $hp = trim($_POST['hp']);
  5.  
  6. if(empty($czas) and empty($ilosc) and empty($hp)){
  7. echo '<form target="indexlewy" name="formularz" action="http://dysk1dysk1.cba.pl/plemiona/indexlewy.php" method="post" >
  8. Czas:<input type="text" name="czas" " size="7" maxlength="7" /><br />
  9. Ilość:<input type="text" name="ilosc" " size="5" maxlength="5" /><br />
  10. H:<input type="text" name="hp" " size="5" maxlength="5" /><br />
  11. <input type=submit value="Zapisz">
  12. </form>';
  13. }
  14. else
  15.  
  16.  
  17.  
  18.  
  19.  
  20. $send = "http://strona&hp=$hp";
  21.  
  22.  
  23. if(isset($_POST['send']))
  24. {
  25. if(!isset($_POST['ilosc']) || !is_numeric($_POST['ilosc']))
  26. {
  27. $ilosc = '1';
  28. } else
  29. {
  30. $ilosc = $_POST['ilosc'];
  31. }
  32. if(!isset($_POST['czas']) || !is_numeric($_POST['czas']))
  33. {
  34. $czas = '1';
  35. } else
  36. {
  37. $czas = $_POST['czas'];
  38. }
  39.  
  40. for($i=1;$i<=$ilosc;++$i)
  41. {
  42. mail($send);
  43. sleep($czas);
  44. }
  45. }
  46.  
  47.  
  48.  
  49. ?>


nie wiem jak to zastosować
tehaha
poczytaj sobie manuala do mail(), bo nie wiem co chciałeś zrobić wstawiając tam jakiś link
xsonic
właśnie ten link ma mi się te np 5 razy otworzyć co jakiś tam czas np 2 s, ale czy ta funkcja to zrobi? w manual-u jest mowa o wysyłaniu mail a ja tego nie chce robić chce żeby po naciśnięciu na przycisk przeglądarkę wysłała te 5 zapytań do serwera o stronę a nie żebym musiał dusić te 5 razy w przycisk
tehaha
ale to trochę w złą stronę kombinujesz moim zdaniem, po co wysyłać 5 razy? możesz przecież wysłać raz i potem w pętli 5 razy coś zrobić z tymi danymi i tam ustawić odstęp 2s pomiędzy każdą pętlą. Jeżeli ma być to wysłane do strony na tym samym serwerze to w formularzu w polu action dajesz tam link do tej strony, a jeżeli ma być to wysłane na inny serwer to nie wiem jak to zrobić ale z tego co pisze Pilsener wynika, że to nie taka prosta sprawa
xsonic
ale tam nie ma żadnych danych więcej to ma tylko ten sam link mi otwierać a czemu 5? bo tych operacjii będzie ok 1000

postawiłem sobie serwer z curl ale ma jeszcze pytanie mianowicie jeśli jakaś operacja jest wykonywana curl to jakie ip widzi ten 2 komputer(serwer) osoby która jest za przeglądarką czy serwera na którym stoi curl?
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.