Foros del Web » Programando para Internet » PHP »

session_register

Estas en el tema de session_register en el foro de PHP en Foros del Web. Mi cuestion es la siguiente: Tengo una página 1.php con un formulario que envio a otra pafina 2.php donde registro una serie de variables de ...
  #1 (permalink)  
Antiguo 07/10/2004, 10:35
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 257
Antigüedad: 13 años, 5 meses
Puntos: 0
session_register

Mi cuestion es la siguiente:
Tengo una página 1.php con un formulario que envio a otra pafina 2.php donde registro una serie de variables de sesion con session_register(),luego las inicializo con los valores de las variables del formulario de 1.php,tambien registro otras variables de error con session_register() y hago una serie de validaciones.En esta página si se podrujo algun error hago una redireccion a 1.php en la que escribo el valor de las variables de sesion en el formulario.
Y asi hasta que no se podruzca ningun error.
El poblema es que si corrijo una variable en el formulario y dejo otra sin correjir al hacer la redireccion me sigue mostrando el error de la que correji.
Los errores en 1.php los muestro con $_SESSION[].

Aqui os dejo el código espero que me ayuden:
Como era al go extenso los dejo en estos mensajes en el foro.Gracias

1.php-->mensaje 1.php
2.php-->mensaje 2.php
  #2 (permalink)  
Antiguo 07/10/2004, 10:36
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 257
Antigüedad: 13 años, 5 meses
Puntos: 0
1.php

1.php

<?
session_start();
?>
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
if($_GET['status']==1){
?>
<form name="alta_inmobiliaria" method="POST" action="2.php">
<p>nombre_empresa
<input type="text" name="nombre_empresa">
<br>
direccion
<input type="text" name="direccion">
<br>
cif_inmobiliaria
<input type="text" name="cif_inmobiliaria">
<br>
pais
<input type="text" name="pais">
<br>
provincia
<input type="text" name="provincia">
<br>
localidad
<input type="text" name="localidad">
<br>
codigo_postal
<input type="text" name="codigo_postal">
<br>
telefono
<input type="text" name="telefono">
<br>
fax
<input type="text" name="fax">
<br>
email
<input type="text" name="email">
<br>
login
<input type="text" name="login">
<br>
password
<input type="text" name="password">
<br>
confirmpass
<input type="text" name="confirmpass">
</p>
<p>&nbsp;</p>
<p>
<input type="SUBMIT" name="Submit" value="Enviar">
</p>
</form>
<?
}
if($_GET['status']==2){
?>
<form name="alta_inmobiliaria" method="POST" action="2.php">
<p>nombre_empresa
<input type="text" name="nombre_empresa" value="<?echo $s_nombre_empresa?>"><?echo($error_nombre_empresa) ?>
<br>
direccion
<input type="text" name="direccion" value="<?echo $s_direccion?>">
<br>
cif_inmobiliaria
<input type="text" name="cif_inmobiliaria" value="<?echo $s_cif_inmobiliaria?>"><?echo($error_cif_inmobilia ria)?>
<br>
pais
<input type="text" name="pais" value="<?echo $s_pais?>"><?echo($error_pais)?>
<br>
provincia
<input type="text" name="provincia" value="<?echo $s_provincia?>"><?echo($error_provincia)?>
<br>
localidad
<input type="text" name="localidad" value="<?echo $s_localidad?>"><?echo($error_localidad)?>
<br>
codigo_postal
<input type="text" name="codigo_postal" value="<?echo $s_codigo_postal?>"><?echo($error_codigo_postal)?>
<br>
telefono
<input type="text" name="telefono" value="<?echo $s_telefono?>"><?echo($error_telefono)?>
<br>
fax
<input type="text" name="fax" value="<?echo $s_fax?>"><?echo($error_fax)?>
<br>
email
<input type="text" name="email" value="<?echo $s_email?>">
<br>
login
<input type="text" name="login" value="<?echo $s_login?>">
<br>
password
<input type="text" name="password" value="<?echo $s_password?>">
<br>
confirmpass
<input type="text" name="confirmpass" value="<?echo $s_confirmpass?>"><?echo($error_confirmpass)?>
</p>
<p>&nbsp;</p>
<p>
<input type="SUBMIT" name="Submit" value="Enviar">
</p>
</form>
<?
if(!empty($error_nulos)){
?>
<script>
alert('campos vacios');
</script>
<?
}
if(!empty($error_cif_existe)){
?>
<script>
alert('cif existente');
</script>
<?
}
if(!empty($error_login_existe)){
?>
<script>
alert('login y password existentes');
</script>
<?
}


?>

<?
}
?>

</body>
</html>
  #3 (permalink)  
Antiguo 07/10/2004, 10:37
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 257
Antigüedad: 13 años, 5 meses
Puntos: 0
2.php

2.php

<?
session_start();

function contr_alta_inmobiliaria($nombre_empresa,$cif_inmob iliaria,
$pais,$provincia,$localidad,$direccion,$codigo_pos tal,$telefono,$fax,$email,$login,
$password,$confirmpass){

session_register("s_nombre_empresa","s_cif_inmobil iaria",
"s_pais","s_provincia","s_localidad","s_direccion" ,"s_codigo_postal",
"s_telefono","s_fax","s_email","s_login","s_passwo rd","s_confirmpass");
//VARIABLES DE ERROR
session_register("error_nombre_empresa","error_cif _inmobiliaria",
"error_pais","error_provincia","error_localidad"," error_codigo_postal","error_telefono",
"error_fax","error_confirmpass","error_cif_existe" ,"error_login_existe");

$_SESSION["s_nombre_empresa"]=$nombre_empresa;
$_SESSION["s_cif_inmobiliaria"]=$cif_inmobiliaria;
$_SESSION["s_pais"]=$pais;
$_SESSION["s_provincia"]=$provincia;
$_SESSION["s_localidad"]=$localidad;
$_SESSION["s_direccion"]=$direccion;
$_SESSION["s_codigo_postal"]=$codigo_postal;
$_SESSION["s_telefono"]=$telefono;
$_SESSION["s_fax"]=$fax;
$_SESSION["s_email"]=$email;
$_SESSION["s_login"]=$login;
$_SESSION["s_password"]=$password;
$_SESSION["s_confirmpass"]=$confirmpass;

$error=false;

if(empty($nombre_empresa)||empty($cif_inmobiliaria )||
empty($pais)||empty($provincia)||empty($localidad) ||empty($direccion)||
empty($codigo_postal)||empty($telefono)||empty($lo gin)||empty($password)||
empty($confirmpass)){
session_register("error_nulos");
$nulos=("Debe de cubrir todos los campos obligatorios.");
$_SESSION["error_nulos"]=$nulos;
?>
<script>
location.href="1.php?status=2";
</script>
<?
}

session_unregister("error_nulos");

$validacion=new validacion();

if(!$validacion->validar_Nombre($nombre_empresa)){
$_SESSION["error_nombre_empresa"]=("Nombre Empresa incorrecto.Sólo debe constar de caracteres alfabéticos.");
$error=true;
}
if(!$validacion->validar_Dni($cif_inmobiliaria)){
$_SESSION["error_cif_inmobiliaria"]=("Número de CIF incorrecto.");
$error=true;
}
if(!$validacion->validar_Nombre($pais)){
$_SESSION["error_pais"]=("Pais incorrecto.Sólo debe constar de caracteres alfabéticos.");
$error=true;
}
if(!$validacion->validar_Nombre($provincia)){
$_SESSION["error_provincia"]=("Provincia incorrecta.Sólo debe constar de caracteres alfabéticos.");
$error=true;
}
if(!$validacion->validar_Nombre($localidad)){
$_SESSION["error_localidad"]=("Localidad incorrecta.Sólo debe constar de caracteres alfabéticos.");
$error=true;
}
if(!$validacion->validar_CP($codigo_postal)){
$_SESSION["error_codigo_postal"]=("Código Postal incorecto.");
$error=true;
}
if(!$validacion->validar_Telefono($telefono)){
$_SESSION["error_telefono"]=("Número de Teléfono incorrecto.");
$error=true;
}
if(!$validacion->validar_Telefono($fax)){
$_SESSION["error_fax"]=("Número de Fax incorrecto.");
$error=true;
}
if($password!=$confirmpass){
$_SESSION["error_confirmpass"]=("El Password y su confirmación no coinciden.");
$error=true;
}
if($error){
?>
<script>
location.href="1.php?status=2";
</script>
<?
}

$bd=new base_datos();
$bd->bd_Conectar();

if($bd->bd_existe_inmobiliaria($cif_inmobiliaria) == 1){
$_SESSION["error_cif_existe"]=("Ya existe una inmobiliaria registrada con ese Cif.");
$bd->bd_Desconectar();
?>
<script>
location.href="1.php?status=2";
</script>
<?
}
if($bd->bd_existe_login($login,$password)){
$_SESSION["error_login_existe"]=("Ya existe una inmobiliaria con ese login y password.Modifíquelos por favor.");
$bd->bd_Desconectar();
?>
<script>
location.href="1.php?status=2";
</script>
<?
}

session_unregister("error_nombre_empresa","error_c if_inmobiliaria",
"error_pais","error_provincia","error_localidad"," error_codigo_postal","error_telefono",
"error_fax","error_confirmpass","error_cif_existe" ,"error_login_existe");

$inmobiliaria=new inmobiliaria();
$inmobiliaria->alta_inmobiliaria($nombre_empresa,$nombre_encarga do,$cif_inmobiliaria,$pais,$provincia,
$localidad,$direccion,$codigo_postal,$telefono,$fa x,$email,$login,$password);

if($bd->bd_alta_inmobiliaria($inmobiliaria)){
$mensaje=("Inmobiliaria registrada correctamente.");
session_register("mensaje");
$_SESSION["mensaje"]=$mensaje;
$bd->bd_Desconectar();
?>
<script>
location.href="3.php";
</script>
<?
}else{
$mensaje=("La Inmobiliaria no se pudo registrar correctamente.Intentelo de nuevo.");
session_register("mensaje");
$_SESSION["mensaje"]=$mensaje;
$bd->bd_Desconectar();
?>
<script>
location.href="3.php";
</script>
<?
}
}

contr_alta_inmobiliaria($nombre_empresa,$cif_inmob iliaria,
$pais,$provincia,$localidad,$direccion,$codigo_pos tal,$telefono,$fax,$email,$login,
$password,$confirmpass);
?>
  #4 (permalink)  
Antiguo 07/10/2004, 10:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Realmente no sé por qué usas dos mensajes para poner cierto código .. puedes hacerlo en tu mismo mensaje tan sólo respondiendo al original tantas veces como requieras.

A todo esto parece que se te olvidó la "pregunta" o el fin de ese código además de un título de mensaje un poco más coherente a lo que trata el mensaje ..

Bueno, ya "encontré" tus mensajes y los uní todos .. Recuerda también que tienes el botón "PHP" para colocar el código que pongas y este salga coloreado para mejor lectura ....

Un saludo,

Última edición por Cluster; 07/10/2004 a las 10:59
  #5 (permalink)  
Antiguo 07/10/2004, 11:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si usas $_SESSION .. NOOOOO deberías usar session_register() .. ambos métodos son incompatibles ... o usas uno u otro.

También debes acceder a tus variables de sesión SIEMPRE! por los arrays superglobales: $_SESSION en todo script (en tu formulario 1.php haces accesos como "globales" a las variables de sesión).

Por lo demás .. lo que parece que te falta es borrar tu variable de sesión en el formulario al terminar este (el script).

unset($_SESSION['error_xxx']);

Así con todas las variables que validas en tu formulario que són de sesión.

Otro detalle, los redireccionamientos deberías hacerlos por PHP con cabeceras HTTP:
Código PHP:
header("Location: pagina.php?variable=si_son_necesarias");
exit; 
También si te das cuenta .. ya usas sesiones para propagar algunas variables .. ¿por qué no lo usas para todo? (incluida esas variables que propagas por el URL)

Un saludo,
  #6 (permalink)  
Antiguo 08/10/2004, 09:11
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 257
Antigüedad: 13 años, 5 meses
Puntos: 0
Aqui estan las modificaciones hechas pero sigue sin darme resultado.
  #7 (permalink)  
Antiguo 08/10/2004, 09:21
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 257
Antigüedad: 13 años, 5 meses
Puntos: 0
1.php
Código PHP:
<?
session_start
();
?>
Código HTML:
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?
if($_GET['status']==1){
?>
<form name="alta_inmobiliaria" method="POST" action="2.php">
<p>nombre_empresa
 <input type="text" name="nombre_empresa">
 <br>
direccion
<input type="text" name="direccion">
<br>
 cif_inmobiliaria
 <input type="text" name="cif_inmobiliaria">
 <br>
pais
 <input type="text" name="pais">
 <br>
provincia
 <input type="text" name="provincia">
 <br>
localidad
 <input type="text" name="localidad">
 <br>
codigo_postal
 <input type="text" name="codigo_postal">
 <br>
telefono
 <input type="text" name="telefono">
 <br>
fax
 <input type="text" name="fax">
 <br>
email
 <input type="text" name="email">
 <br>
login
 <input type="text" name="login">
 <br>
password
 <input type="text" name="password">
 <br>
confirmpass
 <input type="text" name="confirmpass">
</p>
  <p>&nbsp;</p>
  <p>
  <input type="SUBMIT" name="Submit" value="Enviar">
</p>
</form>
<?
}
if($_GET['status']==2){
?>
<form name="alta_inmobiliaria" method="POST" action="2.php">
<p>nombre_empresa
 <input type="text" name="nombre_empresa" value="<?echo $_SESSION['s_nombre_empresa']?>"><?echo($_SESSION['error_nombre_empresa'])?>
 <br>
direccion
<input type="text" name="direccion" value="<?echo $_SESSION['s_direccion']?>">
<br>
 cif_inmobiliaria
 <input type="text" name="cif_inmobiliaria" value="<?echo $_SESSION['s_cif_inmobiliaria']?>"><?echo($_SESSION['error_cif_inmobiliaria'])?>
 <br>
pais
 <input type="text" name="pais" value="<?echo $_SESSION['s_pais']?>"><?echo($_SESSION['error_pais'])?>
 <br>
provincia
 <input type="text" name="provincia" value="<?echo $_SESSION['s_provincia']?>"><?echo($_SESSION['error_provincia'])?>
 <br>
localidad
 <input type="text" name="localidad" value="<?echo $_SESSION['s_localidad']?>"><?echo($_SESSION['error_localidad'])?>
 <br>
codigo_postal
 <input type="text" name="codigo_postal" value="<?echo $_SESSION['s_codigo_postal']?>"><?echo($_SESSION['error_codigo_postal'])?>
 <br>
telefono
 <input type="text" name="telefono" value="<?echo $_SESSION['s_telefono']?>"><?echo($_SESSION['error_telefono'])?>
 <br>
fax
 <input type="text" name="fax" value="<?echo $_SESSION['s_fax']?>"><?echo($_SESSION['error_fax'])?>
 <br>
email
 <input type="text" name="email" value="<?echo $_SESSION['s_email']?>">
 <br>
login
 <input type="text" name="login" value="<?echo $_SESSION['s_login']?>">
 <br>
password
 <input type="text" name="password" value="<?echo $_SESSION['s_password']?>">
 <br>
confirmpass
 <input type="text" name="confirmpass" value="<?echo $_SESSION['s_confirmpass']?>"><?echo($_SESSION['error_confirmpass'])?>
</p>
  <p>&nbsp;</p>
  <p>
    <input type="SUBMIT" name="Submit" value="Enviar">
</p>
</form>
<?

unset($_SESSION["error_nombre_empresa"],$_SESSION["error_cif_inmobiliaria"],$_SESSION["error_pais"],
$_SESSION["error_provincia"],$_SESSION["error_localidad"],$_SESSION["error_codigo_postal"],
$_SESSION["error_telefono"],$_SESSION["error_fax"],$_SESSION["error_confirmpass"]);

if($_SESSION["error_nulos"]!=""){
	?>
	<script>
	alert('campos vacios');
	</script>
	<?
}
if($_SESSION["error_cif_existe"]!=""){
	?>
	<script>
	alert('cif existente');
	</script>
	<?
}
if($_SESSION["error_login_existe"]!=""){
	?>
	<script>
	alert('login y password existentes');
	</script>
	<?
}


?>

<?
}
?>

</body>
</html> 

Última edición por bananas; 08/10/2004 a las 09:22
  #8 (permalink)  
Antiguo 08/10/2004, 09:26
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 257
Antigüedad: 13 años, 5 meses
Puntos: 0
2.php
Código PHP:
<?
session_start
();

function 
contr_alta_inmobiliaria($nombre_empresa,$cif_inmobiliaria,
        
$pais,$provincia,$localidad,$direccion,$codigo_postal,$telefono,$fax,$email,$login,
        
$password,$confirmpass){

                
$_SESSION["s_nombre_empresa"]=$nombre_empresa;
                
$_SESSION["s_cif_inmobiliaria"]=$cif_inmobiliaria;
                
$_SESSION["s_pais"]=$pais;
                
$_SESSION["s_provincia"]=$provincia;
                
$_SESSION["s_localidad"]=$localidad;
                
$_SESSION["s_direccion"]=$direccion;
                
$_SESSION["s_codigo_postal"]=$codigo_postal;
                
$_SESSION["s_telefono"]=$telefono;
                
$_SESSION["s_fax"]=$fax;
                
$_SESSION["s_email"]=$email;
                
$_SESSION["s_login"]=$login;
                
$_SESSION["s_password"]=$password;
                
$_SESSION["s_confirmpass"]=$confirmpass;
                
                
$error=false;
                
                
$_SESSION["error_nombre_empresa"]="";
                
$_SESSION["error_cif_inmobiliaria"]="";
                
$_SESSION["error_pais"]="";
                
$_SESSION["error_provincia"]="";
                
$_SESSION["error_localidad"]="";
                
$_SESSION["error_codigo_postal"]="";
                
$_SESSION["error_telefono"]="";
                
$_SESSION["error_fax"]="";
                
$_SESSION["error_confirmpass"]="";
                
$_SESSION["error_cif_existe"]="";
                
$_SESSION["error_login_existe"]="";
                
$_SESSION["error_nulos"]="";
                
                if(empty(
$nombre_empresa)||empty($cif_inmobiliaria)||
                empty(
$pais)||empty($provincia)||empty($localidad)||empty($direccion)||
                empty(
$codigo_postal)||empty($telefono)||empty($login)||empty($password)||
                empty(
$confirmpass)){
                        
$nulos=("Debe de cubrir todos los campos obligatorios.");
                        
$_SESSION["error_nulos"]=$nulos;
                        
?>
                        <script>
                        location.href="1.php?status=2";
                        </script>
                        <?
                
}
                
                unset(
$_SESSION["error_nulos"]);
                
                
$validacion=new validacion();

                if(!
$validacion->validar_Nombre($nombre_empresa)){
                        
$_SESSION["error_nombre_empresa"]=("Nombre Empresa incorrecto.Sólo debe constar de caracteres alfabéticos.");
                        
$error=true;
                }
                if(!
$validacion->validar_Dni($cif_inmobiliaria)){
                        
$_SESSION["error_cif_inmobiliaria"]=("Número de CIF incorrecto.");
                        
$error=true;
                }
                if(!
$validacion->validar_Nombre($pais)){
                        
$_SESSION["error_pais"]=("Pais incorrecto.Sólo debe constar de caracteres alfabéticos.");
                        
$error=true;
                }
                if(!
$validacion->validar_Nombre($provincia)){
                        
$_SESSION["error_provincia"]=("Provincia incorrecta.Sólo debe constar de caracteres alfabéticos.");
                        
$error=true;
                }
                if(!
$validacion->validar_Nombre($localidad)){
                        
$_SESSION["error_localidad"]=("Localidad incorrecta.Sólo debe constar de caracteres alfabéticos.");
                        
$error=true;
                }
                if(!
$validacion->validar_CP($codigo_postal)){
                        
$_SESSION["error_codigo_postal"]=("Código Postal incorecto.");
                        
$error=true;
                }
                if(!
$validacion->validar_Telefono($telefono)){
                        
$_SESSION["error_telefono"]=("Número de Teléfono incorrecto.");
                        
$error=true;
                }
                if(!
$validacion->validar_Telefono($fax)){
                        
$_SESSION["error_fax"]=("Número de Fax incorrecto.");
                        
$error=true;
                }
                if(
$password!=$confirmpass){
                        
$_SESSION["error_confirmpass"]=("El Password y su confirmación no coinciden.");
                        
$error=true;
                }
                if(
$error){
                        
?>
                        <script>
                        location.href="1.php?status=2";
                        </script>
                        <?
                
}
                
                
$bd=new base_datos();
                
$bd->bd_Conectar();

                if(
$bd->bd_existe_inmobiliaria($cif_inmobiliaria) == 1){
                   
$_SESSION["error_cif_existe"]=("Ya existe una inmobiliaria registrada con ese Cif.");
                   
$bd->bd_Desconectar();
                   
?>
                   <script>
                   location.href="1.php?status=2";
                   </script>
                   <?
                
}
                if(
$bd->bd_existe_login($login,$password)){
                    
$_SESSION["error_login_existe"]=("Ya existe una inmobiliaria con ese login y password.Modifíquelos por favor.");
                    
$bd->bd_Desconectar();
                    
?>
                    <script>
                    location.href="1.php?status=2";
                    </script>
                    <?
                
}
                unset(
$_SESSION['error_login_existe'],$_SESSION['error_cif_existe']);
                
                
$inmobiliaria=new inmobiliaria();
                
$inmobiliaria->alta_inmobiliaria($nombre_empresa,$nombre_encargado,$cif_inmobiliaria,$pais,$provincia,
                
$localidad,$direccion,$codigo_postal,$telefono,$fax,$email,$login,$password);

                if(
$bd->bd_alta_inmobiliaria($inmobiliaria)){
                    
$mensaje=("Inmobiliaria registrada correctamente.");
                    
$_SESSION["mensaje"]=$mensaje;
                    
$bd->bd_Desconectar();
                    
?>
                    <script>
                    location.href="3.php";
                    </script>
                    <?
                    
}else{
                        
$mensaje=("La Inmobiliaria no se pudo registrar correctamente.Intentelo de nuevo.");
                        
$_SESSION["mensaje"]=$mensaje;
                        
$bd->bd_Desconectar();
                        
?>
                        <script>
                        location.href="3.php";
                        </script>
                        <?
                        
}
        }

contr_alta_inmobiliaria($nombre_empresa,$cif_inmobiliaria,
        
$pais,$provincia,$localidad,$direccion,$codigo_postal,$telefono,$fax,$email,$login,
        
$password,$confirmpass);
?>

Última edición por bananas; 08/10/2004 a las 09:29
  #9 (permalink)  
Antiguo 08/10/2004, 10:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero que cual es el problema exacto que tienes?

A simple vista se vé que en 1.php .. haces un unset() de ciertas variables de sesión y luego pretendes usarlas (a continuación en una série de condicionales IF()) .. Debes hacerlo al reves o mejor dicho .. al final de todo tu proceso y uso de esas variables .. ahí aplicas tu unset() para deshacerte de esas variables de sesión ..

Otros detalles:
En lugar de:
Código PHP:
if($_SESSION["error_login_existe"]!=""){ 
deberías usar:
Código PHP:
if(empty($_SESSION["error_login_existe"])){ 
En 2.php
Deberías redireccionar NO usando javascript sino PHP con cabeceras HTTP:
En lugar de:
Código PHP:
?> 
                   <script> 
                   location.href="1.php?status=2"; 
                   </script> 
                   <?
Usar:
Código PHP:
header ("location: 1.php?status=2");
exit; 
A su vez .. recuerda que ya usas variabels de sesión . .así que no tiene mucho sentido usar esa variable de "status" que propagas en el URL cuando puedes llevarla también por la sesión o bien basarte en la existencia de algunas de esas variables de "error" que van en tu sesión para decidir que hay error en tu 1.php. Por ejemplo tienes ya esa variable "error_nulos" para tal fin ..

Es decir . .que tienes varias variables "redundantes" que puedes omitirlas y usar otras de las que ya tienes.

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

En tu 2.php usas una función a la cual le pasas unos parámetros .. pero si 2.php es la que recibe los datos de tu formulario .. esos parámetros tendrían que ser los $_POST['nombre_variable_formulario'] que corresponda y no asumirlos como globales usando $nombre_variable_formulario simplemente ...

---------------------------
Esos parentesis en:

$_SESSION['nombre_variable']=("blablab");

sobran o puedes prescindir de ellos.

Un saludo,
  #10 (permalink)  
Antiguo 08/10/2004, 10:27
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 257
Antigüedad: 13 años, 5 meses
Puntos: 0
Hago $_SESSION['variable_xxx'] para guardar los datos de 1.php y cada vez que llamo a 2.php se me actualicen esos datos con los nuevos.

Hago $_SESSION['error_xxx'] para saber el error que se ha producido y mostrarlo en 1.php porque hay diferentes tipos de error.

Hare lo del status tambien con $_SESSION['status'].

Hare lo del paso de parametros con el $_POST[] pero creo que el fallo no es de eso porque los datos me llegan bien y no tengo problema con $_SESSION['variable_xxx'] y si con $_SESSION['error_xxx'].

El problema exacto es:
  1. Relleno 1.php y envio los datos a 2.php.
  2. Si se produce algun error guardo ese error en una variable de sesion x y luego vuelvo a 1.php con status=2.
  3. En 1.php con status=2 muestro el formulario con los valores que habia ingresado anteriormente(por eso utilizo $_SESSION['variable_xxx'] en los values) y el error producido al lado del campo imput(por eso utilizo $_SESSION['error_xxx']).
  4. Modifico uno de los campos que tenia un error,lo pongo bien,dejo otros campos con errores y envio 1.php a 2.php.
  5. Valido los datos y etc...redirecciono a 1.php
  6. Pues me sigue escribiendo el mensaje de error del campo que correji.Por que????

Lo voy a hacer:
Código PHP:
if(empty($_SESSION["error_login_existe"])){ 
Lo del header lo puedo hacer porque no hay ninguna salida al navegador antes verdad??
Código PHP:
header ("location: 1.php?status=2"); 
exit; 

Última edición por bananas; 08/10/2004 a las 10:38
  #11 (permalink)  
Antiguo 08/10/2004, 10:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Lo del header lo puedo hacer porque no hay ninguna salida al navegador antes verdad??
Así es.

Cita:
Hare lo del paso de parametros con el $_POST[] pero creo que el fallo no es de eso porque los datos me llegan bien y no tengo problema con $_SESSION['variable_xxx'] y si con $_SESSION['error_xxx'].
Te comenté que hacías esto:

Código PHP:
unset($_SESSION["error_nombre_empresa"],$_SESSION["error_cif_inmobiliaria"],$_SESSION["error_pais"],
$_SESSION["error_provincia"],$_SESSION["error_localidad"],$_SESSION["error_codigo_postal"],
$_SESSION["error_telefono"],$_SESSION["error_fax"],$_SESSION["error_confirmpass"]);

if($_SESSION["error_nulos"]!=""){
    ?>
    <script>
    alert('campos vacios');
    </script>
    <?
}
y que ese unset() debería estar bajo ese IF() donde miras el valor de una variable de sesión .. Con el unset() "eliminas" esa variable .. así que primero tendrás que usarla y luego borrarla si no la quieres usar más .. pero no al reves.

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 06:10.