Código PHP:
<?php
include('config.php'); // incluimos el archivo de conexión a la Base de Datos
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario
// creamos una función que nos parmita validar el email
function valida_email($correo) {
if (preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo)) return true;
else return false;
}
// Procedemos a comprobar que los campos del formulario no estén vacíos
$sin_espacios = count_chars($_POST['usuario_matricula'], 1);
if(!empty($sin_espacios[32])) { // comprobamos que el campo usuario_nombre no tenga espacios en blanco
echo "El campo <em>usuario_matricula</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['usuario_matricula'])) { // comprobamos que el campo usuario_nombre no esté vacío
echo "".text_register_error_username."";
}elseif(empty($_POST['usuario_clave'])) { // comprobamos que el campo usuario_clave no esté vacío
echo "".text_register_error_password."";
}elseif($_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { // comprobamos que las contraseñas ingresadas coincidan
echo "".text_register_password_match."";
}elseif(empty($_POST['usuario_nombre'])) { // validamos que el email ingresado sea correcto
echo "pon tu nombre";
}elseif(!valida_email($_POST['usuario_email'])) { // validamos que el email sea correcto
echo "".text_register_email_used."";
}elseif(empty($_POST['sexo'])) { // validamos que el email ingresado sea correcto
echo "Seleccione su Sexo";
}else {
// "limpiamos" los campos del formulario de posibles códigos maliciosos
$usuario_matricula = mysql_real_escape_string($_POST['usuario_matricula']);
$usuario_clave = mysql_real_escape_string($_POST['usuario_clave']);
$usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']);
$usuario_email = mysql_real_escape_string($_POST['usuario_email']);
$sexo = mysql_real_escape_string($_POST['sexo']);
// comprobamos que el usuario ingresado no haya sido registrado antes
$sql = mysql_query("SELECT usuario_matricula FROM usuarios WHERE usuario_matricula = '$usuario_matricula'")
or die (mysql_error());
if(mysql_num_rows($sql) > 0) {
echo "esta matricula ya esta en uso";
}else {
$CodigoKEY = SHA1(rand(0,100000000));
$usuario_clave = md5($usuario_clave); // encriptamos la contraseña ingresada con md5
// ingresamos los datos a la BD
$reg = mysql_query("INSERT INTO usuarios (usuario_matricula, usuario_clave, usuario_nombre, usuario_email, sexo, usuario_avatar, EstadoKEY, CodigoKEY, megusta, ips, usuario_freg) VALUES ('".$usuario_matricula."', '".$usuario_clave."', '".$usuario_nombre."', '".$usuario_email."', '".$sexo."', '1', '".$CodigoKEY."', '5', '".$_SERVER['REMOTE_ADDR']."', NOW())");
$registros = mysql_query("SELECT usuario_email,CodigoKEY FROM usuarios WHERE usuario_nombre = '$_POST[usuario_nombre]'");
while($reg2 = mysql_fetch_array($registros)){
mail("$_POST[usuario_email]","Activa tu cuenta.","Hola $_POST[usuario_nombre], Bienvenido tu te as registrado en web matriculas aco y para activar tu cuenta necesitas meterte en esta url. http://localhost/aco/index.php?page_id=validacion&email=$reg2[usuario_email]&key=$reg2[CodigoKEY]");
}
if($reg) {
echo "".text_register_successfully." <META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=index.php?page_id=login\">";
}else {
echo "".text_register_error."";
}
}
}
}else {
?>
<form action="index.php?page_id=registro" method="post">
<label>nombre completo</label><br />
<input type="text" name="usuario_nombre" maxlength="60" /><br />
<label>matricula</label><br />
<input type="text" name="usuario_matricula" maxlength="5" /><br />
<label>contraseña</label><br />
<input type="password" name="usuario_clave" maxlength="15" /><br />
<label>repite contraseña</label><br />
<input type="password" name="usuario_clave_conf" maxlength="15" /><br />
<label>correo electronico</label><br />
<input type="text" name="usuario_email" maxlength="50" /><br />
<label>Sexo</label><br />
<select name="sexo" id="sexo">
<option value="0">Seleccione su Sexo</option>
<option value="1">Hombre</option>
<option value="2">Mujer</option>
<option value="3">Indefinido</option>
</select><br />
<input type="submit" name="enviar" value="<?php echo text_button_account_create; ?>" />
<input type="reset" value="<?php echo text_button_register_cleaner; ?>" />
</form>
<?php
}
?>
para poner un poco más claro esta es la DB
Código PHP:
CREATE TABLE `usuarios` (
`usuario_id` int(4) NOT NULL AUTO_INCREMENT,
`usuario_matricula` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`usuario_clave` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`usuario_nombre` varchar(60) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`usuario_email` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`sexo` tinyint(6) NOT NULL DEFAULT '0',
`usuario_avatar` varchar(250) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`EstadoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`CodigoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`megusta` int(11) NOT NULL DEFAULT '0',
`ips` text COLLATE utf8_unicode_ci NOT NULL,
`usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`usuario_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ;
validacion.php
Código PHP:
<?php
session_start();
include('config.php');
$verificacion = mysql_query("SELECT * FROM usuarios WHERE usuario_matricula = '$_GET[usuario_matricula]' AND CodigoKey = '$_GET[key]'");
if ($veri = mysql_fetch_array($verificacion))
mysql_query("UPDATE usuarios SET EstadoKEY = '0' WHERE usuario_matricula = '$_GET[usuario_matricula]'");
echo "Tu cuenta ha sido activada Inicia Sesion.";
echo "<meta http-equiv='refresh' content='2; url=index.php'>";
?>
http://www.forosdelweb.com/f18/aporte-sistema-verificacion-correo-1008306/
También estuve buscando y encontré otro archivo para validación lo adapte pero sale un error y tampoco activa la cuenta
confirm.php
Código PHP:
<?php
require_once('config.php');
include('functions.php');
if($_GET['usuario_email']!='' && numeric($_GET['usuario_email'])==TRUE && strlen($_GET['key'])==32 && alpha_numeric($_GET['key'])==TRUE)
{
$query = mysql_query("SELECT usuario_email, CodigoKEY, EstadoKEY FROM usuarios WHERE usuario_email = '".mysql_real_escape_string($_GET['usuario_email'])."'");
if(mysql_num_rows($query)==0)
{
$row = mysql_fetch_assoc($query);
if($row['EstadoKEY']==0)
{
echo "&error=".$error = 'This member is already active !';
}
elseif($row['CodigoKEY']!=$_GET['key'])
{
echo "&error=".$error = 'The confirmation key that was generated for this member does not match with the one entered !';
}
else
{
$update = mysql_query("UPDATE usuarios SET EstadoKEY=0 WHERE usuario_email='".mysql_real_escape_string($row['usuario_email'])."'") or die(mysql_error());
$msg = 'Congratulations ! You just confirmed your membership !';
}
}
else {
echo "&error=".$error = 'User not found !';
}
}
else {
$error = 'Invalid data provided !';
}
if(isset($error))
{
echo "&error=".$error;
}
else {
echo "&msg=".$msg;
}
?>
de ante mano gracias. Saludos!