Después de leer el interesante aporte
http://www.forosdelweb.com/f18/aport...equest-724214/
Creo que lo estoy haciendo bien, pero la página con la que intento validar debe tener algo que me impide validarme con CURL directamente.
Lo mejor de todo es que lo estoy probando en local contra un panel interno que diseñé, por lo que puedo ver exactamente como se realiza la validación para entrar.
Script de curl
Código PHP:
Ver original
<?php $postvalue['user'] = 'test'; $postvalue['password'] = '123456'; $postvalue['submit'] = 'Iniciar Sesión'; $url = "http://panelme.com/index.php"; // escribe aqui la url de tu formulario //Seteo las opciones para el envio curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'); //Seteo el user Agent en este caso es el navegador firefox 2 echo "<pre>"; echo $result; echo "</pre>"; ?>
Cuando lo lanzo me muestra el codigo de la pagina de login y pass
Y este es el script que corre al otro lado para validar la entrada
Código PHP:
Ver original
<? /* Autentificacion de usuarios Autor: neodani */ // Cargar datos conexion y otras variables. include ("config_BD.inc.php"); include("getRealIP.inc.php"); $ip=getRealIP(); // chequear página que lo llama para devolver errores a dicha página. $pag_referida=$url[0]; $redir=$pag_referida; function Redirigir_error($num_error) { $_SESSION['error']=$num_error; exit; } // chequear si se llama directo al script. if ($_SERVER['HTTP_REFERER'] == ""){ exit; } // Chequeamos si se está autentificandose un usuario por medio del formulario // eliminamos barras invertidas y dobles en sencillas // encriptamos el password en formato md5 irreversible. if(($user == '') or ($pass == '')){ $_SESSION['error']=7; exit; } else{ $query="SELECT * FROM panelme_usuarios WHERE usuario='$user'"; $_SESSION['error']=13; $query2="SET time_zone = '+1:00'"; $query1="insert into panelme_accesos (fecha,ip,usuario,password,valido) VALUES (now(), '$ip', '$user', '$pass',1)"; exit; }else { //El usuario EXISTE. $_SESSION['user']=$_POST['user']; // almacenamos datos del Usuario en un array para empezar a chequear. // liberamos la memoria usada por la consulta, ya que tenemos estos datos en el Array. if($usuario_datos["password"]==$pass){ /* Comprobamos que el password encriptado en la BD coincide con el password que nos han dado al encriptarlo. Recuerda usar la misma semilla para encriptar los dos passwords. */ $query1="insert into panelme_accesos (fecha,ip,usuario,password,valido) VALUES (now(), '$ip', '$user', '$pass',0)"; // cerramos la Base de dtos. // Paranoia: destruimos las variables login y password usadas // le damos un mobre a la sesion. // incia sessiones // Paranoia: decimos al navegador que no "cachee" esta página. // Asignamos variables de sesión con datos del Usuario para el uso en el // resto de páginas autentificadas // definimos variables de sesion. $_SESSION['usuario_id']=$usuario_datos['id']; $_SESSION['usuario_login']=$usuario_datos['usuario']; $_SESSION['usuario_password']=$usuario_datos['pass']; $_SESSION['usuario_ip']=$ip; $_SESSION['nivel_acceso']=$usuario_datos['nivel_acceso']; // Hacemos una llamada a si mismo (scritp) para que queden disponibles // las variables de session en el array asociado $HTTP_... $pag=$_SERVER['PHP_SELF']; }else { $_SESSION['error']=13; $query1="insert into panelme_accesos (fecha,ip,usuario,password,valido) VALUES (now(), '$ip', '$user', '$pass',1)"; // cerramos la Base de dtos. exit; } } } }else { // -------- Chequear sesión existe ------- // usamos la sesion de nombre definido. // Iniciamos el uso de sesiones // Chequeamos si estan creadas las variables de sesión de identificación del usuario, // El caso mas comun es el de una vez "matado" la sesion se intenta volver hacia atras // con el navegador. // Borramos la sesion creada por el inicio de session anterior exit; } } ?>
En un principio creía que lo que podía estar fastidiandome sería este trozo
Código PHP:
Ver original
Pero al ver que cuando hago la ejecución del script en CURL no se descarga el código de la web de error, entiendo que esta validación la hace bien y no entra en ese if.
¿Veis algo que se me escape?
El formulario no envia ninguna variable hidden ni utiliza cookies.
Gracias de antemano!