Autor Tema: $_SESSION no me toma los valores asignados en codigo session_start PHP ejemplo  (Leído 5624 veces)

simchgab

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 16
    • Ver Perfil
Bueno, ese es el problema, la idea es que quise usar la variable $_SESSION para almacenar un par de códigos de error, y así usarlos para otras cosas en la misma página. La cosa es que no me toma los valores de esos errores, si lo asigno, más arriba del código sí me deja, alguna idea?

Código: [Seleccionar]
<?php    session_start (); //Inicio la sesion para el usuariorequire_once 'funcionesphp/validaciones.php'; //Importo la libreria de funciones de validaciones?>

<!doctype html>
<html>
<head>
        <meta charset="utf-8"/>
        <meta lang="es"/>
<title> Registro </title>
<link rel="stylesheet" type="text/css" href="css/front_end/front-end.css"/>
</head>
<body>
        <!-- SCRIPT -->
        <script src="js/validaciones.js"></script>
<!-- Div contenedora de toda la pagina -->
<div class="general">
<!-- Div barra Superior -->
<div class="barra_superior">
<!-- Div buscador -->
<div class="buscador">
<label for="productoBuscar">Buscar Producto: </label>
<input type="text" name="productoabuscar" id="productoBuscar"/>
<!-- Selector de las categorias de la base -->
                    <label for="selcat"></label>
<select name="selcat" class="selectbuscador" id="selcat">
<option value="hogar">Hogar</option>
<option value="electrodomestico">Electrodomesticos</option>
<option value="deportes">Deportes</option>
<option value="construccion">Construcci&oacute;n</option>
</select>
                    <input type="button" id="sendsearch" value="buscar"/>
</div>
<!-- div links registrarse | loguin -->
<div class="reglog">
<a href="registro.php" >Registrarse </a> &nbsp;
<a href="login.html"> Ingresar </a>
</div>
<!-- div nombre de empresa + logo -->
</div>
<div class="nomempresa">
<a href="index.html">
<img src="imagenes/logo.png" class="logo" alt="logo" />
</a>
<p> VENTA DE PRODUCTOS </p>
</div>
<!-- contenedor menu izquierdo y datos -->
<div class="contenedor">
<div class="formulario_registro"  >
                   
<?php                   //Si ocurrio un error durante el registro (Fallos de Validacion)                    if(empty( $_POST ) || isset( $_SESSION["error"]) == 1) { //Si no existe la variable global POST, es porque no se envio el formulario                    //Entonces Lo muestro                        if (isset( $_SESSION["error"]) === 1) {                            echo "<strong style='margin-left: 25%; color: red'>Por favor corrija los errores marcados con *</strong>";                        }                    ?>

                    <form action="registro.php" method="post" autocomplete="on" name="formReg">

                        <label for="frusuario">Ingrese su DNI:</label>
                        <input type="number" name="dni" id="frusuario"/>
<?php if ((isset( $_SESSION["usuario"]) || isset( $_SESSION["usuarioExiste"] ))&& !empty( $_POST )){echo"*";}?>

                        <label for="frpass">Password:</label>
<?php if (isset( $_SESSION['pass1'] )&& !empty( $_POST )){echo"*";}?>

                        <input type="password" name="pass" id="frpass"/>
                        <label for="frrepass">Repita su Password:</label>
<?php if (isset( $_SESSION["pas1"] )&& !empty( $_POST )){echo"*";}?>

                        <input type="password" name="repass" id="frrepass"/>
                        <label for="frname">Nombre:</label>
<?php if (isset( $_SESSION["nombre"] )&& !empty( $_POST )){echo"*";}?>

                        <input type="text" name="nombre" id="frname"/>
                        <label for="frape">Apellido: </label>
<?php if (isset( $_SESSION["apellido"] )&& !empty( $_POST )){echo"*";}?>

                        <input type="text" name="apellido" id="frape"/>
                        <label for="frcel">Tel&eacute;fono</label>
<?php if (isset( $_SESSION["telefono"] )&& !empty( $_POST )){echo"*";}?>

                        <input type="text" name="telefono" id="frcel"/>
                        <label for="frcorreo">Correo Electronico</label>
<?php if (isset( $_SESSION["email"] )&& !empty( $_POST )){echo"*";}?>

                        <input type="email" name="email" id="frcorreo"/>
                        <input type="button" value="Enviar" onClick="validarRegistro()"/>
                    </form>
                </div>
               
<?php                    } else{ //Si la variable superglobal $_POST existe quiere decir que js ya valido el formulario y sigo procesando                ?>

            </div>
        </div>
       
<?php             /*Valido el formulario ya validado con js del lado cliente */            $connect = mysqli_connect ( "mysql.hostinger.com.ar","--------","******" ); //Conecto a la BD            if ( $connect === 0 ) { //Si no se pudo conectar a la BD, muestro el error                 echo "Error: No se pudo conectar a la BD";            } else { //Si se pudo conectar                mysqli_select_db ( $connect,"u911953184_proye" ); //Selecciono la base de datos                $tilde = $connect->query ( "SET NAMES 'utf8'" ); //Para que los tildes se vean correctamente                $usuario = $_POST['dni'];                $password = $_POST['pass'];                $repass = $_POST['repass'];                $nombre = $_POST['nombre'];                $apellido = $_POST['apellido'];                $telefono = $_POST['telefono'];                $email = $_POST['email'];                echo "$usuario";                //Si el formulario tiene errores en algun campo                $error = validaFormularioRegistro ( $usuario,$password,$repass,$apellido,$nombre,$email,$telefono );                //Si hay un fallo de validacion guardo en $_SESSION['ERROR'] 1 indica quqe hubo errores                if (usuarioRegistroExistente ( $connect,$usuario ) === TRUE){ //Si el usuario se encuentra registrado                    echo "Error: El usuario: ".$_POST['dni']. " ya se encuentra registrado";                    $_SESSION["usuarioExiste"] = "El usuario ya se encuentra registrado";                    header ( 'location:registro.php' );                } elseif (!empty( $error )){                   $_SESSION["error"] = 1;                    foreach ($error as $valor){                        $_SESSION[$error] = $valor;                    }                    header ( 'location:registro.php' );                } else{ //Guardo los datos del formulario en la BD                    mysqli_query ( $connect,"INSERT INTO usuarios VALUES ('$usuario','$password','$apellido','$nombre','$email','$telefono')" );                }                mysqli_close ( $connect);                header ( 'locate:index_privado.php' );             }        }                ?>

</body>
</html>
« Última modificación: 11 de Junio 2016, 18:15 por César Krall »

simchgab

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 16
    • Ver Perfil
Re:$_SESSION no me toma los valores asignados en codigo
« Respuesta #1 en: 01 de Junio 2016, 05:01 »
usando los inspectores de los navegadores no me muestra ningun valor tampoco.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:$_SESSION no me toma los valores asignados en codigo
« Respuesta #2 en: 01 de Junio 2016, 23:21 »
Hola.

session_start() debe colocarse siempre al principio del documento, antes de las etiquetas html, así que eso no será un problema, sino te he entendido mal.

Saludos. ;D

simchgab

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 16
    • Ver Perfil
Re:$_SESSION no me toma los valores asignados en codigo
« Respuesta #3 en: 01 de Junio 2016, 23:44 »
Hola pedro, nono, es que tengo un foreach ($error as $err -> $value") para cargar esos valores en el $_SESSION, pero no me funcionaba asi que ahora en las funciones directamente me avive y cargo los parametros directamente en la sesion, y ahi si me esta funcionando, ni bien termine de solucionarlo subo el codigo

simchgab

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 16
    • Ver Perfil
Re:$_SESSION no me toma los valores asignados en codigo
« Respuesta #4 en: 02 de Junio 2016, 00:17 »
Ahi lo pude hacer funcionar que feliz estoy jaja  :o
Código: [Seleccionar]
<?php    session_start (); //Inicio la sesion para el usuariorequire_once 'funcionesphp/validaciones.php'; //Importo la libreria de funciones de validaciones?>

<!doctype html>
<html>
<head>
        <meta charset="utf-8"/>
        <meta lang="es"/>
<title> Registro </title>
<link rel="stylesheet" type="text/css" href="css/front_end/front-end.css"/>
</head>
<body>
        <!-- SCRIPT -->
        <script src="js/validaciones.js"></script>
<!-- Div contenedora de toda la pagina -->
<div class="general">
<!-- Div barra Superior -->
<div class="barra_superior">
<!-- Div buscador -->
<div class="buscador">
<label for="productoBuscar">Buscar Producto: </label>
<input type="text" name="productoabuscar" id="productoBuscar"/>
<!-- Selector de las categorias de la base -->
                    <label for="selcat"></label>
<select name="selcat" class="selectbuscador" id="selcat">
<option value="hogar">Hogar</option>
<option value="electrodomestico">Electrodomesticos</option>
<option value="deportes">Deportes</option>
<option value="construccion">Construcci&oacute;n</option>
</select>
                    <input type="button" id="sendsearch" value="buscar"/>
</div>
<!-- div links registrarse | loguin -->
<div class="reglog">
<a href="registro.php" >Registrarse </a> &nbsp;
<a href="login.html"> Ingresar </a>
</div>
<!-- div nombre de empresa + logo -->
</div>
<div class="nomempresa">
<a href="index.html">
<img src="imagenes/logo.png" class="logo" alt="logo" />
</a>
<p> VENTA DE PRODUCTOS </p>
</div>
<!-- contenedor menu izquierdo y datos -->
<div class="contenedor">
<div class="formulario_registro"  >
                   
<?php                   //Si ocurrio un error durante el registro (Fallos de Validacion)                    if(empty( $_POST ) || isset( $_SESSION["canterrores"]) > 0) { //Si no existe la variable global POST, es porque no se envio el formulario                    //Entonces Lo muestro                        if (isset( $_SESSION["canterrores"]) > 0) {                            echo "<strong style='margin-left: 25%; color: red'>Por favor corrija los errores marcados con *</strong>";                        }                    ?>

                    <form action="registro.php" method="post" autocomplete="on" name="formReg">

                        <label for="frusuario">Ingrese su DNI:
<?php if (isset( $_SESSION["usuarioExiste"])  || isset( $_SESSION["usuario"])  && !empty( $_POST )){ echo"*";}?>
</label>
                        <input type="number" name="dni" id="frusuario"/>
                        <label for="frpass">Password:
<?php if (isset( $_SESSION['pass1'] )&& !empty( $_POST )){echo"*";}?>
</label>
                        <input type="password" name="pass" id="frpass"/>
                        <label for="frrepass">Repita su Password:
<?php if (isset( $_SESSION["pas1"] )&& !empty( $_POST )){echo"*";}?>
</label>
                        <input type="password" name="repass" id="frrepass"/>
                        <label for="frname">Nombre:
<?php if (isset( $_SESSION["nombre"] )&& !empty( $_POST )){echo"*";}?>
</label>
                        <input type="text" name="nombre" id="frname"/>
                        <label for="frape">Apellido:
<?php if (isset( $_SESSION["apellido"] )&& !empty( $_POST )){echo"*";}?>
</label>
                        <input type="text" name="apellido" id="frape"/>
                        <label for="frcel">Tel&eacute;fono
<?php if (isset( $_SESSION["telefono"] )&& !empty( $_POST )){echo"*";}?>
</label>
                        <input type="text" name="telefono" id="frcel"/>
                        <label for="frcorreo">Correo Electronico
<?php if (isset( $_SESSION["email"] )&& !empty( $_POST )){echo"*";}?>
</label>
                        <input type="email" name="email" id="frcorreo"/>
                        <input type="button" value="Enviar" onClick="validarRegistro()"/>
                    </form>
                </div>
               
<?php                    } else{ //Si la variable superglobal $_POST existe quiere decir que js ya valido el formulario y sigo procesando                ?>

            </div>
        </div>
       
<?php             /*Valido el formulario ya validado con js del lado cliente */            $connect = mysqli_connect ( "mysql.hostinger.com.ar","u911953184_simch","****" ); //Conecto a la BD            if ( $connect === 0 ) { //Si no se pudo conectar a la BD, muestro el error                 echo "Error: No se pudo conectar a la BD";            } else { //Si se pudo conectar                mysqli_select_db ( $connect,"u911953184_proye" ); //Selecciono la base de datos                $tilde = $connect->query ( "SET NAMES 'utf8'" ); //Para que los tildes se vean correctamente                $usuario = $_POST['dni'];                $password = $_POST['pass'];                $repass = $_POST['repass'];                $nombre = $_POST['nombre'];                $apellido = $_POST['apellido'];                $telefono = $_POST['telefono'];                $email = $_POST['email'];                //Si el usuario existe                usuarioRegistroExistente ( $connect,$usuario );                //Si el formulario tiene errores en algun campo los almacena en $_session incrementando ["canterrores"] en 1                validaFormularioRegistro ( $usuario,$password,$repass,$apellido,$nombre,$email,$telefono );                                if ((isset( $_SESSION["usuarioExiste"]  )) || ($_SESSION["canterrores"] > 0)){ //Si el usuario se encuentra registrado o hay errors de formulario                    $_SESSION["canterrores"]++; //Acumulo 1 error                    if ($_SESSION["canterrores"] > 0 ) { //Hubo errores                        header ( 'location:registro.php' ); //Vuelvo a mostrar el formulario                         }                } else{ //Guardo los datos del formulario en la BD                    mysqli_query ( $connect,"INSERT INTO usuarios VALUES ('$usuario','$password','$apellido','$nombre','$email','$telefono')" );                }                mysqli_close ( $connect);                header ( 'locate:index_privado.php' );             }        }        ?>

</body>
</html>

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".