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
-
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?
<?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ón</option>
</select>
<input type="button" id="sendsearch" value="buscar"/>
</div>
<!-- div links registrarse | loguin -->
<div class="reglog">
<a href="registro.php" >Registrarse </a>
<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é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>
-
usando los inspectores de los navegadores no me muestra ningun valor tampoco.
-
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
-
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
-
Ahi lo pude hacer funcionar que feliz estoy jaja :o
<?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ón</option>
</select>
<input type="button" id="sendsearch" value="buscar"/>
</div>
<!-- div links registrarse | loguin -->
<div class="reglog">
<a href="registro.php" >Registrarse </a>
<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é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>