Foros del Web » Programando para Internet » PHP »

Formulario y procesos en un mismo archivo

Estas en el tema de Formulario y procesos en un mismo archivo en el foro de PHP en Foros del Web. Hola amigos, quiero hacer un registro en el que en el mismo archivo donde el usuario llena los campos procese los datos. Ej. http://localhost/registro.php?accion=procesar http://localhost/registro.php?accion=confirmar ...
  #1 (permalink)  
Antiguo 06/07/2010, 23:22
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Formulario y procesos en un mismo archivo

Hola amigos, quiero hacer un registro en el que en el mismo archivo donde el usuario llena los campos procese los datos.
Ej.

http://localhost/registro.php?accion=procesar
http://localhost/registro.php?accion=confirmar

Ademas de eso quiero que los errores salten en la misma pagina, no se por ejemplo que si se envió el formulario correctamente el formulario desaparezca y aparezca un campo de color con el mensaje y si el formulario esta mal que el formulario no desaparezca y ademas que salte un error arriba con un campo de color también. Asi como cuando te registras en un foro; de antemano se agradece cualquier ayuda. ¡Saludos!
  #2 (permalink)  
Antiguo 07/07/2010, 07:50
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Formulario y procesos en un mismo archivo

Si no sabes como obtener los valores de las peticiones, te recomiendo que leas este material http://php.net/manual/en/language.va...s.external.php
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 07/07/2010, 08:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Tema movido desde Configuración PHP a PHP
  #4 (permalink)  
Antiguo 07/07/2010, 14:39
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Formulario y procesos en un mismo archivo

Gracias, pero eso no es lo que quiero hacer. Resulta que tengo un formulario y quiero que en ese mismo archivo se lleve acabo todas las operaciones del registro, si hay un error en algun campo que ese dicho error aparezca dentro de un cartel como cuando te equivocas al registrar una cuenta en este mismo foro que te salta un cartel arriba del formulario con los errores enumerados y todo. Por ahi me explico mal pero es que soy muy novato en esto y les pido una mano para hacer esto. ¡Saludos!
  #5 (permalink)  
Antiguo 07/07/2010, 14:54
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Respuesta: Formulario y procesos en un mismo archivo

¿Puedes poner algo de código de lo que tienes?

PD: Por favor, no pongas todo tu texto en negritas, se lee bien sin ellas.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #6 (permalink)  
Antiguo 07/07/2010, 15:22
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Formulario y procesos en un mismo archivo

registro.php

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Registro</title>
  5. <link href="css.css" rel="stylesheet" type="text/css" />
  6. </head>
  7. <div align="center">
  8. <table width="800" height="100%" border="0" cellspacing="0" cellpadding="10" bgcolor="#FFFFFF">
  9. <tr>
  10. <td style="border: solid 1px #000000">
  11.   <form name="form1" method="post" action="proceso.php">
  12.   <table width="100%" border="0" cellspacing="0" cellpadding="5">
  13.   <tr>
  14.       <td style="background: #000000; color: #FFFFFF; border: 1px solid #000000; font-size: 12px"><strong>Registro de cuentas; Ingresa los datos de la cuenta</strong></td>
  15.     </tr>
  16.     <tr>
  17.       <td class="formadesc" >Nombre de usuario</td>
  18.     </tr>
  19.     <tr>
  20.       <td class="formacampo"><input name="usuario" type="text" id="usuario" size="20" maxlength="16" /></td>
  21.     </tr>
  22.     <tr>
  23.       <td class="formadesc" >Contrase&ntilde;a</td>
  24.     </tr>
  25.     <tr>
  26.       <td class="formacampo"><input name="clave1" type="password" id="clave1" size="20" maxlength="16" /></td>
  27.     </tr>
  28.     <tr>
  29.       <td class="formadesc" >Confirma contrase&ntilde;a</td>
  30.     </tr>
  31.     <tr>
  32.       <td class="formacampo"><input name="clave2" type="password" id="clave2" size="20" maxlength="16" /></td>
  33.     </tr>
  34.     <tr>
  35.       <td class="formadesc" >Correo electr&oacute;nico</td>
  36.     </tr>
  37.     <tr>
  38.       <td class="formacampo"><input name="correo" type="text" id="correo" size="20" maxlength="50" /></td>
  39.     </tr>
  40.     <tr>
  41.       <td class="formaboton"><div align="right"><input name="boton" type="submit" id="boton" value="Registrar" />
  42.       </div></td>
  43.     </tr>
  44.   </table>
  45. </form>
  46. </td>
  47. </tr>
  48. </div>
  49. </body>
  50. </html>

proceso.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. $usuario = $_POST['usuario'];
  4. $clave1 = $_POST['clave1'];
  5. $clave2= $_POST['clave2'];
  6. $correo = $_POST['correo'];
  7.  
  8. if ($usuario == "")
  9. {
  10. echo "Debes ingresar un nombre de usuario para registrarte.";
  11. }
  12. elseif ($clave1 == "")
  13. {
  14. echo "Debes ingresar una contrase&ntilde;a para registrarte.";
  15. }
  16. elseif ($clave1 != $clave2)
  17. {
  18. echo "Por favor confirma la contrase&ntilde;a ingresada.";
  19. }
  20. // Aqui una nueva forma para validar el email, usando la funcion "strpos":
  21. elseif (!strpos($correo,"@hotmail.") && !strpos($correo,"@gmail.") && !strpos($correo,"@yahoo.") && !strpos($correo,"live.com."))
  22. {
  23. echo "El correo ingresado es incorrecto.";
  24. }
  25. else
  26. {
  27. $conexion = mysql_connect("localhost","root","");
  28. mysql_select_db("prueba", $conexion);
  29. $codigo = rand(0000000000,9999999999); // Conseguimos un codigo aleatorio de 10 digitos.
  30. if (!mysql_query("INSERT INTO pendientes (usuario,clave,correo,codigo) values ('".$usuario."','".$clave1."','".$correo."','".$codigo."')")) die (mysql_error());
  31. $headers = "From: UO Daery <[email protected]>";
  32. $mensaje = "Hola $usuario: \n
  33. Te enviamos este correo para completar el proceso de registro. \n
  34. Para activar tu cuenta visita el siguiente enlace: \n
  35. http://localhost/confirmar.php?codigo=".$codigo;
  36. if (!@mail("$correo","Confirmacion de registro","$mensaje","$headers")) die ("No se pudo enviar el email de confirmacion.");
  37. echo "Tu cuenta ha sido registrada, sin embargo, esta requiere que la confirmes desde el email que ingresaste en el registro.";
  38. }
  39. ?>

Lo del texto en negrita era mas bien para tener mi estilo en el foro pero si molesta pido perdón y no lo hago mas. ¡Saludos!

Última edición por Erythnul; 07/07/2010 a las 16:26
  #7 (permalink)  
Antiguo 07/07/2010, 15:34
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Respuesta: Formulario y procesos en un mismo archivo

Veo varias cosas mejorables.

1 - No filtras/validas tus variables $_POST
2 - En los if comparas con ="" pero puede ser 0 o otros valores, mejor usar empty()
3 - Cuando validas el email, hay mas proveedores que los que pones, mas bien infinitos, porque
cualquiera puede hacerse una cuenta de su correo en su dominio, luego no es buena forma de validar. Te recomiendo usar filter_var de php y checkdomain()
4 - El charset mejor en utf-8:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
5- Crea clases, no pongas css inline para esto y demas:
style="border: solid 1px #000000"
6- Los formularios contra menos campos mejor, repetir la contraseña el algo viejuno ya, la gente sabe lo pone, es como tambien tuvieras que poner otro para el email
7 - Identa mas el codigo html (sobre todo la zona de head)
8 - No es buena practica conectar a mysql con un usuario root, crea uno especifico
9 - llamando a rand sin parametros, te generara un numero aleatorio suficiente.


Para lo de accion podrias poner

Código PHP:
Ver original
  1. switch($_REQUEST['accion'])
  2. {
  3.     case 'confirmar':
  4.     # Codigo aqui
  5.    break;
  6.     case 'procesar':
  7.     # Codigo aqui
  8.    break;
  9. }
PD: lo de poner el tamaño de letra en mayor tambien igual xD
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #8 (permalink)  
Antiguo 07/07/2010, 16:20
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Formulario y procesos en un mismo archivo

Le cambie el código a las lineas 8 y 12

Código PHP:
Ver original
  1. <?php
  2.  
  3. $usuario = $_POST['usuario'];
  4. $clave1 = $_POST['clave1'];
  5. $clave2= $_POST['clave2'];
  6. $correo = $_POST['correo'];
  7.  
  8. if (empty($usuario))
  9. {
  10. echo "Debes ingresar un nombre de usuario para registrarte.";
  11. }
  12. elseif (empty($clave1))
  13. {
  14. echo "Debes ingresar una contrase&ntilde;a para registrarte.";
  15. }

Ahora como puedo validar correctamente el usuario? ¡Saludos!
  #9 (permalink)  
Antiguo 07/07/2010, 16:25
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Respuesta: Formulario y procesos en un mismo archivo

El skype no me va muy bien con la conexión actual, puedes agregarme a gmail y hablar conmigo por ahi (es mi mismo nick shakaran at gmail dot com).

Para validar los datos depende de la variable, si es un correo tiene unas restricciones, si es una cadena normal otras, si es un correo otras, la longitud que permitas, etc.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #10 (permalink)  
Antiguo 08/07/2010, 00:20
Avatar de Erythnul  
Fecha de Ingreso: julio-2010
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Formulario y procesos en un mismo archivo

Por ahora quiero seguir esa serie de pasos, lo siguiente seria verificar el usuario en la db y si esta registrado salte error. Tengo el siguiente código pero no se como adaptarlo o modificarlo para que entre en mi proceso.

Código PHP:
Ver original
  1. $query = mysql_query("SELECT * FROM accounts WHERE user='$usuario' ");
  2. if ($usuario_existe = mysql_fetch_array($query))
  3. {
  4. echo 'El usuario ya esta registrado';
  5. }

Entonces como le hago? ¡Saludos!

Última edición por Erythnul; 08/07/2010 a las 00:33

Etiquetas: procesos, formulario
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 18:15.