Foros del Web » Programando para Internet » Javascript »

Problema con Login y Variables

Estas en el tema de Problema con Login y Variables en el foro de Javascript en Foros del Web. Hola quisiera que me ayudaran con mi siguiente problema, tengo un sistema de login en php donde desde un formulario envio las variables por POST ...
  #1 (permalink)  
Antiguo 10/07/2013, 14:31
Avatar de agarcia_skynet  
Fecha de Ingreso: julio-2013
Ubicación: Uruguay
Mensajes: 12
Antigüedad: 10 años, 9 meses
Puntos: 0
Pregunta Problema con Login y Variables

Hola quisiera que me ayudaran con mi siguiente problema,

tengo un sistema de login en php donde desde un formulario

envio las variables por POST al php que las verifica y devuelve el resultado,

ya sea si el usuario se logueo correctamente y tiene acceso al sistema o de lo

contrario el mensaje de error, (aclaro que el código de login funciona correctamente)

anteriormente yo usaba
Código HTML:
<form target="skyframe" method="POST" action="confirm.php?snw=login&security&sec"> 
y el resultado en la pagina lo cargaba en un iframe como pueden ver,

llamado: skyframe ...

pero ahora resolví quitar el iframe y quiero cargar en un div

donde el Form lo tengo de la siguiente manera
Código HTML:
<form method="post" action="javascript:loadurl('confirm.php?snw=login&security&sec','main')" class="login"> 
quiero directamente que el formulario al igual que antes, al ser enviado

confirme si el login es correcto y luego me cargue el profile.php

pero todo dentro de el div

.................................................. .................................................. .....................

el problema que tengo, es que siempre me sale como que los campos estan

vacíos porque las variables POST no son generadas, dentro del div ....

y por ese motivo nunca puedo iniciar session de esta manera en mi sistema...

.................................................. .................................................. .....................

el codigo de javascirpt que uso para cargar el div es el siguiente

Cita:
function createXMLHttpRequest(){
var xmlHttp=null;
if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
else if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
return xmlHttp;
}

function loadurl(url,id){
var pagecnx = createXMLHttpRequest();
pagecnx.onreadystatechange=function(){
if (pagecnx.readyState == 4 && (pagecnx.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(id).innerHTML=pagecnx.resp onseText;
}
pagecnx.open('POST',url,true)
pagecnx.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
pagecnx.send(null)
}
SI alguien tiene una solución por-favor, aquí estaré esperando. Gracias.
  #2 (permalink)  
Antiguo 10/07/2013, 14:44
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Problema con Login y Variables

Holas, agarcia_skynet.

No había probado nunca la forma de usar ajax dentro del action del form. Normalmente lo que hago es colocar la llamada a la función JS dentro del evento onclick de algún botón del formulario... Bueno, en todo caso, parece que ese no es el problema acá. Dices que sí logras enviar el formulario, pero que llega vacío, no?

La verdad es que no estás enviando nada por Ajax, o al menos, no veo la parte en que envías los parámetros... yo los envío usualmente aquí:
Código javascript:
Ver original
  1. // en vez de esto:
  2. pagecnx.send(null);
  3.  
  4. // prueba esto:
  5. var parametros = "snw=login&security&sec";
  6. pagecnx.send(parametros);
Como ves, los parámetros los separé del URL...

Saludos!

Editado: Uf, recién caigo que el tema al final no es sobre PHP -_-
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 10/07/2013, 14:55
Avatar de agarcia_skynet  
Fecha de Ingreso: julio-2013
Ubicación: Uruguay
Mensajes: 12
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Problema con Login y Variables

Entiendo pero si yo usara variables

Cita:
var parametros = "snw=login&security&sec";
como dices, estaría enviando las variables GET

pero el nombre de usuario y la contraseña del Form las cuales serian:

Cita:
$_POST['nombre']
y

Cita:
$_POST['password']
igual siguen vacías, tanto que cuando el form es enviado el php

-> confirm.php no las detecta por ese motivo

me devuelve que no se a ingresado datos ...

acá tengo el siguiente php de ejemplo lo cual si pruebas, te darías cuenta

Cita:
<?php

include_once "db/mysql.php";

$class = new LoginUsers();

if((isset($_POST['logsky'])) && $_POST['nombre']!='' && $_POST['password']!='') {

$class->LogUser = (isset($_POST['nombre'])) ? strtolower($_POST['nombre']) : '';
$class->LogPass = (isset($_POST['password'])) ? strtolower($_POST['password']) : '';

$class->LogUser = (isset($_POST['nombre'])) ? trim($_POST['nombre']) : '';

print $class->PrintLogin($_POST['logsky']);

}else{

echo "Error, no hay datos ingresados";
exit;

}
?>
como puedes ver donde dice

Cita:
echo "Error, no hay datos ingresados";
seria lo mismo que "no recibí variables"

porque como dije anteriormente: $_POST['nombre'] y $_POST['password']

llegan vacías, aunque envíe el formulario con datos en los textbox de usuario y contraseña .........

Última edición por agarcia_skynet; 10/07/2013 a las 15:47
  #4 (permalink)  
Antiguo 10/07/2013, 16:42
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Problema con Login y Variables

Exactamente así funciona esta cosa. Debes enviar todas las variables que necesites enviar, concatenadas en un string, unidas por el ampersand, como si fuera un método GET, porque así lo requiere el ajax (como sea, no se verán en la barra de direcciones, ya que están enviando la petición a un DIV). Por eso, si no envías el "nombre" y "password" también en esta cadena, no le llegarán al script PHP.

El caso es que al colocarle método "post" en la llamada a la función open del ajax, éste envía las variables al script, siguiendo efectivamente el método post. Luego, en tu script, te aparecerán las variables en el array $_POST como corresponde.

A lo que voy, es a que no es cosa mágica de que al enviar un formulario con ajax, sus elementos automáticamente sean enviados: debes armar el string tú manualmente con todos los valores del formulario. Hay, no obstante, un método integrado para tomar los valores del formulario en javascript y que se concatenen solos, sin que tengas que hacerlo tú manualmente. Lamentablemente no recuerdo ese método ahora, era algo como serialize(), pero no estoy segura si era parte de JQuery o nativo de Javascript.

De hacerlo manual, tendría que ser algo como:
Código HTML:
<form method="post" action="javascript:loadurl('confirm.php', 'snw=login&security&sec&nombre=' + this.form.nombre.value + '&password=' + this.form.password.value, 'main')" class="login"> 
Ya que la función JS sería:
Código javascript:
Ver original
  1. function loadurl(url, parametros, id)
  2. { ... }

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #5 (permalink)  
Antiguo 11/07/2013, 01:42
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con Login y Variables

Hola:

Creo que necesitas parámetros por get y también por post, así que la url la tenías correctamente al principio, ya que las peticiones ajax por get también se envían por url, pero los parámetros por post los tienes que poner en la instrucción send... y si los parámetros tuviesen caracteres especiales deberías escaparlos.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 11/07/2013, 08:42
Avatar de agarcia_skynet  
Fecha de Ingreso: julio-2013
Ubicación: Uruguay
Mensajes: 12
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Problema con Login y Variables

Lo se, tengo conocimiento sobre ajax, pero sinceramente

puedo cargar el login dentro del div cargando las variables de esta manera

Código:
  var username=document.getElementById("username").value;
  var password=document.getElementById("password").value;
para sacar los datos del textbox del usuario y password

y luego lo usaría así: (ejemplo)

Código:
var params = "username="+username+"&password="+password;
var url = "confirm.php";
y luego cargaría la función: $.ajax( etc ... y el confirm.php iniciaría así:

Código PHP:
  if($_POST){
  
      
$username=$_POST['username'];
      
$password=$_POST['password']; 
y luego seguiría normalmente el código ya que toda respuesta del servidor

cargaría dentro del div normalmente, pero OJO quien tiene conocimiento intermedio en adelante, puede darse cuenta que no es nada seguro ...

luego de confirm.php verificar con IF si es correcto el login, enviaría

a la pagina restringida en caso del login ser correcto, no? ...

pero profile.php ya no cargaría la sesión ya que:

Código PHP:
$_POST['username'
y
Código PHP:
$_POST['password'
no estarían vigentes porque fueron

cargadas por ajax y fue solamente hacia confirm.php y esto seria un gran error
ya que si dejo profile.php sin verificación de login, cualquiera entraría por el link

del navegador y vería el contenido bloqueado sin uso de login, para eso no suceder tendría que crear una cookie guardando los datos del $_POST

(mucho menos seguro) aunque usáramos encriptacion avanzada con algoritmo complejo !! otra cosa las variables que estuvieron en ajax mientras cargaba

confirm.php, son muy vulnerables ya que con el propio javascript puedes sacar los datos de sesión, obvio a nivel del usuario local solamente,

pero si vamos por seguridad también, lógicamente cuanto menos datos tenga un usuario avanzado sobre la sesión mas le dificultamos el acceso ...

-----------------------------------------------------------------------------------

Soy nuevo en el foro pero en lo que pueda ayudar a los que
necesitan aquí estaré también ...

Me dedico a desarrollo de Software, Electrónica y trabajo con: Intelligence Artificial.
Espero respuestas, y gracias por lo que ya han respondido.
  #7 (permalink)  
Antiguo 11/07/2013, 09:57
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Problema con Login y Variables

La verdad, es que cuando se trata de inicios de sesión, yo nunca usaría ajax, sino el envío clásico de formulario vía post. Ahora, al tomar los valores desde javascript es tan inseguro como el hecho de que todos podemos ver el código fuente de las páginas web desde el navegador, y si es por eso, mejor comenzamos a aprender cómo encriptar las páginas y etc... pero aun así, el usuario no verá claves de otros, ya que sólo verá la propia, y no el código fuente, sino en lo que le toca: las cajas de texto.

Ahora, respecto a lo de la seguridad de la página profile.php, ¿no estás usando session_start() y $_SESSION de PHP para validar las sesiones en cada página? Con eso te libras de todas esas dudas y temores :o

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*

Última edición por quinqui; 11/07/2013 a las 10:10
  #8 (permalink)  
Antiguo 11/07/2013, 10:17
Avatar de agarcia_skynet  
Fecha de Ingreso: julio-2013
Ubicación: Uruguay
Mensajes: 12
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Problema con Login y Variables

Claro que estoy usando:

Código PHP:
session_start(); 
Pero a lo que voy justamente, es que las variables:

Código PHP:
$username=$_POST['username']; 
$password=$_POST['password']; 
Fueron enviadas justamente por ajax a confirm.php únicamente

no validarían la sesión a profile.php entonces aunque no visualicen el contenido porque justamente deje:

Código PHP:
session_start(); 
no me sirve mucho, porque tampoco ponderan usar la sesión
aunque hallan usado el login.

cuando pasen a profile.php les reaccionaria al login con cartel de error.

Última edición por agarcia_skynet; 11/07/2013 a las 10:34
  #9 (permalink)  
Antiguo 11/07/2013, 10:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con Login y Variables

Hola:

¿Has leído mi respuesta?

...
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #10 (permalink)  
Antiguo 11/07/2013, 10:47
Avatar de agarcia_skynet  
Fecha de Ingreso: julio-2013
Ubicación: Uruguay
Mensajes: 12
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Problema con Login y Variables

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

¿Has leído mi respuesta?

...
Si pues, e leído ... y luego respondí en general a todos ustedes.

Saludos.
  #11 (permalink)  
Antiguo 11/07/2013, 11:01
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Problema con Login y Variables

Pero luego de hacer la validación inicial del usuario, en confirm.php, ¿no has guardado los valores en $_SESSION?

confirm.php
Código PHP:
session_start();
$username=$_POST['username']; 
$password=$_POST['password'];  

if (
$usuario_es_correcto)
{
 
$_SESSION["username"] = $username;
}
else
{
 unset(
$_SESSION["username"]);

Y luego, en profile.php
Código PHP:
session_start();

if (isset(
$_SESSION["username"]) && !empty($_SESSION["username"]))
{
  
// muestra contenido privado
}
else
{
  
// muestra mensaje acceso denegado o bien rediriges a pagina login, o todo eso junto

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #12 (permalink)  
Antiguo 11/07/2013, 11:42
Avatar de agarcia_skynet  
Fecha de Ingreso: julio-2013
Ubicación: Uruguay
Mensajes: 12
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Problema con Login y Variables

El problema que en el confirm.php tengo un include el cual no se basa solo en:

Código PHP:
$_SESSION["username"
Los datos de $_POST son enviados a confirm.php de la siguiente manera:

Código PHP:
$class->LogUser = (isset($_POST['nombre'])) ? strtolower($_POST['nombre']) : '';    
$class->LogPass = (isset($_POST['password'])) ? strtolower($_POST['password']) : 
y luego por ultimo el confirm.php envía al modulo el resultado final:

Código PHP:
print $class->PrintLogin($_POST['logsky']); 
Aunque yo remplazara ese código por: $_SESSION["username"]
no funcionaria ya que $_POST['logsky'] es el value del submit

y tiene un $key random la cual es único por login, similar al SID

verifica el login si es verdadero antes de enviar el form, cuando se envia

el submit envía los datos con token al modulo, y no puedo crear una $var de logsky y enviarla en modo sesión porque ya se basa en las class de seguridad
y no esta basado en PHP.

Y por lo que veo ajax jamas cumpliría ese trafico de datos.

confirm.php acepta el resultado del login, porque hasta ahí no fue enviado el $key de $_POST['logsky'], pero al final del confirm.php donde pasa al modulo, es el problema, ya que no es el confirm que redirecciona a profile, sino que es el modulo, después de haber chequeado todo eso...

Saludos.
  #13 (permalink)  
Antiguo 11/07/2013, 12:30
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Problema con Login y Variables

Y si guardas ese SID también en la sesión?
Código PHP:
$_SESSION["logsky"] = $_POST["logsky"]; 
Para que luego:
Código PHP:
print $class->PrintLogin(isset($_POST['logsky']) ? $_POST["logsky"] : $_SESSION["logsky"] ); 
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #14 (permalink)  
Antiguo 11/07/2013, 14:55
Avatar de agarcia_skynet  
Fecha de Ingreso: julio-2013
Ubicación: Uruguay
Mensajes: 12
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Problema con Login y Variables

El problema no esta tanto eso, sino que cuando uso la función:

Código HTML:
<form method="post" action="javascript:loadurl('confirm.php','main')" class="login"> 
al usar la función javascript dentro del action directamente no lo toma como que estoy enviando un formulario sino como un link cualquiera, y si uso la función:

onclick y coloco dicho javascript ahí, pues no la toma, me pueden pasar un ejemplo del ajax como quedaría en el caso funcional.

con el usuario, password, y el logsky !!

El formulario lo tengo asi:

Código HTML:
<form method="post" action="javascript:loadurl('confirm.php','main')" class="login">
<h3>Login</h3>
<input type="hidden" name="checksun" value="rdlog"/>
<input type="username" name="nombre" class="login-input" placeholder="Usuario">
<input type="password" name="password" class="passw-input" placeholder="•••••••••">
<div class="recover-pw"><a href="#">¿Olvidó su contraseña?</a></div>
<div class="login-submit"><button type="submit" name="logsky" value="Login">Login</button></div>
</form> 
Saludos.
  #15 (permalink)  
Antiguo 11/07/2013, 18:51
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con Login y Variables

Hola:

Si es cierto esto:

Cita:
Iniciado por agarcia_skynet Ver Mensaje
...(aclaro que el código de login funciona correctamente)...
Es por que a la vez usas los métodos get y post en tu página...

Cita:
Iniciado por agarcia_skynet Ver Mensaje
Si pues, he leído ... y luego respondí en general a todos ustedes.

Saludos.
Pues si funciona el primer código, con Ajax es igual, pero los datos por get los sigues enviando por url, y el método y los parámetros post los usas en la llamada Ajax...

Pero veo que estás liado así que te dejo en tu maraña.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: formulario, html, login, php, variables
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 05:48.