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 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>
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 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>