Jump to content
php.lv forumi

Fsockopen nestrādā, ja padod lapa:ports


Recommended Posts

Posted (edited)

Fsockopen(); nestrādā, ja šai funkcijai tiek padots URL lapa:ports formātā.

 

<?php
$fp = fsockopen("$url", 80, $errno, $errstr, 30);
if (!$fp) {
  echo "$errstr ($errno)<br />\n";
} else {
  $out = "GET / HTTP/1.1\r\n";
  $out .= "Host: $url\r\n";
  $out .= "Connection: Close\r\n\r\n";

  fwrite($fp, $out);
  while (!feof($fp)) {
   echo fgets($fp, 128);
  }
  fclose($fp);
}
?>

 

Pieņemot, ka $url = www.example.com:80 lapu atverot nekādus datus no tās dabūt nevar. Parādās HTML status -- lapa nav atrasta.

 

Ja man tās saites, kuras jāapskata nāk formātā lapa:ports, tad tās paliek neizmantojamas vai vismaz neizmantojamas tādā veidā, kā es viņas cenšos atvērt... Ir kāds veids kā varētu iemānīt portu tādā lapa:ports formātā?

 

Problēma būtu minimāla, ja saites tā arī beigots ar kolu + skaitļiem. Bet tās tur nebeidzas...līdz ar to tā vienkārši nogriest nost to portu nevar un dabūt(piem. http://lapa:ports/lapa/lapa/...).

 

Varētu mēģināt CURL, bet php nav kopā ar to sakompilēts, tā, ka tas atkrīt. Idejas?

 

PHP versija ir 5.0.x.

Edited by AndzX8-842
Posted

Tak ports jāpadod otrajā parametrā. Tev pašam tas jāatdala un jāpadod tur kur vajag. parse_url skaties.

Posted (edited)

Tur jau tā problēma, ka tur tas ports ir jāpadod. Man tas neder vai vismaz nederēja.

 

Atradu atrisinājumu kā dabūt to portu laukā no pašas saites un arī iekšā citā string. Ja kādam interesē, te ir atbilde :).

 

$str = trim($str, "qwertyuiopasdfghjklzxcvbnm!@#$%^&*()_+=-~`[]{}\|:;,./<>?/*-¼½¾€¢™©°·°");

 

Viss, kas paliek ir skaitļi un varbūt vēl kāda zīme.

 

 

Tagad ir mazliet savādāka ķibele. Kā, lai caur fsockopen() padod datus lapai, kura tiek vērta vaļā, to vispār var izdarīt caur fsockopen?

$out = "GET / HTTP/1.1\r\n";
  $out .= "Host: $tracker\r\n";
  $out .= "Connection: Close\r\n\r\n";

 

Kā tas rakstāms, ja to var izdarīt?

Edited by AndzX8-842
Posted

Par portu - es atkārtojos - parse_url.

 

Par datu padošanu, ja domāji POST pieprasījumu, tad tāds arī jāraksta, nevis GET pieprasījums. ja domāji GET parametrus, tad tie padodās aiz visiem headeriem aiz viena entera. Palasi http specifikāciju (RFCā).

×
×
  • Create New...