Webmaster > PHP

Procesar un formulario en PHP

(1/3) > >>

Erythnul:
Hola, como dice el titulo quisiera hacer un proceso para un formulario en PHP. Mi objetivo principal es aprender y lograr que funcionen las cosas como se debe.

proceso.php

--- Código: ---<?php

$usuario = $_POST['usuario'];
$clave1 = $_POST['clave1'];
$clave2= $_POST['clave2'];
$correo = $_POST['correo'];

if (empty($usuario))
{
echo "Debes ingresar un nombre de usuario para registrarte.";
}
elseif (empty($clave1))
{
echo "Debes ingresar una contrase&ntilde;a para registrarte.";
}
elseif ($clave1 != $clave2)
{
echo "Por favor confirma la contrase&ntilde;a ingresada.";
}
elseif (!strpos($correo,"@hotmail.") && !strpos($correo,"@gmail.") && !strpos($correo,"@yahoo.") && !strpos($correo,"live.com."))
{
echo "El correo ingresado es incorrecto.";
}
else
{
$conexion = mysql_connect("localhost","root","");
mysql_select_db("tanatos", $conexion);
$codigo = rand(0000000000,9999999999);
if (!mysql_query("INSERT INTO new_accounts (user,password,email,code) values ('".$usuario."','".$clave1."','".$correo."','".$codigo."')")) die (mysql_error());
$headers = "From: algun@email.com";
$mensaje = "Hola $usuario! \n
Te enviamos este correo para completar el proceso de registro. \n
Para activar tu cuenta visita el siguiente enlace: \n
http://localhost/confirmar.php?codigo=".$codigo;
if (!@mail("$correo","Confirmacion de registro","$mensaje","$headers")) die ("No se pudo enviar el email de confirmacion.");
echo "Tu cuenta ha sido registrada, sin embargo, esta requiere que la confirmes desde el email que ingresaste en el registro.";
}
?>

--- Fin del código ---

Lo primero que quiero hacer es que verifique si esta registrado el usuario. ¡Saludos!

ernestmego:
De primeras podrías validar si la variable post tiene un dato y esta establecida, sino guardar un NULL para forzar el empty()

--- Código: ---<?php $usuario = (isset($_POST['usuario']))?$_POST['usuario']:NULL;

--- Fin del código ---

Luego como los if son de una sola línea podrías omitir las llaves, por ejemplo:


--- Código: ---<?php if (empty($usuario)) echo "Debes ingresar un nombre de usuario para registrarte.";
--- Fin del código ---
Además conforme los tienes puestos, sólo te aparece un error, y podrían darse más a la vez, por eso mejor tener una variable booleana y se ponga a falso cuando haya algún campo invalido. Y sólo si esta a true (cierto) que se pase a la parte del else.

Erythnul:
Mira en realidad soy lo mas novato que podes encontrar en PHP JaJa. La verdad que como me comentas mucho no entiendo, que es lo que tendría que hacer con ese código y donde los coloco y así voy sacando conclusiones y aprendiendo a mi manera.

Lo modifique de la siguiente manera, creo que entendí bien. ¡Saludos!


--- Código: ---<?php

$usuario = (isset($_POST['usuario']))?$_POST['usuario']:NULL;
$clave1 = $_POST['clave1'];
$clave2= $_POST['clave2'];
$correo = $_POST['correo'];

if (empty($usuario)) echo "Debes ingresar un nombre de usuario para registrarte.";
elseif (empty($clave1))
{
echo "Debes ingresar una contrase&ntilde;a para registrarte.";
}
elseif ($clave1 != $clave2)
{
echo "Por favor confirma la contrase&ntilde;a ingresada.";
}
// Aqui una nueva forma para validar el email, usando la funcion "strpos":
elseif (!strpos($correo,"@hotmail.") && !strpos($correo,"@gmail.") && !strpos($correo,"@yahoo.") && !strpos($correo,"live.com."))
{
echo "El correo ingresado es incorrecto.";
}
else
{
$conexion = mysql_connect("localhost","root","");
mysql_select_db("tanatos", $conexion);
$codigo = rand(0000000000,9999999999); // Conseguimos un codigo aleatorio de 10 digitos.
if (!mysql_query("INSERT INTO new_accounts (user,password,email,code) values ('".$usuario."','".$clave1."','".$correo."','".$codigo."')")) die (mysql_error());
$headers = "From: cuentas@uodaery.com.ar";
$mensaje = "Hola $usuario: \n
Te enviamos este correo para completar el proceso de registro. \n
Para activar tu cuenta visita el siguiente enlace: \n
http://localhost/confirmar.php?codigo=".$codigo;
if (!@mail("$correo","Registro","$mensaje","$headers")) die ("No se pudo enviar el email de confirmacion.");
echo "Tu cuenta ha sido registrada, sin embargo, esta requiere que la confirmes desde el email que ingresaste en el registro.";
}
?>

--- Fin del código ---

ernestmego:
Si, pero debes hacer lo mismo con las demás variables en las que usas $_POST, como $clave1, $clave2 y $correo.

También lo mismo para los otros elseif.

Corrige eso y vemos más.

PD: Tranquilo todos fuimos novatos algún día.

Erythnul:
Bien, creo que lo hice correctamente. ¡Saludos!


--- Código: ---<?php

$usuario = (isset($_POST['usuario']))?$_POST['usuario']:NULL;
$clave1 = (isset($_POST['clave1']))?$_POST['clave1']:NULL;
$clave2= (isset($_POST['clave2']))?$_POST['clave2']:NULL;
$correo = (isset($_POST['correo']))?$_POST['correo']:NULL;

if (empty($usuario)) echo "Debes ingresar un nombre de usuario para registrarte.";
elseif (empty($clave1)) echo "Debes ingresar una contrase&ntilde;a para registrarte.";
elseif ($clave1 != $clave2) echo "Por favor confirma la contrase&ntilde;a ingresada.";
elseif (!strpos($correo,"@hotmail.") && !strpos($correo,"@gmail.") && !strpos($correo,"@yahoo.") && !strpos($correo,"live.com.")) echo "El correo ingresado es incorrecto.";
else
{
$conexion = mysql_connect("localhost","root","");
mysql_select_db("tanatos", $conexion);
$codigo = rand(0000000000,9999999999); // Conseguimos un codigo aleatorio de 10 digitos.
if (!mysql_query("INSERT INTO new_accounts (user,password,email,code) values ('".$usuario."','".$clave1."','".$correo."','".$codigo."')")) die (mysql_error());
$headers = "From: cuentas@uodaery.com.ar";
$mensaje = "Hola $usuario: \n
Te enviamos este correo para completar el proceso de registro. \n
Para activar tu cuenta visita el siguiente enlace: \n
http://localhost/confirmar.php?codigo=".$codigo;
if (!@mail("$correo","Registro","$mensaje","$headers")) die ("No se pudo enviar el email de confirmacion.");
echo "Tu cuenta ha sido registrada, sin embargo, esta requiere que la confirmes desde el email que ingresaste en el registro.";
}
?>

--- Fin del código ---

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa