Ho lottato con la registrazione in Wordpress per un po 'ora con CURL (PHP). Penso di aver provato di tutto, ma sembra che mi sia sfuggito qualcosa. Non riesco a ottenere CURL per salvare i miei cookie quando accedo. La cosa strana, è che anche se non riesco a salvare i cookie su file, tutto funziona ancora più o meno, ad eccezione dell'aggiornamento dei plug-in Worpdress (è quello a cui sto lavorando al momento). Posso accedere a wordpress, e posso persino impostare un ugprade automatico preg_matching del link e curling su di esso - gli aggiornamenti core di Wordpress senza problemi, ma per qualche motivo quando si tratta di plugin - non riesco proprio a farlo. Ho avuto un sacco di ipotesi la scorsa notte, dove si trova il problema, ma niente ha fatto. Ora, quando ho deciso di confrontare i cookie che ricevo da CURL e in FireFox, risulta che non ci sono cookie da CURL.CURL non salva i cookie (PHP)
Ok, quindi qui ho impostato le opzioni (non importa le cose commentate, ho controllato tutto commentando le cose e inserendole ...).
$cookieFile = 'cookies.txt';
$channel = curl_init();
curl_setopt_array($channel, array (
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_TIMEOUT => 60,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_COOKIEFILE => $cookieFile,
CURLOPT_COOKIEJAR => $cookieFile,
CURLOPT_AUTOREFERER => true,
CURLOPT_POSTFIELDS => $loginPostData,
CURLOPT_POST => 1,
#CURLOPT_FRESH_CONNECT => 1
#CURLOPT_FAILONERROR => 1
));
# curl_setopt ($channel, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
#
# Shorten curl_exec for our $channel
#
function copen($openUrl, $custom = FALSE) {
global $channel;global $siteUrl;
if($custom) {$siteUrl = "";}
curl_setopt ($channel, CURLOPT_URL, $siteUrl.$openUrl);
$result = curl_exec ($channel) or die(curl_error($channel));
echo "<h3> Opening: $openUrl </h3>";
return $result;
}
così ho fatto una ricerca, e ha cercato di ottenere i cookie, e non è riuscito con questo:
preg_match('/^Set-Cookie: (.*?);/mi', $result, $m);
echo(parse_url($m[1]));
Ho provato anche facendo eco al $ cookieFile con file_get_contents() - vuote. Ho controllato il file circa 15 volte - è un file scrivibile 777. Ho provato a scriverci con file_put_contents() e ci sono riuscito, quindi c'è un errore nel percorso del file e/o nelle autorizzazioni. Mi manca ovviamente qualcosa, non riesco a vederlo.
migliori saluti :)
Sei riuscito a mantenere il cookie/sessione dal vivo dopo aver effettuato l'accesso con questo? Significato che: potresti eseguire la scansione di una pagina dopo aver effettuato l'accesso, senza eseguire nuovamente la registrazione? – Norris
sì il cookie viene salvato nel browser. E non hai bisogno di un altro login (solo se chiudi il browser oi cookie scadono) – TreantBG
Ok, allora penso di sapere qual è il problema che sto avendo! - Quello che sto tentando è di rendere PHP stesso CURL La pagina, senza aprirla nel mio browser! Ancora non conosco una correzione per questo ... – Norris