He estado luchando con el registro en Wordpress desde hace un tiempo con CURL (PHP). Creo que lo he intentado todo, pero parece que me he perdido algo. No puedo obtener CURL para guardar mis cookies cuando inicio sesión. Lo extraño es que, aunque no puedo guardar las cookies en el archivo, todo funciona más o menos, excepto la actualización de Plugins de Worpdress (que es en lo que estoy trabajando actualmente). Puedo iniciar sesión en wordpress, e incluso puedo establecer un ugprade automático preg_matching el enlace y curling en él - actualizaciones principales de Wordpress sin problemas, pero por alguna razón cuando se trata de complementos - simplemente no puedo hacerlo. Anoche tuve MUCHAS adivinanzas donde radica el problema, pero nada sirvió. Ahora, cuando decidí comparar las cookies que obtuve de CURL y FireFox, resulta que no hay cookies de CURL.CURL no guarda las cookies (PHP)
Bien, así que aquí configuré las Opciones (no me molestan las cosas comentadas, he estado revisando todo comentando cosas y poniéndolas ...).
$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;
}
por lo que hice una búsqueda, y trataron de obtener las cookies, y no pudo con esto:
preg_match('/^Set-Cookie: (.*?);/mi', $result, $m);
echo(parse_url($m[1]));
También probé haciendo eco de la $ cookieFile con file_get_contents() - vacías. Verifiqué el archivo unas 15 veces, es un archivo que se puede escribir en 777. Intenté escribir con file_put_contents() y lo logré, por lo que hay un error en la ubicación del archivo y/o permisos. Obviamente me falta algo, simplemente no puedo verlo.
Saludos :)
¿Pudo mantener la cookie/sesión en vivo después de iniciar sesión con esto? Lo que significa que, ¿podría rastrear una página después de iniciar sesión, sin volver a iniciar sesión? – Norris
sí, la cookie se guarda en el navegador. Y no necesita otro inicio de sesión (solo si cierra el navegador o las cookies caducan) – TreantBG
Bien, entonces creo que sé cuál es el problema que estoy teniendo. - Lo que intento es hacer que el propio PHP CURL ¡La página, sin abrirla en mi navegador! Todavía no sé una solución para esto ... – Norris