Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: simchgab en 01 de Junio 2016, 05:00

Título: $_SESSION no me toma los valores asignados en codigo session_start PHP ejemplo
Publicado por: simchgab en 01 de Junio 2016, 05:00
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>
Título: Re:$_SESSION no me toma los valores asignados en codigo
Publicado por: simchgab en 01 de Junio 2016, 05:01
usando los inspectores de los navegadores no me muestra ningun valor tampoco.
Título: Re:$_SESSION no me toma los valores asignados en codigo
Publicado por: pedro,, 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
Título: Re:$_SESSION no me toma los valores asignados en codigo
Publicado por: simchgab 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
Título: Re:$_SESSION no me toma los valores asignados en codigo
Publicado por: simchgab 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>