Como usar variable $_SESSION en consulta
Tengo una nueva dificultad y es la siguiente: (Trabajo con PHP version 5.2.13).
Mi aplicación solicita al usuario, para ingresar a un área reservada, su login y password. Una vez validado el ingreso, se muestra una página con varias opciones a elegir. Yo quisiera que una de estas alternativas otorgue, al usuario validado, la opción de modificar/actualizar sus datos.
La mayoría de los ejemplos que se muestran en internet trabajan solicitando, mediante una caja de texto, un valor que luego se contrasta contra el valor del campo en la tabla. Ahí esta mi problema:
a) Tengo almacenado el login y el password en variables $_SESSION. En una primera instancia pensé en solicitar nuevamente el password y compararlo contra el valor almacenado en $_SESSION. Entonces hice algo así:
Código :
$mpassword=$_SESSION['pusuario];
$mvalor=$_POST['clave']; // mvalor ya esta validado para evitar injeccion etc.....
if($mvalor!=$mpassword) {
header("Location: http://www.xxx.com/area/x1.php?errno=1"); }
else {
include("connect.php"); // aqui sigo dando la instruccion de buqueda y pido que muestre...
}
PERO, NUNCA me realizo la búsqueda y se quedaba en el header. :(
Al depurar e imprimir con echo, observe que si quería mostrar en pantalla los dos valores ($mpassword y $mvalor) uno de ellos nunca se mostraba, pero, si solo pedía ver uno de ellos (CUALQUIERA) se pintaba sin problemas .
b) Me dije "ya no solicito el password porque lo tengo, pero solicitare otros dos datos" y en la instrucción de consulta escribí así:
Código :
$mquery="SELECT * FROM $tabla WHERE clave =" .$mpassword. "&& (egreso like '%".$megreso."%' && especia like '%".$mespec."%')";
Porque si pongo "clave LIKE ..." obvia esta condición y me muestra cualquier registro que cumpla los otros dos valores de los campos solicitados. Resultado: mensaje de error:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/xxx/public_html/area/x2.php on line 49
----
Snif!
Por ello, me pregunto y les consulto: ¿Se puede usar el contenido de una variable $_SESSION para realizar este trabajo? Porque si pido el password en caja de texto y lo uso para compararlo contra el valor del campo "clave" de la tabla no tengo problemas, PERO si alguien colocase otro password, si lo supiera, podrían salir los datos de OTRA persona y NO QUIERO ESO.
Tal vez el problema es que se trata de tipos de variables distintas, ¿no?.
Entonces, ¿podrían ayudarme con esta dificultad?. Agradezco muchísimo de antemano las sugerencias que puedan darme, la verdad este asunto me tiene cabezona.
Nuevamente, mil gracias
p.s. Millon de gracias al experto que me ayudo con la respuesta anterior. Aun no se bien como escribir los comentarios :(
Mi aplicación solicita al usuario, para ingresar a un área reservada, su login y password. Una vez validado el ingreso, se muestra una página con varias opciones a elegir. Yo quisiera que una de estas alternativas otorgue, al usuario validado, la opción de modificar/actualizar sus datos.
La mayoría de los ejemplos que se muestran en internet trabajan solicitando, mediante una caja de texto, un valor que luego se contrasta contra el valor del campo en la tabla. Ahí esta mi problema:
a) Tengo almacenado el login y el password en variables $_SESSION. En una primera instancia pensé en solicitar nuevamente el password y compararlo contra el valor almacenado en $_SESSION. Entonces hice algo así:
Código :
$mpassword=$_SESSION['pusuario];
$mvalor=$_POST['clave']; // mvalor ya esta validado para evitar injeccion etc.....
if($mvalor!=$mpassword) {
header("Location: http://www.xxx.com/area/x1.php?errno=1"); }
else {
include("connect.php"); // aqui sigo dando la instruccion de buqueda y pido que muestre...
}
PERO, NUNCA me realizo la búsqueda y se quedaba en el header. :(
Al depurar e imprimir con echo, observe que si quería mostrar en pantalla los dos valores ($mpassword y $mvalor) uno de ellos nunca se mostraba, pero, si solo pedía ver uno de ellos (CUALQUIERA) se pintaba sin problemas .
b) Me dije "ya no solicito el password porque lo tengo, pero solicitare otros dos datos" y en la instrucción de consulta escribí así:
Código :
$mquery="SELECT * FROM $tabla WHERE clave =" .$mpassword. "&& (egreso like '%".$megreso."%' && especia like '%".$mespec."%')";
Porque si pongo "clave LIKE ..." obvia esta condición y me muestra cualquier registro que cumpla los otros dos valores de los campos solicitados. Resultado: mensaje de error:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/xxx/public_html/area/x2.php on line 49
----
Snif!
Por ello, me pregunto y les consulto: ¿Se puede usar el contenido de una variable $_SESSION para realizar este trabajo? Porque si pido el password en caja de texto y lo uso para compararlo contra el valor del campo "clave" de la tabla no tengo problemas, PERO si alguien colocase otro password, si lo supiera, podrían salir los datos de OTRA persona y NO QUIERO ESO.
Tal vez el problema es que se trata de tipos de variables distintas, ¿no?.
Entonces, ¿podrían ayudarme con esta dificultad?. Agradezco muchísimo de antemano las sugerencias que puedan darme, la verdad este asunto me tiene cabezona.
Nuevamente, mil gracias
p.s. Millon de gracias al experto que me ayudo con la respuesta anterior. Aun no se bien como escribir los comentarios :(
{"Lat":43.3193080962475,"Lng":-4.90076065063477}
Respuesta de innet
1