2010-01-25 5 views
1

OK - Simplement, je construis un site qui a besoin d'intégrer une page existante, protégée par un simple .htaccess/script Htpasswd.Vous appelez un autre site?

Comment puis-je passer le nom d'utilisateur/mot de passe sur le site de réception en utilisant PHP?

Merci d'avance pour votre aide !!!

MISE À JOUR - Je pense que je pourrais avoir trop compliqué la question. Ce que je besoin de faire est essentiellement:

<a href="http://username:[email protected]/" target="_blank">The link<a> 

Ce qui, en fait, fonctionne parfaitement dans tout sauf IE. Je suis doré si je peux trouver une solution plus universelle et plus simple.

Merci d'avance pour votre aide, tous!

+0

Pouvez-vous définir comment vous voulez « intégrer » la page existante? Est-ce dans un iframe? Êtes-vous simplement lié à cela? – meagar

+0

meagar - Je peux aller dans les deux sens. L'objectif ici est simplement d'intégrer une application/démo de contrôle matériel externe basée sur le Web dans un site standard. L'application de contrôle existante a ses propres graphiques/navigation. Idéalement, si l'utilisateur se déconnecte de l'application de contrôle, j'aimerais qu'il soit renvoyé sur le site principal. –

Répondre

1

Si vous utilisez la fonction file_get_contents pour télécharger la page, vous pouvez utiliser quelque chose comme ceci:

$data = file_get_contents('http://username:[email protected]/path/'); 
1

Vous serez mieux loti si vous apprenez à connaître la bibliothèque curl, une bonne introduction peut être trouvé here, y compris comment soumettre un nom d'utilisateur et un mot de passe.

0

Vous pouvez passer le nom d'utilisateur et mot de passe en texte brut via une redirection HTTP simple, dans le format

http://username:[email protected]/yourpage 

Cependant, vous ne devriez probablement pas - certains navigateurs maintenant vous dérange pas explicitement la confirmation quand ils voient cette syntaxe.

Vous pouvez cacher de l'utilisateur cependant, en chargeant l'URL ci-dessus avec file_get_contents() et les résultats du dumping au navigateur. Cela ne fonctionnera pas si la sortie HTML de la page utilise des liens relatifs aux fichiers externes (images/js/css) sur son serveur.

+0

IIRC MSIE le retire. Mais cette syntaxe fonctionne toujours via Curl si vous pouvez être dérangé par proxy tout l'accès et traiter avec les URL codées en dur dans le site distant – symcbean

2

Je suis d'accord avec alxp que vous devriez apprendre à connaître cURL. L'essentiel est que lorsque vous utilisez HTTP Basic Auth, les informations d'identification sont envoyées sous la forme d'une chaîne codée en base64 dans les en-têtes. Voici un exemple simple utilisant l'extension cURL de PHP:

$url = '...'; 
$username = '...'; 
$password = '...'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Authorization: Basic " . base64_encode($username . ":" . $password) 
)); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

$result = curl_exec($ch); 
print $result; 

Hope that helps! Lisez sur le sujet HTTP Basic here et PHP's cURL extension here

S'il vous plaît garder à l'esprit que ce code d'exemple et ne contient pas de vérification d'erreur, etc.

+0

Cela fonctionne bien, Paul, mais crée deux problèmes ... D'abord, la page résultante manque de graphiques et Nav (il semble penser que cela fait partie du site d'appel) ... Je lis maintenant sur l'extension cURL, mais si vous avez des idées rapides, j'apprécierais! –

Questions connexes