1-) Así esta formado el WAMPSERVER
2-) Código de la Clase registro.php
Los jquery que tienen que bajar son esto dos (jquery.validate.js, jquery.min.js) van en la carpeta js... (-mas abajo pongo el script como validar el formulario con jquery)..
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta http-equiv="cache-control" content="no-cache">
<title>Formulario Registro</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript" src="js/validarregistro.js"> </script>
</head>
<body>
<div id="page">
<form action="<?php echo htmlentities($_SERVER['PHP_SELF'])?>" method="post" id="frm_registros" onSubmit="return checkForm(this);">
<div id="respond">
<h3>Regístrate Es gratis (y lo seguirá siendo).</h3>
<br/>
<div >
<label class="campo">Nombre de Usuario</label>
<input name="txtusuario" type="text" autofocus class="text" id="txtusuario"
value="<?php if(isset($_POST['txtusuario'])){echo htmlentities($_POST['txtusuario']);} ?>" />
</div>
<div>
<label class="campo">Contraseña</label>
<input name="txtpass" type="password" class="text" id="txtpass" />
</div>
<div>
<label class="campo">Confirmar Contraseña</label>
<input name="txtpassb" type="password" class="text" id="txtpassb" />
</div>
<div>
<label class="campo">E-mail:(requerido)</label>
<input name="txtemail" type="text" class="text" id="txtemail"
value="<?php if(isset($_POST['txtemail'])){echo htmlentities($_POST['txtemail']);} ?>" />
</div>
<div>
<input name="btningresar" type="submit" id="btningresar" value="Regístrate" />
</div>
<br/>
<p>Recibirás un email de confirmación con un enlace a una página que deberás visitar en las próximas 24 horas para activar tu cuenta.</p>
<br/>
<div>[ <a href="reset.php">¿Perdiste tu Contraseña?</a> ] </div >
<br/>
<?php
include("includes/registrar_in_usuario.php");
if ($error) {
echo '<ul>';
foreach ($error as $alerta) {
echo "<li class='avertencia'>$alerta</li>\n";
}
echo '</ul>'; }
?>
</div>
</form>
</div>
</body>
</html>
3-)Clase que va en la carpeta includes se llama (registrar_in_usuario.php)
<?php
include("oConexion.php");
$error = array();
if(array_key_exists('btningresar', $_POST)){
$usuario = "";
$pass = "";
$pass2 = "";
$email = "";
$usuario = trim(strtolower($_POST['txtusuario']));
if($usuario == "")
{
$error['txtnombre']= "Debes ingresar un nombre de usuario para registrarte.";
}
//comprobar si existe el usuarios registrado
if ($_POST['txtusuario']){
$query = mysql_query("SELECT usuario FROM usuarios WHERE usuario ='".$usuario."' LIMIT 1") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['usuario'] == $usuario) {
$error['txtusuario'] = "Ya existe ese nombre de usuario.";}else if($_POST['txtusuario']){
$query = mysql_query("SELECT usuario FROM registros WHERE usuario ='".$usuario."' LIMIT 1") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['usuario'] == $usuario) {
$error['txtusuario'] = "El nombre de usuarios ya se encuentra registrado, esperando por su aprobación, intente de nuevo durante 24 horas.";}
}}//fin de comprabar el usuarios
$pass = trim($_POST['txtpass']);
$digitos = strlen($pass); //con esto te da el numero de digitos
if($pass == "")
{
$error['txtpass']= "Debes ingresar una contraseña para registrarte.";
}else if($digitos < 6)
{
$error['txtpass']= "Ingrese una contraseña mayor a 6 digito";
}
$pass2 = trim($_POST['txtpassb']);
if ($pass2 != $pass){
$error['txtpassb']= "Por favor confirma tu contraseña.";
}
$email= strtolower($_POST['txtemail']);
if($email=="")
{
$error['txtemail']="Ingresar una dirección de E-Mail.";
}else if(!empty($email)){
// expresión regular para identificar caracteres ilegales en dirección email
$comprobarEmail = '/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix';
//rechazar la dirección email si no cumple la expresión regular
if (!preg_match($comprobarEmail, $email)) {
$error['txtemail'] = 'Por favor escribe una dirección email válida';}//fin de preg_match
}//fin del else y el if donde comprueba si es distinto a vacio $email
//comprobar si existe el email registrado
if ($_POST['txtemail']) {
$query = mysql_query("SELECT email FROM usuarios WHERE email ='".$email."' LIMIT 1") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['email'] == $email) {
$error['txtemail'] = "Dirección de E-Mail ya registrada.";}else if($_POST['txtemail']){
$query = mysql_query("SELECT email FROM registros WHERE email ='".$email."' LIMIT 1") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['email'] == $email) {
$error['txtemail'] = "El E-mail ya se encuentra registrado, esperando por su activación, intente de nuevo durante 24 horas.";}
}}//fin de comprabar el email
if(!$error)
{
try
{
$codigoverificacion = substr(md5(uniqid(rand())),0,50);// Conseguimos un codigo aleatorio de 50 digitos.
if (!mysql_query("INSERT INTO registros(usuario,contrasena,email,codigo) values ('$usuario','$pass','$email','$codigoverificacion')"));
//dibujar el mensaje para confirma el registro de usuarios
$headers = "From: TUEMAIL@gmail.com \r\n";
$headers .= "X-Mailer: PHP/" . phpversion();
$subject = "Activacion de Cuenta de Usuario Nuevo.";
$message = "Bienvenido a Omegave!, \r\n";
$message .= "\r\n";
$message .= "Registraste la siguiente cuenta de E-Mail " .$email. " para abrir una cuenta en jrondon.\r\n";
$message .= "\r\n";
$message .= "Para terminar el proceso de registro debes visitar el siguiente enlace dentro de las próximas 24 horas para activar tu";
$message .= "cuenta de usuario, de lo contrario la información que enviaste será borrada de forma automática por el sistema y tendrás que";
$message .= "registrarte de nuevo.";
$message .= "\n\n";
$message .= "Para confirmarlo debe hacer click en el siguiente enlace:";
$message .= "\r\n";
$message .= "http://TUSITIO.com/confirmar.php?codigo=".$codigoverificacion;
$message .= "\n\n";
$message .= "A continuación la información de usuario:";
$message .= "\r\n";
$message .= "-Nickname: ".$usuario." \r\n";
$message .= "-Contraseña: ".$pass." \r\n";
$message .= "\r\n";
putenv('TZ=America/Montevideo');
$message .= "Enviado el: " .date('d/m/Y | H:i:s',time())." | " .$_SERVER['REMOTE_ADDR'];
$message .= "\n\n";
$message .= "Sin otro particular, saludamos a Usted muy atentamente.\r\n TU EMPRESA";
if (mail($email,utf8_decode($subject), utf8_decode($message), $headers)){
echo "</br>";
die("<font color='Red'>No se pudo enviar el email de confirmacion.</font>");
header('Location: ../account.php');
exit();
}else {
echo "</br>";
$error = 'El envio ha fallado, por favor contacte al administrador sobre este problema';}
}catch(Exeception $ex)
{
echo "Problema en la base de datos al ingresar registrar " .$ex->getMessage();
}
}
}
$_POST= array();
?>
4-)Mensaje después que se registra el usuario. va en la carpeta includes (account.php)
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta http-equiv="cache-control" content="no-cache">
<title>Formulario Registro</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<div id="page">
<div id="respond">
<h2 align='center' style= 'color:#FF0000'>Activación de usuario nuevo</h2>
<br/>
<div align='center'>
<h1>
<p>Tu cuenta ha sido registrada, sin embargo, esta requiere que la confirmes desde el email que ingresaste en el registro.</p>
</h1>
</div>
<br/>
<div align="center">
<p>Nota: Recibirás un email de confirmación con un enlace a una página que deberás visitar en las próximas 24 horas para activar tu cuenta.</p>
</div>
<br/>
</div>
</div>
</body>
</html>
5-) Código de la pagina de confirmar.php

<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta http-equiv="cache-control" content="no-cache">
<title>Formulario de confirmacion</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<div id="page">
<div id="respond">
<?php
session_start();
include("includes/oConexion.php");
$codigo = $_GET['codigo'];
if($codigo != ""){
$buscar = mysql_query("SELECT * FROM registros WHERE codigo='".$codigo."'"); // Buscamos el codigo
if ($resultado = mysql_fetch_array($buscar)) // Si se encontro el codigo de verificacion seguimos
{
if (!mysql_query("DELETE FROM registros WHERE codigo='".$codigo."' LIMIT 1")) die (mysql_error()); // Borramos el registro para que no pueda reutilizar el codigo de verificacion.
if (!mysql_query("INSERT INTO usuarios(usuario,contrasena,email) values ('".$resultado['usuario']."','".$resultado['contrasena']."','".$resultado['email']."')")) die (mysql_error()); // Ahora si registramos al usuario
echo "<h1 align='center' style= 'color:#FF0000'>Registro de Nuevo Usuario: Paso Final</h1>";
echo "<br/>";
echo "<div align='center'><strong>Has confirmado tu cuenta correctamente </strong><a href='login.php' style='color:#00F'>Ingresar.</a> </div>";
echo "<br/>";
}
else // Si no encontro el codigo de verificacion, le damos error:
{
echo "<h1 align='center' style= 'color:red'>Error de activación de usuario nuevo</h1>";
echo "<br/>";
echo "<div align='center'>";
echo "<h1>No existe ningún usuario en la base de datos con ésta información.</h1>";
echo "</div>";
echo "<br/>";
echo "<div align='center'><strong>Puedes registrate como usuario nuevo utilizando el formulario </strong><a href='registro.php' style='color:#00F'>aquí.</a> </div>";
echo "<br/>";
}
}else
{
header("location: registro.php");
session_destroy();
}
?>
</div>
<!-- fin de respond-->
</div>
</body>
</html>
6-) conexión a la base de datos(asi se llama la clase oConexion.php).
<?php
$mysql_host = "localhost";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "DB1_jrondon2013";
if(!$conexion= mysql_connect($mysql_host,$mysql_user,$mysql_password))
{
die("No se puedo ejecutar la conexion ". mysql_error());
}
if(!mysql_select_db($mysql_database, $conexion))
{
die("No se pudo seleccionar la base de datos ". mysql_error());
}
?>
7-)Validar formulario así se llama el script (jquery.registro.js)
$(document).ready(function() {
$.validator.addMethod("regex",function(value,element,regexp){
var re= new RegExp(regexp)
return this.optional(element) || re.test(value);
},"Solo caracteres Alfanumérico");
$("#frm_registros").validate({
rules:{
txtusuario:{
required:true,
regex:"^[a-zA-Z0-9_]+$",
remote:"exiusuarios.php"
},
txtpass:{
required:true,
minlength:8
},
txtpassb:{
equalTo:"#txtpass"
},
txtemail:{
required:true,
remote:"exiEmail.php",
email:true}
},
//inicicio de mensaje
messages:{
txtusuario:{
required:"Ingrese su nombre de usuario",
remote:"El usuario ya existe"
},
txtpass:{
required:"Ingrese una contraseña",
minlength:"Ingrese una contraseña mayor a 8 digito"
},
txtpassb:{
equalTo:"Confirma tu contraseña"
},
txtemail:{
required:"Ingrese una dirección de E-mail para su confirmación",
email:"Por favor escribe una dirección email válida",
remote:"Ingrese una dirección de E-mail diferente"
}
}//fin del los mensaje
})
});
8-)remote:"frm_usuarios.php"
<?php
session_start();
include("includes/oConexion.php");
$usuario = $_GET['txtusuario'];
if($usuario !=""){
$consulta = "select usuario from usuarios WHERE usuario='$usuario'";
$resul = mysql_query($consulta, $conexion);
if (mysql_fetch_assoc($resul)) {
echo "false";}
else {
echo "true";}
}else {
header("location: login.php");
session_destroy();}
?>
9-)remote:"exiEmail.php",
<?php
session_start();
include("includes/oConexion.php");
$exiemail = $_GET['txtemail'];
if($exiemail !="")
{
$consulta = "select email from usuarios WHERE email='$exiemail'";
$resul = mysql_query($consulta, $conexion);
if (mysql_fetch_assoc($resul)) {
echo "false";}
else {
echo "true";}
}else {
header("location: login.php");
session_destroy();
}
?>
10-)Hoja de estilo...(style.css)
@charset "utf-8";
/* Reset */
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary, time, mark, audio, video {
font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", tahoma, Arial, Verdana, sans-serif;
font-size: 100%;
letter-spacing: 0em;
vertical-align: middle;
margin: 0px;
padding: 0px;
border: 0px;
outline: 0px;
}
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
display: block;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after, q:before, q:after {
content: "";
content: none;
}
h1, h2, h3, h4, h5, h6 {
margin: 10px 0;
font-family: inherit;
font-weight: bold;
line-height: 10px;
color: inherit;
text-rendering: optimizelegibility;
}
h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
font-weight: normal;
line-height: 1;
color: #999;
}
h1, h2, h3 {
line-height: 10px;
color: #999;
font-style: oblique;
}
h1 {
font-size: 30.5px;
}
h2 {
font-size: 28.5px;
}
h3 {
font-size: 24.5px;
}
h4 {
font-size: 17.5px;
}
h5 {
font-size: 14px;
}
h6 {
font-size: 11.9px;
}
h1 small {
font-size: 24.5px;
}
h2 small {
font-size: 17.5px;
}
h3 small {
font-size: 14px;
}
h4 small {
font-size: 14px;
}
html {
font-size: 100%;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
a {
color: #0088cc;
text-decoration: none;
font-size: 14px;
}
a:hover {
color: #005580;
text-decoration: underline;
}
a:focus {
outline: thin dotted #333;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
a:hover, a:active {
outline: 0;
}
p {
font-size: 13px;
margin: 0 0 10px;
}
@page {
margin: 0.5cm;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3 {
page-break-after: avoid;
}
strong {
font-weight: bold;
}
em {
font-style: italic;
}
body {
margin: 0;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 20px;
color: #333333;
background-color: #ffffff;
}
form {
width: 60%;
margin: 0 auto;
padding: 12px;
}
#page {
width: 890px;
background-color: #FFF;
margin: auto;
border-radius: 10px;
box-shadow: 0px 5px 20px #FFF;
*zoom: 1;
}
div#respond {
border: 1px solid #CED5D7;
border-radius: 10px;
margin-top: auto;
padding: 25px;
border: 1px solid #CED5D7;
box-shadow: 0 0 0 3px #E5E5E5;
}
label, input, button, select, textarea {
font-size: 98%;
font-weight: normal;
line-height: 20px;
}
input, button, select, textarea {
font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
}
label {
margin-bottom: 5px;
}
label.campo {
width: auto;
display: block;
margin: .2em 0 0;
}
.inputcaptcha {
font-size: 14px;
padding: 6px;
border-radius: 0 5px 5px 5px;
border: 1px solid #CCC;
width: 40px;
text-align: center;
}
.text {
width: 220px;/*para poner un tamaño a los text ya que tengo captcha y no lo puedo poner por defecto*/
}
input[type=text], input[type=password], input[type=email], input[type=url] {
padding: 6px;
border-radius: 0 5px 5px 5px;
border: 1px solid #CCC;
/*width: 200px; //problema porque se me agranda el text del captcha*/
height: 20px;
}
textarea {
padding: 6px;
border-radius: 0 5px 5px 5px;
border: 1px solid #CCC;
resize: none; /* esta propiedad es para que el textarea no sea redimensionable */
width: 350px;
height: 130px;
}
input[type=submit] {
margin-top: 20px;
min-width: 100px;
padding: 7px 20px;
text-align: center;
cursor: pointer;
}
.avertencia {
color: Red;
font-size: 13px;
}
label.error {
background-color: #BC1010;
padding: 6px 12px;
border-radius: 4px;
color: white;
font-weight: bold;
margin-left: 12px;
position: absolute;
font-family: Arial, Verdana, sans-serif;
font-size: 10px;
}
.error:before { /* Este es un truco para crear una flechita */
content: '';
border-top: 8px solid transparent;
border-bottom: 8px solid transparent;
border-right: 8px solid #BC1010;
border-left: 8px solid transparent;
left: -16px;
position: absolute;
top: 5px;
}
.mainTitle {
color: #333;
font-size: 18px;
}
#footer a, #footer p {
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
color: #454545;
font-weight: normal;
float: left;
}
11-)Bueno aca le dejo el script de la base de datos la cual estoy usando, se llama (DB1_jrondon2013), solo tiene que copiar y pegarlo en la consola de mysql y ejecutarla.
drop database IF EXISTS DB1_jrondon2013;
CREATE DATABASE DB1_jrondon2013 CHARSET=UTF8;
USE DB1_jrondon2013;
CREATE TABLE IF NOT EXISTS comment (
mensaje_id int PRIMARY KEY NOT NULL AUTO_INCREMENT,
nombre varchar(50) NOT NULL,
email varchar(50) NOT NULL,
url varchar(50) DEFAULT NULL,
comentarios text NOT NULL,
fecha timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)
ENGINE=INNODB DEFAULT CHARSET=UTF8;
CREATE TABLE IF NOT EXISTS registros (
cod_registro int PRIMARY KEY NOT NULL AUTO_INCREMENT,
codigo varchar(50) NOT NULL,
usuario varchar(20) NOT NULL,
contrasena varchar(20) NOT NULL,
email varchar(50) NOT NULL,
fecha_ingreso timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
activado enum('NO') NOT NULL)
ENGINE=INNODB DEFAULT CHARSET=UTF8;
CREATE TABLE IF NOT EXISTS tbchange (
cod_change int PRIMARY KEY NOT NULL AUTO_INCREMENT,
codigo_verific varchar(50) NOT NULL,
email varchar(50) NOT NULL)
ENGINE=INNODB DEFAULT CHARSET=UTF8;
CREATE TABLE IF NOT EXISTS usuarios (
co_digo int PRIMARY KEY NOT NULL AUTO_INCREMENT,
admin_priv enum('u','a') NOT NULL,
usuario varchar(30) NOT NULL,
contrasena varchar(30) NOT NULL,
email varchar(50) NOT NULL,
fecha_ingreso timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY `o_usuario` (`usuario`) USING BTREE,
UNIQUE KEY `o_email` (`email`) USING BTREE)
ENGINE=INNODB DEFAULT CHARSET=UTF8;
12-)Bueno alguna cosa dejen un comentarios que responderé cuando tenga tiempo y le envió todos en códigos por email, NO SE OLVIDEN DECIR DE QUE PAIS SON.. así llevo el registros. Y puedo seguir mejorando el codigo...






