Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Al reiniciar la web me registra un usuario. Porque?

Estas en el tema de Al reiniciar la web me registra un usuario. Porque? en el foro de PHP en Foros del Web. bueno amigos este codigo tiene una validacion de campos vacios por si alguien el inderesa lo cree yo mismo pero el problema consiste en cuando ...
  #1 (permalink)  
Antiguo 13/03/2016, 20:43
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Al reiniciar la web me registra un usuario. Porque?

bueno amigos este codigo tiene una validacion de campos vacios por si alguien el inderesa lo cree yo mismo

pero el problema consiste en cuando ingreso los datos si insertan bien pero si le doy a Cargar esta pagina de nuevo se ingresa otro usuario con los mismo datos que inserte anterior mente.

este es el código

Código PHP:
Ver original
  1. <?php                                  
  2.     if(isset($_POST['nick']) && isset($_POST['pass']) && isset($_POST['rpass']) && isset($_POST['email']))  //busaca si las variables Post estan
  3. {
  4.     $nick  = $_POST['nick']; //atrapa las variables POST
  5.     $pass  = $_POST['pass'];
  6.     $rpass  = $_POST['rpass'];
  7.     $email  = $_POST['email'];
  8.    
  9. $array = array($nick,$pass, $rpass, $email); //validacion de campos
  10.  
  11.     if ($array[0]== '')  //si estan vacias
  12.     {
  13.     echo "nick vacio<br>"; 
  14.     }
  15.    if ($array[1]== '')
  16.     {
  17.      echo "pass vacio <br>";   
  18.     }
  19.     if($array[2] == '')
  20.     {
  21.      echo "rpass vacio <br>";  
  22.     }
  23.     if($array[3] == '')
  24.     {
  25.      echo "email vacio <br>";  
  26.     }
  27.     else  // si no estan vacias corre el script
  28.     {  
  29.         if ($pass === $rpass ) //verifica si pass es igual a pass
  30.         {                                      
  31.             require("../conexion/conexion.php");                                    //busca el file php para conectarse a la base de datos
  32.             //(DESASTIVADO)$pass = md5 ($pass);                         // encrista la clave
  33.             mysql_query("INSERT INTO usuarios VALUES ('',' $nick',' $pass',' $email' )"); //           //HAce la consulta a la base de datos para introducir los codigos
  34.             mysql_close($link);                                         //cerramos las conecion la conecios se encuentra en el archivo connect_db.php que es invocado por required linea 9
  35.             echo 'Se ha registrado el user' ;
  36.  
  37.         }
  38.         else {
  39.             echo 'Los pass no son iguales';
  40.     }
  41. }
  42.  
  43. }
  44. ?>

no tengo idea de como hacer que cuando cargue de nuevo la pagina se ingresar los nuevos datos
  #2 (permalink)  
Antiguo 13/03/2016, 20:50
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Al reiniciar la web me registra un usuario. Porque?

Aunque tú no veas los datos como en GET, la página tiene los datos 'invisibles' para ti, pero los sigue manteniendo en la página. Si trabajas con chrome o firefox, te salta una alerta que dice que si estás seguro de realizar la acción, porque puede hacer que se duplique la información ingresada.

Por ello es aconsejable una vez hecho la acción, redirigir a otra página automáticamente.
  #3 (permalink)  
Antiguo 13/03/2016, 21:19
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Al reiniciar la web me registra un usuario. Porque?

Lo que el compañero arriba te quiere decir es que te hace falta algo asi:

Código PHP:
Ver original
  1. mysql_query("INSERT INTO usuarios VALUES ('',' $nick',' $pass',' $email' )"); //           //HAce la consulta a la base de datos para introducir los codigos
  2.             mysql_close($link);  
  3. echo 'Se ha registrado el user';
  4. header('Location: ARCHIVO_A_REDIRIGIR.php'); //rediriges aqui, aunque no se vea el echo anterior
  5. exit();
  6. }
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #4 (permalink)  
Antiguo 13/03/2016, 21:25
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Al reiniciar la web me registra un usuario. Porque?

si eso seria una buen solucion gracias ya lo hice todo bien si no es mucha molestia como aria si pongo la dirección donde esta este codigo yo lo hice y no se agrega nada pero se vizualisa fuera bueno que cuando entren al link saltandodece el formulario lo enviara a otro lugar no lo puedo hacer o no se hacerlo me falta eso.
  #5 (permalink)  
Antiguo 13/03/2016, 21:32
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Al reiniciar la web me registra un usuario. Porque?

Añade al principo del documento una condición, si no hay datos POST o un dato en especifico como "rpass" que lo redireccione al formulario

Código PHP:
Ver original
  1. <?php
  2. if(!isset($_POST['rpass'])){
  3. header('Location: archivo.php');
  4. exit();
  5. }
  6. ?>
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #6 (permalink)  
Antiguo 13/03/2016, 21:42
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Al reiniciar la web me registra un usuario. Porque?

super bueno amigo publicare todo cuando termine estoy pensando crear un sistema pequeño que incluya usuario con foto. No eh encontrado nada parecido, pues me decidíco a crearlo sera un buen aporte.
  #7 (permalink)  
Antiguo 14/03/2016, 05:32
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Al reiniciar la web me registra un usuario. Porque?

Cita:
Iniciado por wilson_romero Ver Mensaje
super bueno amigo publicare todo cuando termine estoy pensando crear un sistema pequeño que incluya usuario con foto. No eh encontrado nada parecido, pues me decidíco a crearlo sera un buen aporte.
Sistema de usuario con foto??? de que se trataría porque usuario con foto hay montones, de todas formar habría que ver la funcionalidad del sistema y a ver iría dirigido. Saludos.
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 14/03/2016, 05:41
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Al reiniciar la web me registra un usuario. Porque?

No hagas esto...

Código PHP:
Ver original
  1. if ($array[0]== '')
  2.     {
  3.     echo "nick vacio<br>";  
  4.     }
  5.    if ($array[1]== '')
  6.     {
  7.      echo "pass vacio <br>";    
  8.     }

Tratalos como quisieras que te trataran a tí... hay tipos de variables, STRING, NULL, INT, BIGINT, DATE, BOOLEAN etc... etc...

Cada uno requiere de un tipo de validación adecuada para optimizar su "validación"..

te doy 3 ejemplos..

Código PHP:
Ver original
  1. //si esta vacio
  2. if (empty($_POST['nick']))
  3.     {
  4.     echo "nick vacio<br>";  
  5.     }
  6.  
  7. //si es NULO
  8. if ($_POST['nick'] == NULL)
  9.     {
  10.     echo "nick vacio<br>";  
  11.     }
  12.  
  13. //o ambos
  14. if (empty($_POST['nick']) || $_POST['nick'] == NULL)
  15.     {
  16.     echo "nick vacio<br>";  
  17.     }

En escencia superficial, los tres hacen lo mismo, pero la diferencia radica en el tipo de validación que necesitas... una explicación coloquial sería:

El EMPTY o VACIO es si tu campo en la tabla de BD no tiene como propiedad el NOT NULL, puedes no enviar ningún caracter alfanumérico para ser insertado, pero pasa por alto si es que envias un ESPACIO EN BLANCO, y si no quieres dicho espacio en blanco, debes emplear otra función, TRIM() para eliminarlo, caso contrario te cargará el espacio en blanco, aunque para tí sea VACIO, en realidad si carga un valor y ocuparía BYTES de memoria en disco...

El NULL obvia todo esto, es decir, no admite ni siquiera el espacios en blanco, muy útil si tu campo de la BD es NOT NULL...

Por ende si hay diferencias, y eso tener buenas prácticas de programación, ya que se aprende al vuelo y se obvian estas cosas..

Lo que hiciste es muy util cuando quieres comparar valores numéricos o booleanos, como:

Código PHP:
Ver original
  1. if ($_POST['num']== 0)
  2.     {
  3.      echo "debe cargar otro numero <br>";    
  4.     }
  5.  
  6. if ($_POST['acepta']== FALSE)
  7.     {
  8.      echo "Por favor, acepte los terminos y condiciones. <br>";    
  9.     }

Puedes leer otra explicación EN ESTE ENLACE.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #9 (permalink)  
Antiguo 15/03/2016, 19:56
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Al reiniciar la web me registra un usuario. Porque?

Gracias a todo por sus comentarios de verdad estoy aprendiedno mucho.
esto de loncho_rojas me dejo tan imprecionado muy buen uso de la progrmacion y muy bien explicado tratare de agregarlo al codigo para compartir un script para validar los campos de un formularo.

espacios es un caracte como no averl pensasdo entes
yo probe mu array agregandole NULL pero me sale mal tiene un error por alguan razon si lleno el campo nick y el de email y dejo lo de pass vacio medice que esta vacio pero se agrega el user aqui esta el libk donde se esta devatiendo el tema

Última edición por wilson_romero; 15/03/2016 a las 20:20

Etiquetas: mysql, reiniciar, usuario, usuarios, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:35.