Iniciar sessão com cURL

  • Autor Autor Usuario eliminado 44716
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
U

Usuario eliminado 44716

Hola a todos, me gustaría saber como puedo llegar a hacer un inicio de sesión con cURL ya que lo necesito hacer para el admin de Prestashop y no consigo hacerlo, no veo ninguna guía decente si alguien pudiera decirme los curl_setopt que debo poner se lo agradecería mucho. Esto es lo que había puesto:

Inserir CODE, HTML ou PHP:
	$input = array();
	$input['email'] = "";
	$input['passwd'] = "";

	$handler = curl_init(''); 
	
	curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($handler, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($handler, CURLOPT_COOKIESESSION, true);
	curl_setopt($handler, CURLOPT_POST, true);
	curl_setopt($handler, CURLOPT_POSTFIELDS, $input);

	$response = curl_exec($handler);
	curl_close($handler);

Gracias por leerme y saludos!
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Hola a todos, me gustaría saber como puedo llegar a hacer un inicio de sesión con cURL ya que lo necesito hacer para el admin de Prestashop y no consigo hacerlo, no veo ninguna guía decente si alguien pudiera decirme los curl_setopt que debo poner se lo agradecería mucho. Esto es lo que había puesto:

Inserir CODE, HTML ou PHP:
	$input = array();
	$input['email'] = "";
	$input['passwd'] = "";

	$handler = curl_init(''); 
	
	curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($handler, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($handler, CURLOPT_COOKIESESSION, true);
	curl_setopt($handler, CURLOPT_POST, true);
	curl_setopt($handler, CURLOPT_POSTFIELDS, $input);

	$response = curl_exec($handler);
	curl_close($handler);

Gracias por leerme y saludos!
Faltan las cookies:
PHP:
		curl_setopt($handler, CURLOPT_COOKIEFILE, "cokkie.txt");
		curl_setopt($handler, CURLOPT_COOKIEJAR, "cokkie.txt");

Tmb podrias indicar el referer, el user agent... te recomiendo usar charles proxy y ver todos los datos que se envian
 
mira este codigo lo hise yo para hacer un login a una cierta pagina lo que hise fue averiguar las variables post detras de la user y la pass como la miras? solo abre el codigo fuente y miras la form la variables de esa web en los name="" eran usuari y contrasenia y la que lo enviaba era accion logueo
PHP:
$cookie_file = "/tmp/".time();
	   $useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8"; 
    $c = curl_init("http://xxxxxx/registro"); 

    curl_setopt($c, CURLOPT_USERAGENT, $useragent); 
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($c, CURLOPT_POST,true);
        curl_setopt($c, CURLOPT_POSTFIELDS, "usuari=cccccc&contrasenya=111111&accion=logueo");
	
curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_file);
		 
    $load1 = curl_exec($c); 
   curl_close ($c);
 
mira este codigo lo hise yo para hacer un login a una cierta pagina lo que hise fue averiguar las variables post detras de la user y la pass como la miras? solo abre el codigo fuente y miras la form la variables de esa web en los name="" eran usuari y contrasenia y la que lo enviaba era accion logueo
PHP:
$cookie_file = "/tmp/".time();
	   $useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8"; 
    $c = curl_init("http://xxxxxx/registro"); 

    curl_setopt($c, CURLOPT_USERAGENT, $useragent); 
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($c, CURLOPT_POST,true);
        curl_setopt($c, CURLOPT_POSTFIELDS, "usuari=cccccc&contrasenya=111111&accion=logueo");
	
curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_file);
		 
    $load1 = curl_exec($c); 
   curl_close ($c);

por eso te digo... usa charles proxy y mira que envia el navegador... o algun plugin para ver que envia el navegador...
 
Hola, siguiendo un post que está más o menos bien sobre como iniciar sesión me queda así:

PHP:
	$input = array("email" => "", "passwd" => "");
	$url = ""

	foreach($input as $name=>$value){
		$elements[] = "{$name}=".urlencode($value);
	}

	$handler = curl_init(); 

	curl_setopt($handler, CURLOPT_URL, $url)
	curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($handler, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($handler, CURLOPT_COOKIESESSION, true);
	curl_setopt($handler, CURLOPT_POST, true);
	curl_setopt($handler, CURLOPT_FRESH_CONNECT, true);
	curl_setopt($handler, CURLOPT_POSTFIELDS, $elements);
	curl_setopt($handler, CURLOPT_COOKIEJAR,"cookie.txt");
	curl_setopt($handler, CURLOPT_COOKIEFILE,"cookie.txt");

	$response = curl_exec($handler);
	curl_close($handler);

	print $response;

Pero me manda este error al lanzarlo:

Parse error: syntax error, unexpected 'foreach' (T_FOREACH) in C:\xampp\htdocs\login.php on line 7

Muchas gracias por atenderme.


EDITO:


El error ese era por un punto y coma ahora me da este:

Parse error: syntax error, unexpected 'curl_setopt' (T_STRING) in C:\xampp\htdocs\login.php on line 14

Refiriendose al 2º curl_setopt

EDITO 2:

El otro setopt tampoco tenía ";" xD, ahora simplemente no hace login igual que al principio.

---------- Post agregado el 29-jun-2013 hora: 00:27 ----------

Mi problema es que no puedo incluir el useragent (CREO), ya que este script se ejecuta con un cron job entonces cual sería el useragent (?)
 
Última edição por um moderador:
Hola, siguiendo un post que está más o menos bien sobre como iniciar sesión me queda así:

PHP:
	$input = array("email" => "", "passwd" => "");
	$url = ""

	foreach($input as $name=>$value){
		$elements[] = "{$name}=".urlencode($value);
	}

	$handler = curl_init(); 

	curl_setopt($handler, CURLOPT_URL, $url)
	curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($handler, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($handler, CURLOPT_COOKIESESSION, true);
	curl_setopt($handler, CURLOPT_POST, true);
	curl_setopt($handler, CURLOPT_FRESH_CONNECT, true);
	curl_setopt($handler, CURLOPT_POSTFIELDS, $elements);
	curl_setopt($handler, CURLOPT_COOKIEJAR,"cookie.txt");
	curl_setopt($handler, CURLOPT_COOKIEFILE,"cookie.txt");

	$response = curl_exec($handler);
	curl_close($handler);

	print $response;

Pero me manda este error al lanzarlo:

Parse error: syntax error, unexpected 'foreach' (T_FOREACH) in C:\xampp\htdocs\login.php on line 7

Muchas gracias por atenderme.


EDITO:


El error ese era por un punto y coma ahora me da este:

Parse error: syntax error, unexpected 'curl_setopt' (T_STRING) in C:\xampp\htdocs\login.php on line 14

Refiriendose al 2º curl_setopt

EDITO 2:

El otro setopt tampoco tenía ";" xD, ahora simplemente no hace login igual que al principio.

---------- Post agregado el 29-jun-2013 hora: 00:27 ----------

Mi problema es que no puedo incluir el useragent (CREO), ya que este script se ejecuta con un cron job entonces cual sería el useragent (?)

No influye en nada que se ejecute como cron job, ya que el uagent lo estás especificando tú, no se toma automáticamente. Yo uso este:
PHP:
curl_setopt($handler, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0');
Si quieres puedes poner el tuyo. Para averiguarlo pon un echo $_SERVER['HTTP_USER_AGENT']; o tómalo de aquí: Your user agent » Información básica
Saludos
 
Buenas, paso a dejar una recomendación; utilicen curl_setopt_array(), al tratarse de un Cronjob necesitarán optimizar (ésto hace que se llame a una sóla función con una sola variable, un arreglo bidimensional, en vez de todo ese choclo innecesario)

Inserir CODE, HTML ou PHP:
$handler = curl_init(); 
curl_setopt_array($handler, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_COOKIESESSION => true,
CURLOPT_POST => true,
CURLOPT_FRESH_CONNECT => true,
CURLOPT_POSTFIELDS => $elements,
CURLOPT_COOKIEJAR => "cookie.txt",
CURLOPT_COOKIEFILE => "cookie.txt"));
$response = curl_exec($handler);

les dejo el link a la función en php.net

Un saludo.
 
Voltar
Topo