2010-12-08 23 views
0

J'ai besoin d'obtenir la sortie complète d'un site aspx. Lorsque l'utilisateur quitte, je vais enregistrer ce qui est dans certains éléments spécifiques dans les cookies. Le problème est que l'aspx est sur un domaine auquel je n'ai pas accès. Je veux que la sortie se comporte comme dans un iframe, donc les liens doivent être cliquables mais ils ne quitteront pas ma page.Obtenir le site croisé html, l'afficher et obtenir une valeur d'élément

Je pense soit à AJAX avec proxy PHP, soit à un iframe dans lequel je peux modifier le contenu. Est-ce possible? Si cela est possible et que cela implique un code côté serveur, je voudrais savoir s'il y a des hébergeurs gratuits qui supportent le code complet (par exemple, presque tous les hébergeurs gratuits ont safe_mode pour PHP).

EDIT: Je veux afficher cette page: School scheme. L'URL ne change pas, elle envoie simplement des requêtes au serveur (pensez via JavaScript). Lorsque l'utilisateur quitte, je vais voir ce qui est dans la boîte de sélection id = "TypeDropDownList" et ce qui est dans la boîte de sélection id = "ScheduleIDDropDownList".

Lorsque l'utilisateur retourne à ma page, je vais imprimer ces valeurs à la page via l'URL comme celui-ci "http://www.novasoftware.se/webviewer/(S(lv1isca2txx1bu45c3kvic45))/design1.aspx?schoolid=27500&code=82820&type=" + type + "&id=" + id + "

J'ai essayé plusieurs scripts proxy php sur 000webhost avant posté ici. par exemple ceci:

<?php 
ob_start(); 

function logf($message) { 
    $fd = fopen('proxy.log', "a"); 
    fwrite($fd, $message . "\n"); 
    fclose($fd); 
} 

?> 
<? 
$url = $_REQUEST['url']; 
logf($url); 
$curl_handle = curl_init($url); 
curl_setopt($curl_handle, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl_handle, CURLOPT_USERAGENT, "Owen's AJAX Proxy"); 

$content = curl_exec($curl_handle); 
$content_type = curl_getinfo($curl_handle, CURLINFO_CONTENT_TYPE); 
curl_close($curl_handle); 
header("Content-Type: $content_type"); 
echo $content; 
ob_flush(); 
?> 

Mais il retourne Attention: curl_setopt(): argument fourni n'est pas une ressource cURL valable dans /home/a5379897/public_html/ajax-proxy.php en ligne 16

J'ai essayé de les contacter à ce sujet parce qu'ils disent qu'ils ont activé cURL mais ils n'ont pas encore répondu.

Je pense qu'il serait possible de simplement afficher les deux boîtes de sélection lorsque l'utilisateur visite la page pour la première fois. Lorsque les options sont sélectionnées, un iframe affichera la bonne page en passant "http://www.novasoftware.se/webviewer/(S(lv1isca2txx1bu45c3kvic45))/design1.aspx?schoolid=27500 & code = 82820 & type =" + type + « & id = » + id + "à l'attribut src. le problème avec ce que je vais devoir récupérer les boîtes de sélection someway et je vais avoir le même problème.

+0

Il doit y avoir un moyen plus simple. Quel est votre objectif final? Qu'essayez-vous de faire exactement? – Stephen

+0

Je suis d'accord avec Stephen ... J'ai déjà fait quelque chose de similaire auparavant, et ce n'est pas joli. –

Répondre

1

Pour obtenir toute sortie ASPX comme une chaîne à manipuler, vous pouvez utiliser file_get_contents(http://yoursite.com/yourpage.aspx);

Pour de meilleurs résultats, ouvrir un flux que le contexte via http.

<?php 
// Create a stream 
$opts = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept-language: en\r\n" . 
       "Cookie: foo=bar\r\n" 
) 
); 

$context = stream_context_create($opts); 

// Open the file using the HTTP headers set above 
$file = file_get_contents('http://www.example.com/', false, $context); 
?> 
+0

merci, je vais essayer cela plus tard et vous dire si je l'ai fonctionné. D'abord, je vais devoir trouver un hébergeur gratuit qui le supporte. Si j'en trouve un, je l'écrirai bien sûr. – Zalastax

+0

J'ai essayé votre script dans WampServer mais lorsque j'essaie d'afficher la page aspx, j'ai cette erreur: Introuvable L'URL demandée /MZDesign1.aspx est introuvable sur ce serveur. – Zalastax

+0

Je suis entré http://www.novasoftware.se/webviewer/(S(jaz2h3z1eziugm45upgm4y3p))/design1.aspx?schoolid=27500&code=82820&type=3&id={7294F285-A5CB-47D6-B268-E950CA205560} dans file_get_contents – Zalastax

2

Vous devez utiliser PHP comme Javascript ne permet pas les requêtes inter-domaines Votre code PHP accaparerait littéralement la page souhaitée par le client, en la transformant (en changeant href du lien vers votre page avec une variable get de la page vers laquelle les liens originaux href se dirigent). ils cliquent sur le lien, ils seront envoyés à la même page qu'ils sont maintenant, mais la page va saisir la nouvelle page et le retourner (traitement de cette page aussi) et ainsi de suite. 000webhost 000webhost sont un bon hébergeur gratuit qui vous permet de faire la plupart des fonctions de PHP et de ne pas mettre de publicités sur votre site.

+0

C'est correct.+1 –

+0

J'ai essayé 000webhost avant que je poste ici et j'essayais d'utiliser cURL et malheureusement cela n'a pas fonctionné. Ils ont aussi safe_mode et je ne peux pas utiliser fopen là non plus. – Zalastax

0

Grâce à greg, j'ai pu créer ce script qui récupère la page.

<html> 
<head> 
</head> 
<body> 
<?php 
// Create a stream 
$opts = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept-language: en\r\n" . 
       "Cookie: foo=bar\r\n" 
) 
); 

$context = stream_context_create($opts); 
$host = 'http://www.novasoftware.se/webviewer/(S(bkjwdqntqzife4251x4sdx45))/'; 
$url = '/design1.aspx?schoolid=27500&code=82820&type=3&id={7294F285-A5CB-47D6-B268-E950CA205560}'; 
$changetothis='src="'.$host; 
// Open the file using the HTTP headers set above 
$file = file_get_contents($host.$url, false, $context); 
$changed = str_replace('src="', $changetothis,$file); 
echo $changed; 

?> 
</body> 
</html>