Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie POST ze skryptu a nie z formularza
Forum PHP.pl > Forum > Przedszkole
Bastion
Czy da sie wykonac zapytani POST do serwera nie uzywajac formularza ? Jesli tak to w jaki sposob ?
Vertical
Wątpię, żeby się dało, ponieważ naruszałoby to bezpieczeństwo (możnaby wysłać 1000 razy te same dane).
crash
Da się, wysyłając odpowiednie nagłówki, lub ułatwiając sobie to stosując CURL.
Bastion
faktycznie smile.gif obejzalem naglowek podczas wysylania formularza POST smile.gif i da sie zrobic ... nawet na
fsockopen smile.gif dzieki za podpowiedz
maragoska
Czy możecie podać sposób rozwiązania swojego problemu.

Chcę zrobić coś podobnego lub identycznego.

Zależy mi aby po wywołaniu poniższego kodu:
  1. <?php
  2.       header(&#092;"Location: strona.phtml?param1=$param1&param2=$param2&Odswiez=odswie\");
  3.  
  4. ?>


nie wyświetlały mi się parametry w okienku adresowym przeglądarki, czyli chciałbym je wysłać np. metodą POST.

Czy ktoś może mi pomóc?
Sabistik
http://4programmers.net/faq.php/id=368
maragoska
Dzięki!

Właśnie o coś takiego mi chodziło.
  1. <?php  
  2.  
  3. function PostVars($url, $vars) 
  4. {
  5. $result = $post = '';
  6. $url = parse_url($url);
  7. if (!is_array($vars)) return false;
  8.  
  9. foreach ($vars as $k => $v)
  10. {
  11. $post .= urlencode($k) . '=' . urlencode($v) . '&';
  12. }
  13.  
  14. $post = substr($post, 0, -1);
  15.  
  16. if ($fp = @fsockopen($url['host'], 80)) 
  17. {
  18. fputs($fp, 
  19. &#092;"POST \" . $url['path'] . \" HTTP/1.0rn\" .
  20. //\"Accept: image/gif, image/x-xbitmap, image/jpeg, \" .
  21. //\"image/pjpeg, application/msword, \" .
  22. //\"application/x-shockwave-flash, */*rn\" .
  23. //\"Accept-Language: plrn\" .
  24. &#092;"Content-Type: application/x-www-form-urlencodedrn\" .
  25. //\"Accept-Encoding: gzip, deflatern\" .
  26. //\"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; \" .
  27. //\"Windows NT 5.1)rn\" .
  28. //\"Host: \" . $url['host'] . \"rn\" .
  29. &#092;"Content-Length: \" . strlen($post) . \"rn\" .
  30. //\"Connection: Keep-Alivern\" .
  31. &#092;"rn\" . $post . \"rn\");
  32.  
  33. while ($buf = fread($fp, 8192)) $result .= $buf; 
  34.  
  35. fclose($fp); 
  36. return $result;
  37. }
  38.  
  39. return false; 
  40. }
  41.  
  42. ?>


Mam jednak z tym mały problem. Po przekierowaniu na nową stronę, tak jak w powyższym kodzie, doklejany jest nagłówek strony wywoływanej.
Efekt jest taki, że nagłówek strony, która jest otwierana wyświetlany jest na stronie (jawny tekst) - faktycznie wysyłane są dwa nagłówki do tej strony:
- jeden przez funkcję PostVars - niewidoczny
- drugi - nagłówek strony - widoczny na stronie

Niestety wyczerpałem już własne pomysły w tym temacie.
Czy ktoś zna sposób na zastąpienie nagłówka wysyłanego przez PostVars nagłówkiem właściwym strony?
Viroch
Witam. Szukałem właśnie takiego rozwiązania ale niestety, coś mi nie działa. Gdy wysyłam z formularza POSTem jest wszystko ok. Ale gdy próbuję z funkcji podanej wyżej PostVars, zgłasza mi że danego pliku nie ma na serwerze (error 404).

Zapytanie wysyłam poprzez:

  1. <?php
  2.  
  3. $post['username']='user';
  4. $post['pass']='haslo';
  5.  
  6. $link='http://www.serwer.pl/login.php';
  7. print PostVars($link,$post);
  8.  
  9. ?>


i niestety w efekcie otrzymuje
  1. HTTP/1.1 404 Not Found Date: Sat, 19 Feb 2005 07:46:14 GMT Server: Apache/1.3.31 (Unix) php/4.3.7 php/3.0.18 Connection: close Content-Type: text/html; charset=iso-8859-1
  2. Not Found
  3. The requested URL /login.php was not found on this server.
  4.  
  5. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


Zaznaczam że ścieżka jest ok, bo z formularza działa bez problemu. Ale muszę to niestety zrobić bez formularza. Bardzo prosze o pomoc...
crash
W tym błędzie wyraźnie widać, że został zwrócony błąd 404, musiałeś podać błędną ścieżkę w POST.
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.