POST vars

Programovacie jazyky, rady, poradňa...
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

POST vars

Príspevok od používateľa DomCZo »

Vedel by mi niekto poradit ako rozchodit odoslanie tych POST udajov?

Kód: Vybrať všetko

<?php


$link = "http://www.adresa.sk";
$data = "daco=nieco";

$fp = fopen($link, "r");

if(!$fp)
{
	echo "$errstr($errno)<br>\n";
}
else
{
	fputs($fp, "POST / HTTP/1.0\r\n\r\n");
	fputs($fp, "Content-length: " . strlen($data) . "\r\n");
	fputs($fp, $data);
	while(!feof($fp))
	{
		$vypis .= fgets($fp,128);
	}
	fclose($fp);
}


?>
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Čo to má robiť? Keď chceš prijímať http POST odpoveď, načo tam nastavuješ Content-length (to pridáva do hlavičky posieľajúca strana a nie prímajúca).
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

chrono: veď on to chce poslať, si pozri čo písal a aj ten zdroják.. on si urobí post a chce ho odoslať
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Skript mi stiahne stranku.

Ale ja by som tu stranku chcel stiahnut za pomoci aplikovania POST varov.
Cize chcem poslat POST a potom sa mi stiahne stranka uz za pouzitia tych POST varov.

Snad ma viete pochopit.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

audiotrack napísal:chrono: veď on to chce poslať, si pozri čo písal a aj ten zdroják.. on si urobí post a chce ho odoslať
Veď hej. Len som nepochopil, prečo pridáva Content-length.

DomCZo: máš tam aj CURL modul pre php (pozri výpis phpinfo())? Pomocou neho sa to dá urobiť.
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

http://pool.profitux.cz/info.php

Myslim, ze nie. Nevies z hlavy poradit nejaky freehosting, kde CURL je? Nie je pre mna problem sa tam zaregistrovat.

Bol by po ruke jednoduchy skript (s CURL) s ktorym to pojde? A keby si mi aj pomohol poradit ako v nom nastavim REFERER. Sa ti odvdacim :)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Toto si pozeral? fsockopen Na to REFERER stačí pridať do http hlavičky

Kód: Vybrať všetko

Referer: url
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Ja neviem, ja sa uz do takychto zlozitych veci moc nerozumiem. Len by som proste chcel funkcny skriptik.

Skusil som teraz toto, a zase nic:

Kód: Vybrať všetko

<?php


$data = "asdf=qqqd";


$fp = pfsockopen("domczo.profitux.cz", 80, $errno, $errstr);
if (!$fp)
{
	echo "$errstr ($errno)<br/>\n";
	echo $fp;
	}
else
{
	fputs($fp, "POST /path/page.php  HTTP/1.1\r\n");
	fputs($fp, "Host: domczo.profitux.cz\r\n");
	fputs($fp, "Content-length: ".strlen($data)."\r\n");
	fputs($fp, "Connection: close\r\n\r\n");
	fputs($fp, $data);
	fwrite($fp, $out);
	while (!feof($fp))
	{
		echo fgets($fp, 128);
	}
	fclose($fp);
}


?>
HTTP/1.1 302 Found Date: Sun, 21 Jan 2007 16:45:24 GMT Server: Apache Location: http://profitux.cz/error/404.htm Content-Length: 282 Connection: close Content-Type: text/html; charset=iso-8859-1
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Nemáš tam stránku "/path/page.php" (to si asi skopíroval s toho príkladu). Čo potrebuješ dosiahnuť tým POST (aký formulár, na akej stránke...)?
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Ano skopiroval. Ked som to opravil napise mi to:
HTTP/1.1 200 OK Date: Sun, 21 Jan 2007 17:12:46 GMT Server: Apache X-Powered-By: PHP/5.1.6-pl6-gentoo Pragma: no-cache Cache-Control: no-cache Expires: Sun, 21 Jan 2007 17:12:46 GMT Connection: close Transfer-Encoding: chunked Content-Type: text/html 1000

Ale POST to neodoslalo.

Chcem dosiahnut stiahnutie stranky napriklad:
http//rapid/files/XY/XY

s POSTom dl.start sa rovna Free
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Tak, aby som mohol dalej spracovavat zdrojovy kod tej stranky.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Čiže ide o rapidshare?
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Ano, napriklad. Len sa to chcem naucit, tak to skusam na nom.
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Robim si skript pre stahovanie a uz len to mi chyba. Vies, to je moja zaluba hrabat sa v zdrojovych kodoch :-)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Idem to vyskúšať (to POST cez php).
Používaš Firefox? Ak áno, poznáš Greasemonkey plugin? Pomocou neho sa dá upraviť nejaká stránka, čo sa ti zobrazuje. Celkom zaujímavé.
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Hej poznam, aj som to uz skusal. Len ja to chcem v PHP :-)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Už som nejaký php skript upravil, ale ešte tam blbne načítavanie, keď je nastavené Content-Length (nenačíta sa cela odpoveď).
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Vyskúšaj:

Kód: Vybrať všetko

<?php

$header = "";
$response = "";

function http_post($url, $host, $postdata)
{
	global $header, $response;

	// connect
	if (!($request=fsockopen($host, 80, $errno, $errstr))) {
		exit($errstr);
	} else {
		socket_set_timeout($request, 10);
		$post = "POST $url  HTTP/1.1\r\n";
		$post .= "Host: $host\r\n";
		$post .= "User-Agent: PHP Script\r\n";
		$post .= "Content-Type: application/x-www-form-urlencoded\r\n";
		$post .= "Content-Length: ".strlen($postdata)."\r\n";
		$post .= "Connection: close\r\n\r\n";
		$post .= $postdata;
		// send request
		fwrite($request, $post);
		// get header
		do {
			$header .= fread($request, 1);
		} while (!preg_match('/\\r\\n\\r\\n$/',$header));
		// check for chunked encoding
		if (preg_match('/Transfer\\-Encoding:\\s+chunked\\r\\n/',$header)) {
			do {
				$byte = "";
				$chunk_size = "";
				do {
					$chunk_size .= $byte;
					$byte=fread($request, 1);
				} while ($byte != "\\r");		// till we match the CR
				fread($request, 1);			// also drop off the LF
				$chunk_size = hexdec($chunk_size);	// convert to real number
				$response .= fread($request,$chunk_size);
				fread($request, 2);			// ditch the CRLF that trails the chunk
			} while ($chunk_size);				// till we reach the 0 length chunk (end marker)
		} else {
			// check for specified content length
			if (preg_match('/Content\\-Length:\\s+([0-9]*)\\r\\n/', $header, $matches)) {
				$size = $matches[1];
//				echo "Size: $size<br>\n";
//				$response = fread($request, $size);
				$response = "";
				while (!feof($request) && $size > 0) {
					$response .= fread($request, min(4096, $size));
					$size -= 4096;
				}
			} else {
				// not a nice way to do it (may also result in extra CRLF which trails the real content???)
				while (!feof($request)) $response .= fread($request, 4096);
			}
		}
		// close connection
		fclose($request);
	}
}

http_post("http://forums.somethingawful.com/member.php", "forums.somethingawful.com", "username=test1&password=test2");
//print($header);
print($response);
?>
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Nastavil som tam svoju stranku domczo.profitux.cz.

http://domczo.profitux.cz/kuk.php

POST to odosle, to si overujem svojim pocitadlom, len to stale pracuje neviem preco a potom to vypise:

Kód: Vybrať všetko

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache Server at domczo.profitux.cz Port 80
Potom s tym nemozem dalej pracovat :(
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Ja sa na tú tvoju stránku http://domczo.profitux.cz/kuk.php nemôžem pripojiť žiadnym spôsobom (skúšal som dva internetové prehliadače, programy wget a POST). Tiež vždy dostanem tú hlášku. Takže problém je v tvojich nastaveniach. Skontroluj práva toho súboru kuk.php, vlastníka...
Napísať odpoveď