Jump to content
php.lv forumi

Fsockopen nestrādā, ja padod lapa:ports


AndzX8-842

Recommended Posts

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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ā).

Link to comment
Share on other sites

×
×
  • Create New...