Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Duda con redirecciones tras un log in

Estas en el tema de Duda con redirecciones tras un log in en el foro de PHP en Foros del Web. Buenas tardes. Estoy desarrollando una página web con HTML, javascript y JQUERY, php y Base de datos MySQL. Mi duda se encuentra en el login. ...
  #1 (permalink)  
Antiguo 04/01/2014, 07:51
 
Fecha de Ingreso: julio-2011
Mensajes: 75
Antigüedad: 8 años, 4 meses
Puntos: 0
Duda con redirecciones tras un log in

Buenas tardes.

Estoy desarrollando una página web con HTML, javascript y JQUERY, php y Base de datos MySQL.

Mi duda se encuentra en el login. No quiero permitir que usuarios que no se han logueado tengan acceso al interior de mi página y para ello he planteado una variable de sesión. El tema es el siguiente. Tengo mi fichero HTML login.inc.php con el formulario correspondiente de login.

Código HTML:
<form id="l_in" action="javascript:void(0);" method="post">
	<input id="login" class="login_border_style" type="text" required name="username" size="20" placeholder="Nickname"/>
	<input id="l_pw" type="password" required class="login_border_style" name="pw" size="20" placeholder="Password"/>
	<input id="l_in_validate" type="submit" value="Entrar"/><br>
	<input id="l_remember" type="checkbox" name="remember"/>Auto Login
	<a href="#">Forgot your password?</a>
	<p id="login_not_activated">Your account isn't activated</p>
	<p id="wrong_login">Your Username or password aren't correct</p>
</form> 
Cuando se hace click en el botón de submit, se llama a una función #l_in (JQUERY)

Código Javascript:
Ver original
  1. $("#l_in").submit(function(){
  2. var Nick=$.trim($("#login").attr("value"));
  3. var Pass=$.trim($("#l_pw").attr("value"));
  4. var Check = document.getElementById("l_remember").checked;;
  5. $.getJSON('/es/framework/methods/ajax/login.php',{Nickname:Nick,Password:Pass, Checkbox:Check},Message);
  6. function Message(data){
  7.     if (data==-1)
  8.         $("#login_not_activated").css("display", "block");
  9.     else if (data==0)
  10.         $("#wrong_login").css("display", "block");
  11.     }
  12. });

esta función recoge los parámetros de cada caja, elimina sus espacios en blanco y lo envía a través de JSON encode al servidor, llamando a un archivo php login.php.

Código PHP:
Ver original
  1. require_once ($_SERVER['DOCUMENT_ROOT'].'/es/framework/classes/Builder.php');
  2. $UIProvider = Builder::getUIProvider();
  3. $_POST = $UIProvider->Login($_REQUEST);
  4. if ($_POST > 0){
  5.     $_SESSION['login'] = 1;
  6.     if (($_REQUEST['Checkbox']) == 1){
  7.         if ($_COOKIE['USR'] == "") 
  8.             setcookie("USR", $_POST, time() + (7*24*60*60),"/");
  9.     }
  10.     header ('Location: /es/page/home.inc.php');
  11. }else
  12.     echo json_encode($_POST);

Login.php se encarga de recoger el todo lo que desde javascript se ha enviado a través de json, y llama al fichero php donde unica y exclusivamente se trabaja con la base de datos (UIProvider). De existir el usuario nos devuelve el id de usuario, entonces en login.php verificamos si existe el usuario. Si existe y tenemos marcada la casilla recordar usuario, nos creará una cookie, nos iniciará la sesion y nos redireccionará, en caso contrario devolveremos a javascript el -1 si es que el usuario existe en la base de datos pero no está activado o el 0 si es que no existe ese usuario en la base de datos.
El problema viene cuando el usuario existe y además está activado, en la instrucción del header no me redirecciona a la página home.inc.php aunque si que lo hace ya que obtengo como respuesta en el firebug todo el contenido html del documento; es decir, todo el tema de url y demás está correcto, aunque temo que el problema se encuentra en que el JSON está esperando algo de retorno (el dichoso Message). Existe alguna solución para esto? o alguna otra forma de realizar el login? soy estudiante de programación autodidacta y nunca he trabajado en el mundillo este así que tampoco sé como profesionalmente se haría, aunque sí que he de decir que no me gustaría dejar una redirección del lado del cliente ya que podrían modificar cualquier parámetro para que entrara sin problemas.
  #2 (permalink)  
Antiguo 04/01/2014, 12:30
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 11 años, 5 meses
Puntos: 127
Respuesta: Duda con redirecciones tras un log in

cuando haces un sistema le colocas sessiones.
envias al servidor los datos del usuario y registra la variable en la session.
luego redirecciona con javascript.
y cuando ingreses a la pagina (cualquiera) donde redireccionas inicia las sesiones y recobra la que habias guardado.
si no es buena alli redireccionas desde el lado del servidor a un logout o lo que quieras, si es buena osea un usuario valido y activo pues simplemente evitas la redireccion.
espero me allas entendido.
  #3 (permalink)  
Antiguo 04/01/2014, 14:44
 
Fecha de Ingreso: julio-2011
Mensajes: 75
Antigüedad: 8 años, 4 meses
Puntos: 0
Respuesta: Duda con redirecciones tras un log in

por lo tanto, quedaría tal que así el javascript

Código Javascript:
Ver original
  1. $("#l_in").submit(function(){
  2.      var Nick=$.trim($("#login").attr("value"));
  3.      var Pass=$.trim($("#l_pw").attr("value"));
  4.      var Check = document.getElementById("l_remember").checked;;
  5.      $.getJSON('/es/framework/methods/ajax/login.php',{Nickname:Nick,Password:Pass,Checkbox:Check},Message);
  6.      function Message(data){
  7.       if (data==-1)
  8.         $("#login_not_activated").css("display", "block");
  9.       else if (data==0)
  10.         $("#wrong_login").css("display", "block");
  11.       else
  12.         window.location.href= "http://www.mipagina.com/es/page/home.inc.php";
  13.      }
  14. });

En mi fichero login.php debería pues registrar mi usuario estilo $_SESSION['login'] = 1; por ejemplo? en cuyo caso, como verifico que nadie toca la sesión y que esta es válida?
Sé que para tocar la sesión, allá donde tenga que evaluarla tengo que abrir con session_start(); pero está segura de hackers? osea, nadie la puede modificar?
  #4 (permalink)  
Antiguo 04/01/2014, 14:53
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Lima, Perú
Mensajes: 5.430
Antigüedad: 8 años
Puntos: 930
Respuesta: Duda con redirecciones tras un log in

Cita:
Iniciado por starlightphp Ver Mensaje
Sé que para tocar la sesión, allá donde tenga que evaluarla tengo que abrir con session_start(); pero está segura de hackers?
Estando del lado del servidor, es muy poco probable que ocurra un ataque, pero no imposible. Quizá alguna persona con conocimientos avanzadísimos en el tema y que cuente con el suficiente tiempo disponible para dedicarse a esa labor, pueda hacerlo, pero aún así, es poco probable que tenga éxito.
__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #5 (permalink)  
Antiguo 04/01/2014, 16:00
 
Fecha de Ingreso: julio-2011
Mensajes: 75
Antigüedad: 8 años, 4 meses
Puntos: 0
Respuesta: Duda con redirecciones tras un log in

Gracias por vuestra atención =)

Etiquetas: formulario, html, log, mysql, tras, usuarios, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:33.