2012-08-23 5 views
0

J'essaie de poster sur un forum phpBB2 fonctionnant sur localhost avec PHP et cURL. J'ai bien géré la journalisation, c'est juste l'affichage que je ne peux pas comprendre.Publier sur le forum phpBB2 avec PHP et cURL

Voici mon code:

<?php 

$cookieFile = 'C:\xampp\htdocs\cookies\\' . uniqid(true) . '.txt'; 

// Login 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, 'http://localhost/phpbb2/login.php'); 
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFile); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HEADER, true); 
curl_setopt($curl, CURLOPT_POST, true); 
$postVars = array('username' => 'admin', 'password' => 'password', 'autologin' => 'on', 'login' => 'Log in'); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $postVars); 
$resp = curl_exec($curl); 
curl_close($curl); 

// Parse sid from cookie file 
preg_match('/phpbb2mysql_sid\t(.*)/', file_get_contents($cookieFile), $match); 
$sId = $match[1]; 

// Post 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, 'http://localhost/phpbb2/posting.php?mode=newtopic&f=1'); 
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieFile); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HEADER, false); 
curl_setopt($curl, CURLOPT_POST, true); 
$postVars = array('subject' => 'Test post', 
        'message' => 'Test post, please ignore.', 
        'sid' => $sId, 
        'f' => 1, 
        'post' => 'Submit'); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $postVars); 
$resp = curl_exec($curl); 
curl_close($curl); 

echo $resp; 

Le cURL fixe l'amende à biscuits, et je sais que le paramètre sid J'envoie ma demande POST est correct, car il est le même que celui qui est dans la base de données. Cependant, lorsque j'exécute ce code, phpBB crache cette erreur: Invalid Session. Please resubmit the form..

Je ne comprends pas. J'attrape le cookie après que je me connecte, l'envoyant avec la demande de POST pour créer un nouveau sujet, pourtant il indique la session invalide.

Qu'est-ce qui pourrait mal tourner ici?

+0

avez-vous trouvé une solution, je me bats aussi trop avec cette situation. – ravisoni

Répondre

1

Je hasarder une hypothèse qu'il est parce que vous exécutez

curl_close($curl); 
$curl = curl_init(); 

après la connexion, puis avant de poster. Vous voulez supprimer ces deux lignes et continuer à utiliser la même poignée de boucle.

BTW: Votre code de connexion phpbb bien travaillé pour moi ...;)