2010-01-14 4 views
2

J'essaie de charger du contenu depuis une URL distante dans mon code php. Il y a deux restrictions:Chargement de données distantes sur le serveur en PHP

  1. -je utiliser l'adresse IP du serveur dédié je donc le REMOTE_ADDR de l'autre serveur doit être mon IP dédiée. Ceci élimine Curl car Curl utilise un proxy pour charger l'URL distante et le proxy change l'adresse IP qui ne fonctionne pas.

  2. J'ai besoin de charger les données sur mon back-end en utilisant PHP. Je ne souhaite pas utiliser Javascript pour des raisons de sécurité.

Existe-t-il d'autres solutions que Curl?

Merci

+0

cURL utilise un proxy? Est-ce quelque chose d'unique à votre configuration? –

+0

salut Frank, bien le fournisseur d'hébergement utilise un proxy sur leurs serveurs cloud. Donc, quand je fais un appel à cURL, il sort de mon serveur et à travers un proxy, puis à l'URL que je veux. – pppglowacki

Répondre

1

Lorsque vous utilisez le stream api et une enveloppe qui utilise la prise-wrapper vous pouvez régler le bindto context parameter à accomplir (1):

Utilisé pour spécifier l'adresse IP (soit IPv4 ou IPv6) et/ou le numéro de port que PHP utilisera pour accéder au réseau. La syntaxe est ip: port. La définition de l'adresse IP ou du port sur 0 permet au système de choisir l'adresse IP et/ou le port.
$ctx = stream_context_create(array(
    'socket' => array(
    'bindto' => '192.168.0.107:0', 
    ) 
)); 

$c= file_get_contents('http://php.net', 0, $ctx); 
+0

L'utilisation de la propriété 'bindto' était la clé de ce problème. Je vous remercie – pppglowacki

1

Vous pouvez probablement utiliser fopen pour cela.

+0

+1 Yup, et si fopen_url_wrappers n'est pas activé, il y a toujours les fonctions de socket de niveau inférieur. –

3

Qu'en est-il de file_get_contents($url)? Notez simplement que certains sites requièrent un user-agent, donc vous devrez en définir un avec ini_set() avant de passer l'appel.

1

Avez-vous essayé file_get_contents

<?php 
$homepage = file_get_contents('http://www.stackoverflow.com/'); 
echo $homepage; 
?> 
Questions connexes