Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: skrypt jeden formularz - 3 przyciski
Forum PHP.pl > Forum > PHP
rx30001
Witam,

Próbuję zrobić następujący skrypt.

Jest formularz, gdzie podaje się dane np. imię, nazwisko, e-mail, ulica, nr domu, itp.

Teraz mają być 3 przyciski, których naciśnięcie powoduje wysłanie tego formularza przez POST
do 3 róznych stron odbierającyh dane,
czyli klikam 1 przycisk i w nowym oknie otwiera się strona X, która odebrała przez POST dane z formularza,
klikam później przycisk 2 i otwiera się w nowym oknie strona Y...

jak jest <form target="_blank" action="xxx" method="post"> co wstawić w xxx, jeśli strony odwołania są różne?

nie wiem jak podpiąć te przyciski (to pewnie w java script)

Problem jest jeszcze taki, że każda z trzech stron ma inaczej nazwane dane, czyli np. imię, na jednej stronie jest jako name, a na innej imie.

Chyba musi być pośredni skrypt odwołania, który w zależności od przycisku odpowiednio nazywa dane i dopiero je wysyła do odpowiedniej strony.


Proszę o pomoc w rozwiązaniu tego problemu.

Pozdrawiam smile.gif
404
Jeżeli musisz tylko te dane wysłać to zrób to wykorzystując AJAX, będzie najprościej.
rx30001
Na AJAX w ogóle się nie znam
404
W takim razie masz świetną okazję żeby się nauczyć: http://api.jquery.com/jQuery.post/. To naprawdę nie jest trudne smile.gif
jackraymund
ajax acrossdomain? do takich rzeczy to Curl'a
jeżeli chcesz sprawdzić który nacisnąłeś
  1. class Curl{
  2. public $CurlData,$getinfo;
  3. public function GETrequest($link){
  4. $CurlRequest = curl_init(); // run cURL
  5. curl_setopt($CurlRequest, CURLOPT_URL, $link); //set url request
  6. curl_setopt($CurlRequest, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4) Gecko/20091030 Gentoo Firefox/3.5.4"); // useragent
  7. curl_setopt($CurlRequest, CURLOPT_HTTPHEADER, array("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language: pl,en-us;q=0.7,en;q=0.3", "Connection: keep-alive","Cache-Control: max-age=0","text/html; charset=UTF-8"));
  8. curl_setopt($CurlRequest, CURLOPT_RETURNTRANSFER, 1);
  9. curl_setopt($CurlRequest, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
  10. curl_setopt($CurlRequest, CURLOPT_COOKIEJAR,dirname(__FILE__) . '/cookie.txt');
  11. $this->CurlData = curl_exec($CurlRequest); // run request, return plain html
  12. $this->getinfo = curl_getinfo($CurlRequest); // return array with data like, http_code etc.
  13. curl_close($CurlRequest);
  14. }
  15. public function POSTrequest($link,$post){
  16. $CurlRequest = curl_init();
  17. curl_setopt($CurlRequest, CURLOPT_URL, $link);
  18. curl_setopt($CurlRequest, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4) Gecko/20091030 Gentoo Firefox/3.5.4"); // useragent
  19. curl_setopt($CurlRequest, CURLOPT_HTTPHEADER, array("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language: pl,en-us;q=0.7,en;q=0.3", "Connection: keep-alive","Content-Type: application/x-www-form-urlencoded; charset=utf-8"));
  20. curl_setopt($CurlRequest, CURLOPT_RETURNTRANSFER, 1);
  21. curl_setopt($CurlRequest, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
  22. curl_setopt($CurlRequest, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
  23. curl_setopt($CurlRequest, CURLOPT_POST, 1); //set request to POST
  24. curl_setopt($CurlRequest, CURLOPT_POSTFIELDS, $post); //add to request post data
  25. $this->CurlData = curl_exec($CurlRequest);
  26. $this->getinfo = curl_getinfo($CurlRequest);
  27. curl_close($CurlRequest);
  28. }
  29. }

dla każdego guzika inna funkcja, action może być index.php
potrzebna ci funkcja POSTrequest, ale daje ci też get jbc.
$link to link gdzie ma wysłać POST'a
$post podajesz w tablicy np.
array = ('name' => 'Jan kowalski');
404
@jackraymund: http://stackoverflow.com/questions/3506208...ax-cross-domain
utek44
Nie łatwiej byłoby wykonać taki prosty formularz i umieścić go na jakimś darmowym serwerze ?
Dejmien_85
Cytat(rx30001 @ 26.10.2013, 13:09:11 ) *
Witam,

Próbuję zrobić następujący skrypt.

Jest formularz, gdzie podaje się dane np. imię, nazwisko, e-mail, ulica, nr domu, itp.

Teraz mają być 3 przyciski, których naciśnięcie powoduje wysłanie tego formularza przez POST
do 3 róznych stron odbierającyh dane,
czyli klikam 1 przycisk i w nowym oknie otwiera się strona X, która odebrała przez POST dane z formularza,
klikam później przycisk 2 i otwiera się w nowym oknie strona Y...

jak jest <form target="_blank" action="xxx" method="post"> co wstawić w xxx, jeśli strony odwołania są różne?

Pozdrawiam smile.gif


Najprostszym rozwiązaniem będzie:

1) Tworzysz formularz, np.:
  1. <form target="_blank" action="akcja.php" method="post">


2) Tworzysz w nim 3 przyciski, każdy z inną nazwą:
  1. <input type="submit" name="opcja1">
  2. <input type="submit" name="opcja2">
  3. <input type="submit" name="opcja3">

3) Następnie w akcja.php sprawdzasz który przycisk został naciśnięty:

  1. if (isset($_POST['opcja1']) {
  2. // Instrukcje dla opcja1
  3. } elseif (isset($_POST['opcja2']) {
  4. // Instrukcje dla opcja2
  5. } elseif (isset($_POST['opcja3']) {
  6. // Instrukcje dla opcja3
  7. }


Przesyłanie danych do stron zewnętrznych w instrukcjach 1-3 możesz zrobić przy pomocy cURL - tak jak pisali o tym wyżej koledzy (zawsze nauczysz się czegoś nowego o PHP!). Alternatywą może być JS (AJAX), jednak to jest forum PHP, także polecam Ci zabawę z cURL. ; )
jackraymund
Cytat(404 @ 27.10.2013, 10:58:29 ) *

Fajny link podałeś, a nie przeczytałeś co tam pisze.
"Jsonp did not support post, put and delete. Your solution works great."
Nie znam jsonp, ale miało sporo like aby uznać to za trafny komentarz.
Dlatego lepiej w curlu to napisać
com
jackraymund

akurat 404 ma rację, a skoro stackoverflow nie przemawia to proszę : http://www.d-mueller.de/blog/cross-domain-ajax-guide/ oczywiście nikt nie broni używać Curl, ale poco robić to po stronie serwera jak można od razu wysłać żądanie gdzie trzeba smile.gif
jackraymund
Cytat(com @ 29.10.2013, 21:23:14 ) *
jackraymund
akurat 404 ma rację, a skoro stackoverflow nie przemawia to proszę : http://www.d-mueller.de/blog/cross-domain-ajax-guide/ oczywiście nikt nie broni używać Curl, ale po co robić to po stronie serwera jak można od razu wysłać żądanie gdzie trzeba smile.gif

yyy, to samo co na stackoverflowie...
Ale jak mówisz że ma racje, to jak zamierzasz wejść komuś na serwer i edytować pliki, aby akceptowały od twojego serwera posty?
Standardowo większość serwerów odrzuca takie zapytania, więc jak mówisz można od razu wysłać gdzie trzeba, albo się denerwować że nie działa, i przepisywać bota na php.
Sam próbowałem w js'ie napisać bota do youtube i fb. Najpierw spróbuj, potem pisz.
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.