Ver Mensaje Individual
  #10 (permalink)  
Antiguo 17/03/2005, 12:17
Avatar de El_MiMo
El_MiMo
 
Fecha de Ingreso: septiembre-2003
Ubicación: Chile
Mensajes: 123
Antigüedad: 20 años, 7 meses
Puntos: 1
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("<","&lt;",$texto);
$texto str_replace(">","&gt;",$texto);
$texto str_replace("\r\n"," ",$texto);
$texto str_replace("\n"," ",$texto);
$texto str_replace("|","l",$texto);
$texto stripslashes($texto);

$nombre str_replace("<","&lt;",$nombre);
$nombre str_replace(">","&gt;",$nombre);
$nombre str_replace("|","l",$nombre);
$nombre stripslashes($nombre);

$mail str_replace("<","&lt;",$mail);
$mail str_replace(">","&gt;",$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.
__________________
aaa!!

Última edición por El_MiMo; 17/03/2005 a las 12:19