Foros del Web » Programando para Internet » PHP »

Estoy desesperado no sé como se me cambia el valor de una sesión o no la carga bien..

Estas en el tema de Estoy desesperado no sé como se me cambia el valor de una sesión o no la carga bien.. en el foro de PHP en Foros del Web. Hola antes que nada desde ya doy las gracias a los que intenten ayudarme..., no doy con el problema.., al cuestión es que tengo un ...
  #1 (permalink)  
Antiguo 15/02/2007, 15:35
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Estoy desesperado no sé como se me cambia el valor de una sesión o no la carga bien..

Hola antes que nada desde ya doy las gracias a los que intenten ayudarme..., no doy con el problema.., al cuestión es que tengo un formulario para modificar los datos de usuario, que si lo rellenas bien, se realiza el UPDATE, sin problemas, el error viene cuando no validas bien el formulario (rellenas algún campo mal o no lo rellenas) en teoría realiza bien la validación y te devuelve el error, pero no sé porque me cambia el valor de las variables del formulario que se cargan de las variables de sesión..., en teoría no debería ser así pues la actualización de las variables de sesión la tengo en el supuesto caso que se valide bien todo el formulario y una vez realizados los UPTDATES, pero no sé porque me la hace, en fin no me enrollo más a continuación pego el code del formulario y del script que hace la validación y el UPDATE.

FORMULARIO

Código PHP:
<? include("seguridad.php"); ?>
<? 
include("conexion.php"); ?>
<?
$usuario
=$_SESSION['usuario'];
$contrasena=$_SESSION['contrasena'];
$domicilio=$_SESSION['domicilio'];
$cp=$_SESSION['cp'];
$localidad=$_SESSION['localidad'];
$provincia=$_SESSION['provincia'];
$centro=$_SESSION['centro'];
$telefono=$_SESSION['telefono'];
$correo=$_SESSION['correo'];
$nombre=$_SESSION['nombre'];
$apellidos=$_SESSION['apellidos'];
?>
Código HTML:
                                          <TABLE width="550" border="0" cellpadding="0" bgcolor="#efefef" align="center" class="textonormaltablas">
                            <!--DWLayoutTable-->
                            <TR> 
                              <TD></TD>
                              <TD colspan="2" align="center" class="textoavisos"><? echo $array_mensajegeneral[$indice_mensajegeneral]; ?> 
                                <INPUT name="usuario_actual" type="hidden" id="usuario_actual" value="<? echo $usuario; ?>"> 
                                <INPUT name="contrasena_actual" type="hidden" id="contrasena_actual" value="<? echo $contrasena; ?>"> 
                                <INPUT name="correo_actual" type="hidden" id="correo_actual" value="<? echo $correo; ?>"></TD>
                              <TD></TD>
                            </TR>
                            <TR> 
                              <TD width="10" height="24"></TD>
                              <TD width="200" align="right" valign="middle" class="titularcuarto"> 
                                * Nombre: </TD>
                              <TD> <INPUT name="nombre" type="text" id="nombre" size="20" maxlength="40" class="cajabuscador" value="<? echo $nombre; ?>"> 
                              </TD>
                              <TD width="10"></TD>
                            </TR>
                            <TR> 
                              <TD height="24"></TD>
                              <TD align="right" valign="middle" class="titularcuarto"> 
                                * Apellidos:</TD>
                              <TD> <INPUT name="apellidos" type="text" id="apellidos" size="30" maxlength="100" class="cajabuscador" value="<? echo $apellidos; ?>"> 
                              </TD>
                              <TD></TD>
                            </TR>
                            <TR> 
                              <TD height="24"></TD>
                              <TD align="right" valign="middle" class="titularcuarto"> 
                                Domicilio: </TD>
                              <TD><INPUT name="domicilio" type="text" class="cajabuscador" id="domicilio" size="40" maxlength="100" value="<? echo $domicilio; ?>"></TD>
                              <TD></TD>
                            </TR>
                            <TR> 
                              <TD></TD>
                              <TD colspan="2" align="center" class="textoavisos"><? echo $array_mensajecp[$indice_mensajecp]; ?></TD>
                              <TD></TD>
                            </TR>
                            <TR> 
                              <TD></TD>
                              <TD align="right" valign="middle" class="titularcuarto"> 
                                C&oacute;digo Postal: </TD>
                              <TD><INPUT name="cp" type="text" class="cajabuscador" id="cp" size="40" maxlength="100" value="<? echo $cp; ?>"></TD>
                              <TD></TD>
                            </TR>
                            <TR> 
                              <TD height="24"></TD>
                              <TD align="right" valign="middle" class="titularcuarto"> 
                                Localidad: </TD>
                              <TD><INPUT name="localidad" type="text" class="cajabuscador" id="localidad" size="40" maxlength="100" value="<? echo $localidad; ?>"></TD>
                              <TD></TD>
                            </TR>
                            <TR> 
                              <TD height="24"></TD>
                              <TD align="right" valign="middle" class="titularcuarto"> 
                                Provincia: </TD>
                              <TD><INPUT name="provincia" type="text" class="cajabuscador" id="provincia" size="40" maxlength="100" value="<? echo $provincia; ?>"></TD>
                              <TD></TD>
                            </TR>
                            <TR> 
                              <TD height="24"></TD>
                              <TD align="right" valign="middle" class="titularcuarto"> 
                                Centro de Trabajo: </TD>
                              <TD><INPUT name="centro" type="text" class="cajabuscador" id="centro" value="<? echo $centro; ?>" size="40" maxlength="100"></TD>
                              <TD></TD>
                            </TR>
                            <TR> 
                              <TD></TD>
                              <TD colspan="2" align="center" class="textoavisos"><? echo $array_mensajetelefono[$indice_mensajetelefono]; ?></TD>
                              <TD></TD>
                            </TR>
                            <TR> 
                              <TD height="24"></TD>
                              <TD align="right" valign="middle" class="titularcuarto"> 
                                Telefono: </TD>
                              <TD><INPUT name="telefono" type="text" class="cajabuscador" id="telefono" value="<? echo $telefono; ?>" size="40" maxlength="100"></TD>
                              <TD></TD>
                            </TR>
                            <TR> 
                              <TD></TD> 
etc....


SCRIP PHP smodificar_registro.php

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($usuario)&&!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");
}

etc....

Gracias. Un saludo.
  #2 (permalink)  
Antiguo 15/02/2007, 15:43
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: Estoy desesperado no sé como se me cambia el valor de una sesión o no la carga bi

en teoria no deberia pasar nada mir epor encima tu codigo
solo te puedo recomendar algo

elimina el session_start(); de el comienzo y colocalo aqui :

mysql_query($sql, $conexion) or die("error en la consulta $sql ".mysql_error());
// modifico el valor de las sesiones referentes al usuario
session_start();
$_SESSION["usuario"]="$usuario";

suena un poco estupido pero hazlo y comentas si te sirvio de algo
  #3 (permalink)  
Antiguo 15/02/2007, 15:48
Avatar de locojars  
Fecha de Ingreso: mayo-2002
Mensajes: 265
Antigüedad: 22 años
Puntos: 4
Re: Estoy desesperado no sé como se me cambia el valor de una sesión o no la carga bi

Y porque no haces mejor las validaciones primero en JavaScript en tu formulario, para que de esta forma cuando proceses tu formulario ya sabras que los valores que recibes son los correctos.

Mi humilde opinión.
Salu2
Jars
  #4 (permalink)  
Antiguo 15/02/2007, 16:54
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: Estoy desesperado no sé como se me cambia el valor de una sesión o no la carga bi

Gracias dopon, , parece que he conseguido que funcione con la idea que tu me diste de quitar el session_start(); del inicio y ponerlo después de la validación, más 1 ultimo select para crear las nuevas sesiones, tal que así

Código PHP:
<?
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($usuario)&&!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());
// una vez actualizaos las 2 tablas y creamos las sesiones de usuario nuevas
$sql="SELECT * FROM $tabla WHERE usuario='$usuario' AND contrasena='$contrasena'";
$resultado=mysql_query($sql$conexion) or die ("Error en la consulta, MySQL dice: ".mysql_error());
if(
$encontrados=mysql_fetch_array($resultado)){
session_start();
$_SESSION["autenticado"]="si";
$_SESSION["usuario"]="{$encontrados['usuario']}";
$_SESSION["contrasena"]="{$encontrados['contrasena']}";
$_SESSION["domicilio"]="{$encontrados['domicilio']}";
$_SESSION["cp"]="{$encontrados['cp']}";
$_SESSION["localidad"]="{$encontrados['localidad']}";
$_SESSION["provincia"]="{$encontrados['provincia']}";
$_SESSION["centro"]="{$encontrados['centro']}";
$_SESSION["telefono"]="{$encontrados['telefono']}";
$_SESSION["correo"]="{$encontrados['correo']}";
$_SESSION["nombre"]="{$encontrados['nombre']}";
$_SESSION["apellidos"]="{$encontrados['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_free_result($resultado);
mysql_close($conexion);
?>
lo que no me explico muy bien es porque funciona..., si quito el session_start(); del inicio no se deberían dejar de propagar las sesiones y por lo tanto perderlas??? y si se pierden como consiguo después que el formulario las cargue de nuevo cuando al validar da error y el script redirecciona de nuevo al formulario?? podrías explicarmelo por favor.

Un saludo. GRACIAS.
  #5 (permalink)  
Antiguo 15/02/2007, 16:56
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: Estoy desesperado no sé como se me cambia el valor de una sesión o no la carga bi

Un placer ayudarte cualquier duda preguntas en el foro o a mi msn ;) es raro pero fue lo unico que me parecio logico
  #6 (permalink)  
Antiguo 15/02/2007, 17:13
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: Estoy desesperado no sé como se me cambia el valor de una sesión o no la carga bi

Alguien sabe como me puede funcionar el script con la solución que me ha dado dopon de poner el session_start(); más abajo.., teniedo además en el servidor el sesion autostart desactivado..., la verdad no me lo explico.

Un saludo.
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 04:27.