2012-04-02 15 views
0

Ich habe die cURL-Lösung verwendet, um XSS zu lösen, aber es gibt ein Problem damit. Meine proxy.php Dateiinhalte sind: -PHP-Skript wird nicht ausgeführt

<?php 
    $url = "http://www.yahoo.com"; 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt ($ch, CURLOPT_URL, $url); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    $file_contents = curl_exec($ch); 
    curl_close($ch); 
    echo $file_contents; 
?> 

Und das ist, wie ich versuche, PHP-Skript

$("#tempButton").click(function(){ 
    $("#pageContent").load('http://localhost:8080/proof/proxy.php',function() { 
     var t = $("#pageContent").html(); 
     alert(t); 
    }); 
}); 

Aber Variable t zeigt den Inhalt der proxy.php Datei auszuführen, während es Es wird erwartet, dass der Inhalt von yahoo.com angezeigt wird, der in der Datei "proxy.php" festgelegt wurde. Mache ich etwas Dummes? #FirstTimePHP

+0

Drop http: // localhost: 8080/von http: // localhost: 8080/proof/proxy.php, sollte es nur '/proof/proxy.php' sein. Überprüfen Sie auch Firebug und/oder Chrominspektor für Fehlerdetails. – jpic

+0

Versuchen Sie, Ihre Seite direkt zu besuchen (durchsuchen Sie einfach proxy.php), oder überprüfen Sie die Ausgabe der Anfrage mit Firebug's Net-Tab (oder einem ähnlichen Tool) – TJHeuvel

+2

Sie haben wahrscheinlich nicht PHP in Ihrem Webserver registriert. Wenn dies der Fall ist, sollten Sie niemals den _content_ einer php-Datei sehen, die innerhalb von '' Tags gespeichert wird, wenn Sie über das Internet darauf zugreifen. –

Antwort

1

Da Variable t den Inhalt der Datei zeigt, darf die Server-Software das Skript nicht als PHP erkennen.

Dies kann verschiedene Gründe haben. Keine öffnenden Tags zu haben wäre 1, aber Sie haben diese natürlich.

Ein weiterer möglicher Grund ist, dass PHP nicht als Modul in der Server-Software geladen wurde.

Ein anderer möglicher Grund ist, dass der Server Dateien mit der Erweiterung von PHP nicht analysiert (das ist konfigurierbar).

Sie sollten von den Grundlagen beginnen. Ignorieren Sie das Javascript, rufen Sie stattdessen die URL manuell und sehen Sie, was Sie bekommen. Wahrscheinlich werden Sie den Code sehen.

Wenn dies passiert, stellen Sie sicher, dass die Server-Software (in der Regel Apache) aktiviert ist, um zu erkennen, dass die Erweiterung php dem php-Modul zugeordnet ist. Stellen Sie abschließend sicher, dass PHP tatsächlich ordnungsgemäß installiert ist.

+0

Danke Peter und Joachimlasksson..Ihre Antworten machen Sinn und sind hilfreich. Eigentlich erkennt mein Server PHP-Dateien nicht und ich habe damit zu tun. –

1

Machen Sie Ihre Proxy.php so.

<?php 
     if(in_array('curl', get_loaded_extensions())) { 
       $url = "http://www.yahoo.com"; 
       $ch = curl_init(); 
       $timeout = 5; 
       curl_setopt ($ch, CURLOPT_URL, $url); 
       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
       curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
       $file_contents = curl_exec($ch); 
       curl_close($ch); 
       echo $file_contents; 
       } 
     else { 
     echo 'No cUrl here'; 
     } 
?> 
+1

Obwohl gute Praxis, wird dies nicht mit dem Problem des op helfen. Wie in der Frage angegeben, wird der Code des PHP-Skripts ausgegeben. Wenn überprüft wird, ob "curl" installiert ist, wird stattdessen mehr Code ausgegeben. – Peter

+0

Ich denke, wir können etwas wie is_php_intalled() nicht überprüfen! – niksmac

Verwandte Themen