Autor Tema: $_SESSION no me toma los valores asignados en codigo session_start PHP ejemplo  (Leído 2369 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 usuario
require_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 === ) { //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 usuario
require_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 === ) { //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"] > ) { //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".