Quijost
Webmaster => Programacion Web => PHP => Mensaje iniciado por: Erythnul en Julio 08, 2010, 04:18:25 am
-
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
<?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ña para registrarte.";
}
elseif ($clave1 != $clave2)
{
echo "Por favor confirma la contraseñ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.";
}
?>
Lo primero que quiero hacer es que verifique si esta registrado el usuario. ¡Saludos!
-
De primeras podrías validar si la variable post tiene un dato y esta establecida, sino guardar un NULL para forzar el empty()
<?php $usuario = (isset($_POST['usuario']))?$_POST['usuario']:NULL;
Luego como los if son de una sola línea podrías omitir las llaves, por ejemplo:
<?php if (empty($usuario)) echo "Debes ingresar un nombre de usuario para registrarte.";
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.
-
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!
<?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ña para registrarte.";
}
elseif ($clave1 != $clave2)
{
echo "Por favor confirma la contraseñ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.";
}
?>
-
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.
-
Bien, creo que lo hice correctamente. ¡Saludos!
<?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ña para registrarte.";
elseif ($clave1 != $clave2) echo "Por favor confirma la contraseñ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.";
}
?>
-
Vale ahora correcto, pero también te dije lo de la variable booleana ;)
-
Explicame como hacerlo y lo hago como te dije antes no me las arreglo muy bien con el código todavía.
EDITO: Le agregue la variable booleana debajo de las otras variables. ¡Saludos!
<?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;
$ok = true;
if (empty($usuario)) echo "Debes ingresar un nombre de usuario para registrarte.";
elseif (empty($clave1)) echo "Debes ingresar una contraseña para registrarte.";
elseif ($clave1 != $clave2) echo "Por favor confirma la contraseñ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.";
}
?>
-
<?php
if (empty($usuario))
{
echo "Debes ingresar un nombre de usuario para registrarte.";
$ok = false;
}
# Lo mismo para otras condiciones
# Y luego al final
if($ok == true)
{
//Poner aqui la query
}
-
No entendí lo de poner una consulta en ese lugar, pero lo demás creo que esta correcto.
<?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;
$ok = true;
if (empty($usuario))
{
echo "Debes ingresar un nombre de usuario para registrarte.";
$ok = false;
}
elseif (empty($clave1)
{
echo "Debes ingresar una contraseña para registrarte.";
$ok = false;
}
elseif ($clave1 != $clave2)
{
echo "Por favor confirma la contraseña ingresada.";
$ok = false;
}
elseif (!strpos($correo,"@hotmail.") && !strpos($correo,"@gmail.") && !strpos($correo,"@yahoo.") && !strpos($correo,"live.com."))
{
echo "El correo ingresado es incorrecto.";
$ok = false;
}
if ($ok == true)
{
//Poner aqui la query
}
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: 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.";
}
?>
¡Saludos!
-
Te lo pongo ya bien, fijate lo que he modificado:
<?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;
$ok = true;
if(empty($usuario))
{
echo "Debes ingresar un nombre de usuario para registrarte.";
$ok = false;
}
if(empty($clave1)
{
echo "Debes ingresar una contraseña para registrarte.";
$ok = false;
}
if ($clave1 != $clave2)
{
echo "Por favor confirma la contraseña ingresada.";
$ok = false;
}
if(!strpos($correo,"@hotmail.") && !strpos($correo,"@gmail.") && !strpos($correo,"@yahoo.") && !strpos($correo,"live.com."))
{
echo "El correo ingresado es incorrecto.";
$ok = false;
}
if($ok == true)
{
$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: 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.";
}
?>
-
Entonces lo que yo pensaba estaba bien de solo borrar el else. Entonces ahora como logramos que verifique si el usuario esta en la base de datos? Tengo un pedaso de script que saque de una guia pero no se si es compatible. ¡Saludos!
$query = mysql_query("SELECT * FROM accounts WHERE user='$usuario' ");
if ($usuario_existe = mysql_fetch_array($query))
{
echo 'El usuario ya esta registrado';
mysql_free_result($query);
}
-
No es solo borrar el else, fijate tambien en los else if.
Para lo otro busca por mysql_num_rows, una cosa es preguntar y otra es hacerte todo el código ;) Somos ayuda a soporte, no soporte de creación ;)
-
La verdad agradezco tu participación y te pido perdón, no lo hago mas. ¡Saludos!