Programovacie jazyky, rady, poradňa...
DomCZo
Light Star
Príspevky: 235 Registrovaný: 16 okt 2006, 22:49
Príspevok
od používateľa DomCZo » 21 jan 2007, 14:15
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
Príspevky: 7127 Registrovaný: 25 dec 2006, 15:17
Príspevok
od používateľa chrono » 21 jan 2007, 15:01
Č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
Príspevky: 25958 Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:
Príspevok
od používateľa audiotrack » 21 jan 2007, 15:03
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
Príspevky: 235 Registrovaný: 16 okt 2006, 22:49
Príspevok
od používateľa DomCZo » 21 jan 2007, 15:11
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
Príspevky: 7127 Registrovaný: 25 dec 2006, 15:17
Príspevok
od používateľa chrono » 21 jan 2007, 15:55
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
Príspevky: 235 Registrovaný: 16 okt 2006, 22:49
Príspevok
od používateľa DomCZo » 21 jan 2007, 16:12
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
Príspevky: 7127 Registrovaný: 25 dec 2006, 15:17
Príspevok
od používateľa chrono » 21 jan 2007, 17:09
Toto si pozeral?
fsockopen Na to REFERER stačí pridať do http hlavičky
DomCZo
Light Star
Príspevky: 235 Registrovaný: 16 okt 2006, 22:49
Príspevok
od používateľa DomCZo » 21 jan 2007, 17:45
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
Príspevky: 7127 Registrovaný: 25 dec 2006, 15:17
Príspevok
od používateľa chrono » 21 jan 2007, 17:55
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
Príspevky: 235 Registrovaný: 16 okt 2006, 22:49
Príspevok
od používateľa DomCZo » 21 jan 2007, 18:17
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
Príspevky: 235 Registrovaný: 16 okt 2006, 22:49
Príspevok
od používateľa DomCZo » 21 jan 2007, 18:30
Tak, aby som mohol dalej spracovavat zdrojovy kod tej stranky.
chrono
VIP
Príspevky: 7127 Registrovaný: 25 dec 2006, 15:17
Príspevok
od používateľa chrono » 21 jan 2007, 18:58
Čiže ide o rapidshare?
DomCZo
Light Star
Príspevky: 235 Registrovaný: 16 okt 2006, 22:49
Príspevok
od používateľa DomCZo » 21 jan 2007, 19:01
Ano, napriklad. Len sa to chcem naucit, tak to skusam na nom.
DomCZo
Light Star
Príspevky: 235 Registrovaný: 16 okt 2006, 22:49
Príspevok
od používateľa DomCZo » 21 jan 2007, 19:09
Robim si skript pre stahovanie a uz len to mi chyba. Vies, to je moja zaluba hrabat sa v zdrojovych kodoch
chrono
VIP
Príspevky: 7127 Registrovaný: 25 dec 2006, 15:17
Príspevok
od používateľa chrono » 21 jan 2007, 19:15
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
Príspevky: 235 Registrovaný: 16 okt 2006, 22:49
Príspevok
od používateľa DomCZo » 21 jan 2007, 20:00
Hej poznam, aj som to uz skusal. Len ja to chcem v PHP
chrono
VIP
Príspevky: 7127 Registrovaný: 25 dec 2006, 15:17
Príspevok
od používateľa chrono » 21 jan 2007, 20:05
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
Príspevky: 7127 Registrovaný: 25 dec 2006, 15:17
Príspevok
od používateľa chrono » 21 jan 2007, 20:20
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
Príspevky: 235 Registrovaný: 16 okt 2006, 22:49
Príspevok
od používateľa DomCZo » 21 jan 2007, 20:42
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 80Potom s tym nemozem dalej pracovat
chrono
VIP
Príspevky: 7127 Registrovaný: 25 dec 2006, 15:17
Príspevok
od používateľa chrono » 21 jan 2007, 20:46
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...