Foros del Web » Programando para Internet » PHP »

Se me modifica sola el valor de una sesión...

Estas en el tema de Se me modifica sola el valor de una sesión... en el foro de PHP en Foros del Web. No sé que pasa que se me modifica sola le valor de una sesión de usuario, tengo un formulario para modificar los datos de usuario, ...
  #1 (permalink)  
Antiguo 14/02/2007, 17:59
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Se me modifica sola el valor de una sesión...

No sé que pasa que se me modifica sola le valor de una sesión de usuario, tengo un formulario para modificar los datos de usuario, y cuando lo envío si no cumple alguna condición de las exigidas, me redirecciona y ya me ha modificado el valor de la sesion de usuario, lo más raro todavía..., es que en la base de datos no realizo el UPDATE, y si salgo y vuelvo a entrar todo funciona bien de nuevo.., se le ocurre a alguien de que puede ser???

Gracias. Un saludo.
  #2 (permalink)  
Antiguo 14/02/2007, 18:16
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: Se me modifica sola el valor de una sesión...

Evidenetemente algo se te esta pasando por alto, coloca el codigo para que podamos ver ;)
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #3 (permalink)  
Antiguo 14/02/2007, 19:04
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: Se me modifica sola el valor de una sesión...

Estoy desesperado, en cuanto envío en formulario con el campo usuario vacío, me cambia el valor de su sesión, lo que no entiendo es porque.., porque no realiza el UPDATE al filtrar la validación mediante el if.., a continuación pego el code

Código PHP:
<? 
session_start
();
include(
"conexion.php"); 
$tabla="usuarios";
$tabla1="comunicaciones";
$usuario_actual=trim($_POST["usuario_actual"]);
$contrasena_actual=trim($_POST["contrasena_actual"]);
$correo_actual=trim($_POST["correo_actual"]);
$nombre=trim($_POST["nombre"]);
$apellidos=trim($_POST["apellidos"]);
$domicilio=trim($_POST["domicilio"]);
$cp=trim($_POST["cp"]);
$localidad=trim($_POST["localidad"]);
$provincia=trim($_POST["provincia"]);
$centro=trim($_POST["centro"]);
$telefono=trim($_POST["telefono"]);
$correo=trim($_POST["correo"]);
$usuario=trim($_POST["usuario"]);
$contrasena=trim($_POST["contrasena"]);
$repita_contrasena=trim($_POST["repita_contrasena"]);
// una vez recogidas todas las variables enviadas mediante POST
// comenzamos a validar el formulario
if(!empty($nombre)&&!empty($apellidos)&&!empty($correo)&&!empty($contrasena)&&!empty($repita_contrasena)){
if(
is_numeric($cp)){
if(
strlen($cp)==5){
if(
is_numeric($telefono)){
if(
strlen($telefono)>=7){
if(
ereg("^([a-zA-Z0-9_\.-]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})$",$correo)){
if(
strlen($usuario)>=6){
if(
ereg("^[a-zA-Z0-9_\.-]+$"$usuario)){
if(
strlen($contrasena)>=6){
if(
ereg("^[a-zA-Z0-9_\.-]+$"$contrasena)){
if(
$repita_contrasena==$contrasena){
// una vez validado el formulario actualizamos el registro de usuario
$sql="UPDATE $tabla SET nombre='$nombre', apellidos='$apellidos', domicilio='$domicilio', cp='$cp', localidad='$localidad', provincia='$provincia', centro='$centro', telefono='$telefono', correo='$correo', usuario='$usuario', contrasena='$contrasena' WHERE usuario='$usuario_actual' && contrasena='$contrasena_actual'";
mysql_query($sql$conexion) or die("error en la consulta $sql ".mysql_error());
// una vez actualizado el registro de usuario actualizamos los registros de la tabla comunicaciones que comparte campos con la tabla de usuarios
$autor_nuevo=$nombre." ".$apellidos;
$sql="UPDATE $tabla1 SET usuario='$usuario', autor='$autor_nuevo', centro='$centro', correo='$correo' WHERE usuario='$usuario_actual' && correo='$correo_actual'";
mysql_query($sql$conexion) or die("error en la consulta $sql ".mysql_error());
// modifico el valor de las sesiones referentes al usuario
$_SESSION["usuario"]="$usuario";
$_SESSION["contrasena"]="$contrasena";
$_SESSION["domicilio"]="$domicilio";
$_SESSION["cp"]="$cp";
$_SESSION["localidad"]="$localidad";
$_SESSION["provincia"]="$provincia";
$_SESSION["centro"]="$centro";
$_SESSION["telefono"]="$telefono";
$_SESSION["correo"]="$correo";
$_SESSION["nombre"]="$nombre";
$_SESSION["apellidos"]="$apellidos";
// una vez actualizados los registros redireccionamos al formulario editar el registro
header("Location:modificar_registro.php?mensajegeneral=1");
// si repita contraseña no contiene la misma cadena que contraseña
}else{
header("Location:modificar_registro.php?mensajerepitacontrasena=0");
}
// si la contraseña ingresada contiene caracteres inválidos
}else{
header("Location:modificar_registro.php?mensajecontrasena=0");
}
// si la contraseña ingresada contiene menos de 6 caracteres
}else{
header("Location:modificar_registro.php?mensajecontrasena=1");
}
// si el nombre de usuario ingresado contiene caracteres inválidos
}else{
header("Location:modificar_registro.php?mensajeusuario=1");
}
// si el nombre de usuario ingresado contiene menos de 6 caracteres
}else{
header("Location:modificar_registro.php?mensajeusuario=2");
}
// si el correo ingresado contiene caracteres inválidos
}else{
header("Location:modificar_registro.php?mensajecorreo=1");
}
// si el telefono ingresado contiene menos de 7 caracteres
}else{
header("Location:modificar_registro.php?mensajetelefono=0");
}
// si el telefono ingresado no es un número
}else{
header("Location:modificar_registro.php?mensajetelefono=1");
}
// si el código postal ingresado no tiene 5 caracteres
}else{
header("Location:modificar_registro.php?mensajecp=0");
}
// si el código postal ingresado no es un número
}else{
header("Location:modificar_registro.php?mensajecp=1");
}
// si no se han rellenado todos los cammpos del formulario
}else{
header("Location:modificar_registro.php?mensajegeneral=0");
}
mysql_close($conexion);
?>
Saludos.
  #4 (permalink)  
Antiguo 14/02/2007, 19:26
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: Se me modifica sola el valor de una sesión...

La verdad es que no se como pdoes trabajar con los condicionales de esa manera. Al margen, cuando no tenes en claro donde esta el error te conviene dividir el codigo en porciones e ir mostrando mensajes para saber que codigo se ejecuta y cual no. Por ejemplo, coloca un

Código PHP:
<?php
echo "Por aqui pasé!";
?>
Inmediatamente luego de donde asignas las variables de sesion. Hazlo aunque estes completamente seguro que ahi no esta el error. Si no lo hayas ahi, revisa en los lugares en donde asignas datos a las sesiones, no queda otra.

Las sesiones no cambian por arte de magia segun tengo entendido, para que cambien de valor debes tu mismo cambiarlas.

Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #5 (permalink)  
Antiguo 14/02/2007, 19:41
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: Se me modifica sola el valor de una sesión...

Gracias por responder Fridureiks, es que comprobado 100 veces y no doy con el error, la verdad es que cuando rellenas el formulario completamente el UPDATE se realiza perfectamente y las sesiones se actualizan bien..., el problema es cuando dejo por ejemplo el campo usuario sin nada, que parece que el if(!empty($nombre)&&!empty($apellidos)&&etc...) hace bien su trabajo porque el registro no se actualiza..., pero al redireccionar al formulario de nuevo (modificar_registro.php) ya no me carga el usuario que lo cargo en el formulario con:

$usuario="{$_SESSION['usuario']}";

<INPUT name="usuario" type="text" class="cajabuscador" id="usuario" value="<? echo $usuario; ?>" size="40" maxlength="100">

¿Viste algo mal en el código??

Gracias, un saludo.
  #6 (permalink)  
Antiguo 14/02/2007, 21:25
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: Se me modifica sola el valor de una sesión...

¿Que es esto?

$usuario="{$_SESSION['usuario']}";


Código PHP:
<?php
session_start
();



$usuario $_SESSION['usuario'];
?>

Si esta correccion no arregla el problema, relee mi mensaje y has las pruebas que te recomiendo, pues es la manera mas rapida de "achicar" el codigo hasta que puedas encontrar el error.

Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #7 (permalink)  
Antiguo 14/02/2007, 22:10
Avatar de carlosmbrizuela  
Fecha de Ingreso: enero-2007
Ubicación: La Plata (Argentina)
Mensajes: 490
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Se me modifica sola el valor de una sesión...

Prova sin las comillas.

$_SESSION
["usuario"]=$usuario;
$_SESSION["contrasena"]=$contrasena;

Ademas estas validando un formulario en el servidor. Es un horror eso. Relee los conceptos de PHP y JS.

Saludos

  #8 (permalink)  
Antiguo 15/02/2007, 05:27
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: Se me modifica sola el valor de una sesión...

Cita:
Iniciado por carlosmbrizuela Ver Mensaje
Ademas estas validando un formulario en el servidor. Es un horror eso. Relee los conceptos de PHP y JS.
Y si no validas en el servidor, sino que lo haces solo en el cliente... que pasa con quienes tienen desactivado el javascript? Por ahi me perdi de algo, si me explicas el "horror" te estare agradecido.

Siempre supe que lo mas seguro era primero validar en el cliente(javascript) y luego en el servidor(php), aunque en este ultimo caso solo se validaran los datos mas importantes.

Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
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 10:35.