Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/07/2007, 00h51   #1
Membre actif
 
Inscription : mars 2007
Messages : 342
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : mars 2007
Messages : 342
Points : 178
Points : 178
Par défaut [Cookies] Faisable ou non avec PHP ? S'authentifier et télécharger une page externe

Voilà,

Mon problème est le suivant :
Je souhaiterais créer une page web qui va chercher des informations sur d'autres pages sur d'autres sites, sur lequels il faut s'identifier, gérer les cookies, et repiquer quelques bouts de page.

Je m'explique Par exemple :

le site A vend le produit X au prix XA
le site B vend le produit X au prix XB

Sur le site A et le site B il faut d'abord s'identifier (login, MdPasse) puis lancer une recherche du X pour avoir XA ou XB.

Je veux créer un site C qui n'affiche que X, XA et XB.

Balaise non?
Est-il possible de faire ça avec PHP
cmako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 09h13   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Je pense qu'il va falloir que tu te penches du coté de CURL qui va te permettre de faire ce genre de choses, il y a pas mal de posts dans le forum qui parlent de son utilisation.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 09h54   #3
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 827
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 827
Points : 3 459
Points : 3 459
Perso je ne connaîs pas CURL. Pour ce genre de choses j'utilise les sockets ( http://www.php.net/sockets ) et j'envoie les requête HTTP adéquates.
En tout cas ce que tu veux faire est tout à fait possible, et ce serait bcp plus simple si lesdits sites webs partenaires mettaient en place des webservices
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 11h31   #4
Membre actif
 
Inscription : mars 2007
Messages : 342
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : mars 2007
Messages : 342
Points : 178
Points : 178
Citation:
Envoyé par Séb.
Perso je ne connaîs pas CURL. Pour ce genre de choses j'utilise les sockets ( http://www.php.net/sockets ) et j'envoie les requête HTTP adéquates.
En tout cas ce que tu veux faire est tout à fait possible, et ce serait bcp plus simple si lesdits sites webs partenaires mettaient en place des webservices
Je vais demander bien sur pour les webservices, mais vous savez ou je peux me renseigner sur les requetes HTTP?
cmako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 12h53   #5
Membre actif
 
Inscription : mars 2007
Messages : 342
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : mars 2007
Messages : 342
Points : 178
Points : 178
Citation:
Envoyé par koopajah
Je pense qu'il va falloir que tu te penches du coté de CURL qui va te permettre de faire ce genre de choses, il y a pas mal de posts dans le forum qui parlent de son utilisation.
Merci pour cURL mais cette doc est incomplète. Il manque toute l'explication sur l'utilistation des constantes pré-définies.
cmako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 16h51   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 827
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 827
Points : 3 459
Points : 3 459
Citation:
Envoyé par cmako
vous savez ou je peux me renseigner sur les requetes HTTP?
Tu peux faire une recherche Google "rfc http", mais ça reste du bas-niveau. Mieux vaut éviter si tu n'es pas à l'aise avec les sockets.
Tu seras certainement plus productif si tu te bases sur une API client HTTP :
- PEAR : http://pear.php.net/manual/en/packag...ttp-client.php
- ZF : http://framework.zend.com/manual/en/...nd.http.client
- etc.
Au final ce serait peut-être CURL le plus efficace mais je ne sais pas s'il répond précisément à tes besoins.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 18h23   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
cURL gère les cookies. Il suffit simplement d'utiliser les options prévues à cet effet : CURLOPT_COOKIEFILE et CURLOPT_COOKIEJAR. De plus, elle est très facile à utiliser mais malheureusement elle n'est pas disponible partout. Vous ferez vite le tour des options surtout pour une utilisation limitée au protocole HTTP.

Par contre la gestion des sessions dépend du serveur distant. Je rappelle que pour un serveur utilisant PHP, il peut être configuré pour utiliser les cookies et/ou propager l'identifiant dans les liens internes - à finalité GET comme POST - (configuration déconseillée mais on en trouve encore) donc il est facile dans les deux cas de récupérer cet identifiant (pour le premier une expression régulière devrait faire l'affaire).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2007, 12h27   #8
Membre actif
 
Inscription : mars 2007
Messages : 342
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : mars 2007
Messages : 342
Points : 178
Points : 178
Citation:
Envoyé par Séb.
Tu peux faire une recherche Google "rfc http", mais ça reste du bas-niveau. Mieux vaut éviter si tu n'es pas à l'aise avec les sockets.
Tu seras certainement plus productif si tu te bases sur une API client HTTP :
- PEAR : http://pear.php.net/manual/en/packag...ttp-client.php
- ZF : http://framework.zend.com/manual/en/...nd.http.client
- etc.
Au final ce serait peut-être CURL le plus efficace mais je ne sais pas s'il répond précisément à tes besoins.
Le problème des API ce qu'il faut faire une modif sur le serveur pour que l'interpreteur PHP les utilise. Je ne suis pas sûr que l'hebergeur du site ne sera pas très content de faire cette modification. Je préfère faire tout sois-même.
Pour le moment je n'ai toujours pas réussi à intecepter les messages qui circulent entre le navigateur Internet et le site. J'ai téléchargé des proxy en JAVA mais je n'ai jamais réussi à les faire marcher.
cmako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2007, 12h39   #9
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 827
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 827
Points : 3 459
Points : 3 459
Citation:
Envoyé par cmako
Le problème des API ce qu'il faut faire une modif sur le serveur pour que l'interpreteur PHP les utilise.
Les APIs proposées plus haut ne sont pas des extensions PHP mais de simples scripts que tu es libre d'inclure à ton projet.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2007, 20h29   #10
Membre actif
 
Inscription : mars 2007
Messages : 342
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : mars 2007
Messages : 342
Points : 178
Points : 178
Citation:
Envoyé par Séb.
Perso je ne connaîs pas CURL. Pour ce genre de choses j'utilise les sockets ( http://www.php.net/sockets ) et j'envoie les requête HTTP adéquates.
En tout cas ce que tu veux faire est tout à fait possible, et ce serait bcp plus simple si lesdits sites webs partenaires mettaient en place des webservices

Est ce qu'il est possible d'avoir quelques bout de code? Merci
cmako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2007, 01h01   #11
Membre habitué
 
Avatar de nico le terrible
 
Inscription : novembre 2004
Messages : 163
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 163
Points : 107
Points : 107
Je te conseille vraiment cURL, qui est rapide et facile d'utilisation !

Tu envoie une requête avec tes identifiants tu récupère le cookie puis tu le renvoie à chaque fois, c'est pas dur du tout

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$curl = curl_init('http://secret/login_action.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post."\r\n");
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_NOBODY, 1);
$arr1 = explode("\n", curl_exec($curl));
foreach($arr1 as $k => $value)
{
	ereg("PHPSESSID=(.*);", $value, $regss);
}
$phpsessid = $regss[1];
curl_close($curl);
Pour récupérer le cookie (et encore c'est la méthode bourinne, il en existe des plus "correct")
nico le terrible est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h59.


 
 
 
 
Partenaires

Hébergement Web