2010-05-16 8 views
1

Je veux obtenir le contenu de certains e-mails dans mon compte Gmail. Je voudrais utiliser l'extension PHP cURL pour le faire. J'ai suivi ces étapes dans mon premier essai:partager le même cookie entre deux site Web en utilisant l'extension PHP cURL

  1. Dans le code PHP, afficher le contenu de https://www.google.com/accounts/ServiceLoginAuth.
  2. Dans le navigateur, l'utilisateur saisit un nom d'utilisateur et un mot de passe pour se connecter.
  3. Dans le code PHP, enregistrez les cookies dans un fichier nommé cookie.txt.
  4. Dans le code PHP, envoyez la demande à https://mail.google.com/ avec les cookies récupérés à partir de cookie.txt et affichez le contenu.

Le code suivant ne fonctionne pas:

$login_url = 'https://www.google.com/accounts/ServiceLoginAuth'; 
$gmail_url = 'https://mail.google.com/'; 
$cookie_file = dirname(__FILE__) . '/cookie.txt'; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); 
curl_setopt($ch, CURLOPT_URL, $login_url); 
$output = curl_exec($ch); 
echo $output; 

curl_setopt($ch, CURLOPT_URL, $gmail_url); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); 
$output = curl_exec($ch); 
echo $output; 

curl_close($ch); 
+0

Pourquoi cela ne fonctionne-t-il pas? Ce qui se produit? – SLaks

+0

@Slaks: après avoir cliqué sur le bouton "Connexion", le navigateur quitte localhost et accède directement à https://www.google.com/accounts/ServiceLoginAuth. Par conséquent, aucun cookie utile n'est enregistré dans cookie.txt – powerboy

Répondre

4

Votre approche est erronée. Vous ne pouvez pas récupérer le contenu de https://www.google.com/accounts/ServiceLoginAuth et le sortir, attendre l'utilisateur à remplir les détails et appuyez sur connexion. Puisque la forme est définie comme

<form action="https://www.google.com/accounts/ServiceLoginAuth" method="post"> 

les informations de connexion seront soumis par le navigateur à cette page et votre script ne sont jamais la main sur les cookies. Vous devez envoyer une demande de poste à https://www.google.com/accounts/ServiceLoginAuthdéjà avec le nom d'utilisateur et le mot de passe. Seulement alors curl recevra une réponse avec les cookies. Cela dit, je vous suggère de gratter tout cela, activer IMAP dans GMail et l'utiliser pour accéder à vos e-mails.

+0

Donc vous voulez dire que je dois coder en dur le nom d'utilisateur et mot de passe? – powerboy

+0

Et je n'ai pas utilisé IMAP parce que j'ai besoin d'accéder à d'autres services google tels que le calendrier. – powerboy

+0

Non. Vous pouvez afficher un formulaire avec un champ nom d'utilisateur et mot de passe dont l'action est votre script de récupération de courrier électronique. Ensuite, vous devez lire les données soumises et configurer curl pour les envoyer en tant que données POST. – Artefacto

Questions connexes