Acá está el todo el codigo, porsi a alguien le interesa...
Este sistema es para que usuarios de un sitio web, dejen sus mensajes.
Estos mensajes no podrán ser anónimos, pues no se autorizarán los mensajes que no hayan sido activados desdee el mail que se le envía con un link para activar el mensaje.
Base de datos:
Código:
CREATE TABLE `msj` (
`id` int(10) NOT NULL auto_increment,
`tipo` char(1) NOT NULL default '',
`pass` varchar(8) NOT NULL default '',
`nombre` varchar(25) NOT NULL default '',
`mail` varchar(50) NOT NULL default '',
`texto` varchar(255) NOT NULL default '',
KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=23 ;
Conexion.php
Código PHP:
//Conexión a la db
$link=mysql_connect ("localhost", "usuario", "contraseña") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("base_datos");
Formulario.php
Código PHP:
<script language="javascript" type="text/javascript" defer>
function validaEmail(mail)
{
var re = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
if (!re.test(mail)) {
alert ("Dirección de email inválida");
return false;
}
return true;
}</script>
</head>
<body>
<form method="post" action="formulario_add.php" onSubmit="return validaEmail(this.mail.value);">
<table border="0" width="500" cellspacing="0" cellpadding="0" height="149">
<tr>
<td width="25%">Nombre</td>
<td width="75%"><input type="text" name="nombre" size="20">
</td>
</tr>
<tr>
<td>E-mail</td>
<td width="75%" height="21"><input type="text" name="mail" size="20">
</td>
</tr>
<tr>
<td>Texto:</td>
<td > <input type="text" name="texto" size="50"> </td>
</tr>
<tr>
<td> </td>
<td width="75%" height="21">
<p align="center"><input type="submit" value="Agregar Dirección" name="agregar">
</td>
</tr>
</table>
</form>
formulario_add.php
Código PHP:
<?php
// ------------------- Generador de password
// Uso/sintax:
// genera_password (longitud password en caracteres o digitos, [tipo=alfanumerico|numerico])
// Si no indicas $tipo se asume como por defecto alfanumerico.
function genera_password($longitud,$tipo="alfanumerico"){
if ($tipo=="alfanumerico"){
$exp_reg="[^A-Z0-9]";
} elseif ($tipo=="numerico"){
$exp_reg="[^0-9]";
}
return substr(eregi_replace($exp_reg, "", md5(rand())) .
eregi_replace($exp_reg, "", md5(rand())) .
eregi_replace($exp_reg, "", md5(rand())),
0, $longitud);
}
//Ejemplo:
//echo "Password: (alfanumérico) ".genera_password(8)."<br>";
//echo "Password: (numérico) ".genera_password(15,"numerico")."<br>";
//echo "(recarga la página para ver otros passwords aleatorios)";
// ---------- Fin de Generador de password
// Recoger datos del formulario y asignar una variable.
$nombre=$_POST[nombre];
$mail=$_POST[mail];
$texto=$_POST[texto];
// Asignar variable Pass a la password generada más arriba.
$pass=genera_password(8);
// Limpiar cosas html...
$texto = str_replace("<","<",$texto);
$texto = str_replace(">",">",$texto);
$texto = str_replace("\r\n"," ",$texto);
$texto = str_replace("\n"," ",$texto);
$texto = str_replace("|","l",$texto);
$texto = stripslashes($texto);
$nombre = str_replace("<","<",$nombre);
$nombre = str_replace(">",">",$nombre);
$nombre = str_replace("|","l",$nombre);
$nombre = stripslashes($nombre);
$mail = str_replace("<","<",$mail);
$mail = str_replace(">",">",$mail);
$mail = str_replace("|","l",$mail);
// Conecar a la base de datos.
include("conexion.php");
// Insertar los datos a la db
mysql_query("insert into msj(nombre,mail,texto,pass)
values('$nombre','$mail','$texto','$pass')")
;
// Conseguir el ID del mensaje agregado.
$aa = mysql_query("SELECT id FROM msj WHERE tipo='' ORDER BY id DESC LIMIT 0,1");
while($row = mysql_fetch_array($aa)){
$id=$row[id];
}
// Enviar Mail para la validación.
$receiverMail =$mail;
$subject = "Validación de mensaje en paginaweb.algo";
$msgformat = "Este e-mail ha sido enviado porque haz escrito un mensaje en el sitio web paginaweb.algo y necesita ser validado
para poder ser publicado.
http://sitio/validar.php?id=$id&pass=$pass
";
mail($receiverMail, $subject, $msgformat, "From: Página web <[email protected]");
echo "En estos momentos un mail se te ha enviado con instrrucciones de como validar tu mensaje.<br>
Revisa tu correo en unos mitos.<br>
<br>
Gracias.";
exit();
mysql_close($conexion);
?>
validar.php
Código PHP:
<?php
include("conexion.php");
// conectas a tu BD .. etc ..
$sql="SELECT COUNT(*) FROM msj WHERE id='".$_GET['id']."' AND pass='".$_GET['pass']."'";
$resultado=mysql_query($sql) or die (mysql_error());
if (mysql_result($resultado,0) == 1){
// si hay un resultado .. coincide tu "id" con el "pass" .. así que puedes proceder a actualizar dicho campo ...
$sql="UPDATE msj SET tipo='1' WHERE id='".$_GET['id']."'";
mysql_query($sql) or die (mysql_error());
echo "Gracias, tu mensaje ha sido publicado.
<br><br><a href='mostrar.php'>Ver mensajes</a>";
}
?>
y para ver los mensajes de usuarios 'no anonimos'
mostrar.php
Código PHP:
<?php
//Sisteme para mostrar los mensajes de la base de datos.
include("msj_conexion.php"); //Conectar a la db
$query = mysql_query("SELECT * FROM msj WHERE tipo=1 ORDER BY id DESC LIMIT 0,25"); //pedir datos a la db y mostrar los ultimos 25
while($row = mysql_fetch_array($query)){
echo "
$row[nombre]: $row[texto]
";
}
mysql_close($link);
?>
Ahora, si cada uno quiere, se hace otro php que solo verá el admin del sitio para ver los mails de las personas que envían los mensajes.