Wysłanie parametrów metodą POST z poziomu kodu PHP

0

Czy jest możliwe przekazanie parametrów do jakiejś stronki PHP metodą POST za pośrednictwem kodu ?? Chodzi mi o to żeby ktoś przekazał na jeden formularz na mojej stronie dane metodą POST a ona coś z nimi zrobi, np: zapisze i również metodą post przekieruje klienta na inną stronę.

Dotychczas robiłem to w ten sposób że robiłem skrypt (lamerski w/g mnie):

<?php
echo "<html>";
echo "<body onload=wyslij()>";
echo "<form action=strona.php method=post name=formularz>";
echo "<input type=hidden name=wartosc value=\"".$_GET['wartosc']."\">";
echo "<script>function wyslij(){ document.formularz.submit() }</script>";
echo "</body></html>";
?>

ale w ten sposób ktoś może zajrzeć jakie parametry są przekazywane. Czy jest możliwość zrobienia tego z poziomu kodu ?? Nie mogłem znaleźć odpowiedniej funkcji. :(

0

Jasne ze jest 4 dni sie na d tym meczylem ;)

Robisz skrypt
np:

<?php $nagl = "Host: www.jakis erw\r\n"; $data = "POST twoja drugastrona.pl/skrypt.php?$dana1 HTTP1.1\r\n".$nagl."\r\n\r\n"; //otwieram strone na porcie 80 $sock = @fsockopen('twoja drugastrona.pl, 80); //wysylam zapytanie do serera fputs($sock, $data); //zamykam port fclose($sock); ?>

jak wstawisz ten skrypt na strone i wpiszesz go

www.stronaztwoim skkryptem.pl/skrypt.php?dana1=czesc

to twoj skrypt przechwyci ta DANA1 i wysle ja mnetoda POST do drugiej stronki i nikt nie wie jakie sa w niej parametry

a dodoatkowo piszeszz sobie stronke w HTMLu z obsluga formularza

<form method="post" action="twijastrona.pl"> <input name="dana1" i="i" tam="tam" inneparametry="inneparametry" </form="&lt;/form"> i gotowe :)
0

Dzięki bardzo za odpowiedź ale mam trochę problemy, bo po pierwsze wyświetla mi:

Warning: fputs(): supplied argument is not a valid stream resource in C:\WWW\strona.php on line 9

Warning: fclose(): supplied argument is not a valid stream resource in C:\WWW\strona.php on line 11

a po drugie jak przechwycić jeszcze to co tamta strona zwróci ?? np po przesłaniu na inną stronę przypuśćmy że będzie pisało "SMS Został wysłany" i jak to przechwycić ??

dobra, już sobie poradziłem z pierwszym mniej więcej, ale co do drugiego to udało mi się teoretycznie to zrobić ale wtedy odkryłem przerażającą prawdę bo to co zwraca serwer to:

HTTP/1.0 400 Bad Request

:(

Przepraszam za niepotrzebne tworzenie nowych postów, ale jako niezalogowany nie mogę edytować tamtych. Kombinowałem jeszcze trochę i teraz mi wychodzi:

HTTP/1.0 411 Length Required

0

to napisz z czym masz jescez problemo to ci pomoge

zrobilem wlasnie skrypt do bramki ze wysylasz mesa z formularza ty tez pewnie to robisz na kontach w miescie plusa wtedy niek nie przechwyci kont :)
niezle :)

0

no to jak przesłać tą długość co on chce ?? ("HTTP/1.0 411 Length Required") i o jaką długość chodzi ?? danych nagłówka ? możesz coś źle jeszcze robię że serwer zwraca takie coś ??

0

daj tu ten skrypt co masz tylko wywal dane jak logi n itd isie poprawi jakby co bo tak trudno powiedziec ? ok?

0

No to znowu pozmieniałem i mam coś takiego (sorry że wczoraj nie odpowiedziałem, ale B-| :)) - to zwraca już serwer wyjściowy mojej sieci:

Podczas obsługi następującego żądania:

POST /plik.php?numer=12105 HTTP/1.0
Host: serwer.pl

wystąpił następujący błąd:
błędne żądanie
Niektóre części żądania HTTP mogą być błędne. Możliwe problemy to:
Brak lub nieznana metoda (GET, POST)
Brak URL-a
Brak identyfikatora HTTP (HTTP/1.0)
RZbyt duży rozmiar żądania
Brak pola Content-Length dla metod POST lub PUT
Błędny znak w nazwie hosta; podkreślenia (underscores) są niedozwolone

no i z tego wynika dalej że brakuje jakiejś wielkości. To jak dodać to Content-Length ??

0

Ja sie zabije :-[ teraz wprowadziłem w nagłówku Content-Length rozmiar i teraz jak próbuje otworzyć stronę to ładuje się w nieskończoność aż w końcu wyświetla:

Fatal error: Maximum execution time of 120 seconds exceeded in C:\WWW\strona.php on line 9

tego to już nie mam pojęcia jak naprawić :'(

0

Jesli wysylasz cos metoda post lub get to najlepiej napisac sobie po kolei te wysylki oddzielajac naglowki od postu np.

//piszesz sobie jakis post jaki ma byc wysylany
$post = "numer=15243";

$naglowek = "Host: www.twoja_strona.pl";
$nagllowek .= "Connection: Keep-Alive";
$nagllowek .= "Cache-Control: no-cache";

$data = "POST /jakas_strona.pl HTTP/1.1\r\n".$naglowek;
$data .= "Content-Length: ".strlen($post)."\r\n\r\n".$post."\r\n";

fsockOpen('www.twoja_strona.pl' ,80);

fputs($sock, $data);

po wykonaniu tego powinienes wyslac takie zadanie:


POST /jakas_strona.pl HTTP/1.1
Host: www.twoja_strona.pl
Connection: Keep-Alive
Cache-Control: no-cache
Content-Length: 11

numer=15243

ja uzylem metody post i napisalem tak

//naglowek
$nagl = "Host: www.moj_serwis.pl\r\n";

//cale dane get + nagl zeby zdobyc JSSESIONID
$data = "POST /dane/plik.php?login=$login&password=$haslo HTTP/1.1\r\n".$nagl."\r\n\r\n";

//otwieram strone na porcie 80
$sock = @fsockopen('jakisserw.pl', 80);

//wysylam zapytanie do serera
fputs($sock, $data); $html = "";

//dopoki serwer odpowiada zbieram dane do stringa $html
while(!feof($sock)) $html .= fgets($sock, 4096);

//wtedy po skonczeniu petli w $html masz caly kod co zwraca serwer

//zamykam port
fclose($sock);

//odczytuje ze stringa SESION ID
//ta linijka przechwtyuje do matches to co szukasz ja szukalem ciastka set cookies
preg_match("/\nSet-Cookie: (SESSIONID=.*?);/is", $html, $matches);
echo($matches[1]); //mozesz podejrzec to co szukasz

//kiedy zdobylem juz numer wysylam kolejne zapytania z nuemrem SESJI

a kolejny nymer wysylam
wtedy wysylam naglowek z ciastekiem ktore przeczhwycilem

$nagllowek .= "Coockie: $matches[1]";

1 użytkowników online, w tym zalogowanych: 0, gości: 1