fopen bringt kein Ergebniss

isaack

Mitglied
Hallo zusammen,

ich bin hier gerade ein wenig am verzweifeln und benötige bitte hilfe.
ich möchte gern bei einer anmeldung die daten an eine 2 seite weiter geben.
das ganze soll durch folgenden zeilen passieren:

PHP:
$url = "http://google.de";  // <-- use your game server IP
     $pw = "geheim";   
     $Player = $_REQUEST["nickname"];
     $RealName = $_REQUEST["vorname"];
     $Password1 = $_REQUEST["passwort_1"];
     $Email = $_REQUEST["emailadresse"];
     $params = "?Password=$pw&Command=AccountsAdd" .
     "&Player=" .  urlencode($Player) .
     "&RealName=" . urlencode($RealName) .
     "&PW=" .  urlencode($Password1) .
     "&Location=" . urlencode("not set") .
     "&Email=" .  urlencode($Email) .
     "&Avatar=" .  urlencode("".rand(0,64)."") .
     "&Gender=" .  urlencode("Male") .
     "&Chat=" .  "Yes" .
     "&Note=" .  urlencode("Account created via API");
     
     $abfrage='';
     $url2 = $url.$params;
     $fp = @fopen($url2,"r");
     if($fp){
      while($line=fread($fp,1000)){
       $abfrage.=$line;
       
      }
      $code = explode("=", $file1,2000);
      $ausgabe = $code[0];
      fclose($fb);
     }else{
       $ausgabe = 'Fehler bei URL abfrage';
     }
     echo '<br>URL: '.$url2.'<br>';
     echo $ausgabe.'<br>';

sobald ich nun eine anmeldung durchführe, wird allerdings nicht übertragen.
allow_url_fopen ist laut php.ini auf On
Die URL wird auch ordentlich im echo angezeigt und wenn ich sie manuell eingebe, bekomme ich auch den benötigten wert zurück.
auf der seite selber, bei der anmeldung, sehe ich allerdings nur Fehler bei URL abfrage stehen.

ich weiß nicht mehr weiter. vielleicht sieht einer von euch den fehler.

danke schonmal im voraus.

Gruß Eric
 
so habe ich auch gleich mal gestet.
habe das jetzt so eingetragen:
PHP:
$abfrage='';
     $url2 = $url.$params;
     $fp = fopen($url2,"r");
     if($fp){
      while($line=fread($fp,1000)){
       $abfrage.=$line;
       
      }
      $code = explode("=", $file1,2000);
      $ausgabe = $code[0];
      fclose($fb);
     }else{
       $ausgabe = 'Fehler bei URL abfrage';
       $ausgabe2 = $fp;
     }
     echo '<br>URL: '.$url2.'<br>';
     echo $ausgabe.'<br>'.$ausgabe2.'<br>';

nur leider bringt er mir da auch keinerlei fehler.
habe sogar error_reportin(E_ALL); mit drin stehen aber wird nichts angezeigt.
 
Vermutung: Der Server wertet die HTTP-Header aus, die bei deinem Request nicht gesendet werden, da du ja nur lesen willst.

Du könntest jetzt auf curl ausweichen.

Ansonsten kann ich dir nur noch empfehlen, mal

PHP:
ini_set('display_errors', 1);

an den Anfang des Scripts zu schreiben. Möglicherweise ist die Fehlerausgabe standardmäßig unterdrückt.
 
ok so wie es aussieht, kommt es zu keiner antwort vom zielserver her.
was ja kommisch ist da ich ja vom browser aus die seite aufrufen kann und den rückgabewert sehe.
Code:
Warning: fopen(http://11.11.11.11:8087/api?Password=geheim&amp;Command=AccountsAdd&amp;Player=fdfd&amp;RealName=not+set&amp;PW=yxcvbnm%2C&amp;Location=not+set&amp;Email=fdg%40gfd.de&amp;Avatar=39&amp;Gender=Male&amp;Chat=Yes&amp;Note=Account+created+via+API): failed to open stream: Connection timed out in /home/niemandc/public_html/content/intern/anmelden.php on line 136

da werde ich das so weiter geben an den besitzer des Zileservers. das der da mal schaut.

oder kann es sein, dass die abfrage irgendwo endet? kann man das irgendwie prüfen?
 
(Sorry, dass ich das mit allow_url_fopen im Ausgangspost nicht gesehen hatte.)

Ich fürchte, das kann diverse Ursachen haben. Müsste ich jetzt auch testen. Zum Beispiel:

- wie angesprochen via cURL oder dergleichen (https://github.com/ziadoz/awesome-php#http) versuchen
- in den Devtools des Browsers den funktionierenden Request genauer ansehen/auf Auffälligkeiten (Redirects?) überprüfen
- nach dem Problem im Rahmen der verwendeten Software suchen
- zusätzliche Header-Parameter, die Browser immer so mitschicken, setzen (User-Agent-String und dergleichen – wäre zum Beispiel bei Wikipedia wichtig)
- prüfen, ob es normal ist, dass in der fopen-Warning &amp; steht und nicht & (kann gut sein, dass das normal ist)
- mal per file_get_contents versuchen
- …

Warum ein Timeout entsteht, kann ich nicht sagen. Das kann eine Anti-Spam-Maßnahme sein, die fehlerhafte Anfragen gezielt blockiert. Das kann ein Oversight oder eine unerwartete Request-Priorisierung in der Server-Software sein. Das kann eine Nuance in der Anwendung von fread sein, die mir nicht bekannt ist (könntest das hier unter Example #3 noch mal versuchen: http://www.php.net/fread).
 
Zurück