Question

J'ai une application PHP qui doit extraire le contenu d'une autre page Web et la page Web que je lis nécessite un cookie.

J'ai trouvé des informations sur la manière de passer cet appel une fois le cookie créé ( http://groups.google.com/group/comp.lang.php/msg/4f618114ab15ae2a ), mais je ne sais pas comment générer le cookie ni comment et où se trouve le cookie. enregistré.

Par exemple, pour lire cette page Web via wget, procédez comme suit:

wget --quiet --save-cookies cookie.file --output-document=who.cares \ 
  http://remoteServer/login.php?user=xxx&pass=yyy

wget --quiet --load-cookies cookie.file --output-document=documentiwant.html \
  http://remoteServer/pageicareabout.html

... Ma question est la suivante: comment puis-je utiliser le bit '--save-cookies' en PHP pour pouvoir utiliser le cookie dans le bloc suivant? stream_context_create / file_get_contents:

$opts = array(http'=> array(
  'method'=> "GET",
  'header'=>
    "Accept-language: en\r\n" .
    "Cookie: **NoClueAtAll**\r\n"
  )
);

$context = stream_context_create($opts);
$documentiwant = file_get_contents("http://remoteServer/pageicareabout.html",
  0, $context);
Était-ce utile?

La solution

Vous feriez probablement mieux d'utiliser cURL . Utilisez curl_setopt pour configurer les options de gestion des cookies.

S'il s'agit d'une opération ponctuelle, vous pouvez utiliser Firefox avec les en-têtes HTTP en direct pour obtenir le en-tête, puis collez-le dans votre code PHP.

Autres conseils

Shazam : cela a fonctionné! Merci beaucoup! Au cas où quelqu'un tomberait sur cette page, voici ce qu'il fallait en détail:

  1. installer cURL (pour moi c’était comme simple comme 'sudo apt-get install php5-curl 'dans Ubuntu)
  2. changer le PHP précédemment répertorié comme suit:

    <?php
    
    $cr = curl_init('http://remoteServer/login.php?user=xxx&pass=yyy');
    curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($cr, CURLOPT_COOKIEJAR, 'cookie.txt');   
    $whoCares = curl_exec($cr); 
    curl_close($cr); 
    
    $cr = curl_init('http://remoteServer/pageicareabout.html');
    curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($cr, CURLOPT_COOKIEFILE, 'cookie.txt'); 
    $documentiwant = curl_exec($cr);
    curl_close($cr);
    
    ?>
    

L'extrait de code ci-dessus est fortement influencé par http://www.weberdev.com/get_example-4555. html .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top