Foros del Web » Programando para Internet » PHP »

Sessiones

Estas en el tema de Sessiones en el foro de PHP en Foros del Web. Hola, Estoy experimentando un problema con las sessiones. Supongamos que yo tengo un formulario y cada vez que no completas algo o lo completas mal, ...
  #1 (permalink)  
Antiguo 10/02/2011, 12:32
 
Fecha de Ingreso: diciembre-2010
Mensajes: 29
Antigüedad: 13 años, 4 meses
Puntos: 0
Sessiones

Hola,

Estoy experimentando un problema con las sessiones.

Supongamos que yo tengo un formulario y cada vez que no completas algo o lo completas mal, te va sumando errores a una variable...

Entonces tengo que si errores es mayor a 0 mande una cosa, y si errores es igual a 0 mande otra. Pero el problema es que hace las dos cosas. Miren.


Les voy a dejar algo similar, porque el codigo es muy largo.

Código PHP:
<?php
    $errores 
5;
    if(
$errores == 0) { $_SESSION["registro.correcto"] = 1; }
    else if(
$errores 0) { echo("Tienes errores."); }
    if(
$_SESSION['registro.correcto'] == 1)    { echo("Registrado Correcto."); }
    else { echo(
"Registrarse."); }
?>
Pero lo que hace ese codigo es:

Tiene errores.
Registrado.

Es decir, que registra que tiene el error y también hace lo de la session... Osea, se cumplen ambas cosas.


Muchas gracias al que me pueda ayudar.
  #2 (permalink)  
Antiguo 10/02/2011, 12:50
Avatar de LanbreGroteo  
Fecha de Ingreso: agosto-2009
Ubicación: $Mx->['Veracruz']
Mensajes: 69
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Sessiones

Traté de re-acomodar tu código...
Prueba algo como eso y si no, pon tu código HTML para ver más o menos que es lo que hace el formulario y probarlo en localhost a ver si te puedo ayudar mejor

Código PHP:
Ver original
  1. <?php
  2.     $errores = 5;
  3.    
  4.     if($errores == 0) {
  5.         $_SESSION["registro.correcto"] = 1;
  6.         if($_SESSION['registro.correcto'] == 1) {
  7.             echo "Registrado";
  8.         }
  9.     }
  10.     elseif($errores > 0) {
  11.         echo ("Tienes errores.");
  12.     }
  13.     else {
  14.         echo("Registrarse.");
  15.     }
  16. ?>

¡Saludos!
  #3 (permalink)  
Antiguo 10/02/2011, 13:05
 
Fecha de Ingreso: diciembre-2010
Mensajes: 29
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Sessiones

No, no me funcionó, me sucede lo mismo.

Lo que necesito mira es que si: "$_SESSION["registro.correcto"] = 1;" se comprueba, cargue una cosa, si no (else if) se carge otra. A la vez, en ese else if, que compruebe los errores y si tiene que cargue una y si no otra cosa.

Si quiere te envío el código por MP ya que son 500 lineas y deformaría mucho el foro para abajo. El problema que siempre me detecta esa sessión esté o no creada.
  #4 (permalink)  
Antiguo 10/02/2011, 13:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sessiones

a ver, hay que observar bien...
Código PHP:
$errores 5;
if(
$errores == 0// ... 
¿nadie nota algo raro aquí?

es obvio que jamás se va a ejecutar dicha condición, pues inicializas dicha variable con el mismo valor siempre... ¿como es que quieres que algo cambie si tu variable ni siquiera es dinámica?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 10/02/2011, 13:15
 
Fecha de Ingreso: diciembre-2010
Mensajes: 29
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Sessiones

No te comprendí.
  #6 (permalink)  
Antiguo 10/02/2011, 13:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sessiones

Cita:
Iniciado por julian_aguero Ver Mensaje
No te comprendí.


he ahí el dilema... si no entiendes ni lo que hace tu código, ¿porque lo has hecho así?

a simple vista $errores siempre va atener un valor de 5, ¿y como esperas que dicho valor cambie?

según el flujo de tu script eso nunca va a pasar, así que por lógica hasta ahí llegamos... ¿vas?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 10/02/2011, 13:35
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Sessiones

else if($errores > 0) { echo("Tienes errores."); $_SESSION["registro.correcto"]=0; }
  #8 (permalink)  
Antiguo 10/02/2011, 13:37
 
Fecha de Ingreso: diciembre-2010
Mensajes: 29
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Sessiones

Es que no será siempre 5, yo lo puse así para no poner el codigo de 500 lineas, como expliqué antes es un ejemplo de lo que hace el codigo original...

Mirá, por ejemplo:

Código PHP:
if($_POST['nombre'] == "")
{
    echo(
"<div class='texto-cuerpo' style='color:#CC3300; width:400;'> Deb&eacute;s indicar el nombre de tu personaje.</div>");
    
$errores++;
}
else if((
strlen($_POST['nombre']) < 3))
{
    echo(
"<div class='texto-cuerpo' style='color:#CC3300; width:400;'> Debe tener por lo menos tres caracteres.</div>");                    
}
else if(
is_numeric($_POST['nombre']))                    
{
    echo(
"<div class='texto-cuerpo' style='color:#CC3300; width:400;'> Deben ser solo letras.</div>");                    
    
$errores++;                                
}
else if(
file_exists("Usuarios/" $_POST['nombre'] . "_" $_POST['apellido'] . ".ini"))
{
    echo(
"<div class='texto-cuerpo' style='color:#CC3300; width:400;'> Este nick ya est&aacute; en uso.</div>");
    
$errores++;

Un ejemplo nomás. Y así hay 15 campos que puede haber más de 4 errores por campo en el formulario.
  #9 (permalink)  
Antiguo 11/02/2011, 01:11
 
Fecha de Ingreso: diciembre-2010
Mensajes: 29
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Sessiones

Solucionado.

Etiquetas: sesiones
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 08:14.