Sistema de comentarios simple con captcha

Bueno he avierto otro post porque en el otro hay muchos comentarios de todo tipo, no se si aún lo necesias pero como hace poco me pidieron lo mismo te dejo el trabajo:

El sistema de comentarios estaba pensado para funcionar igual en diferentes secciones de la web... compartiendo tablas de la DB y solo modificando un campo entre las diferentes secciones.

SQL: 


CREATE TABLE IF NOT EXISTS `web_michelmin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`autor` varchar(50) NOT NULL,
`hora` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`comentario` text NOT NULL,
`seccion` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;



<?php

#~~ Connect.php
$host 'localhost';
$user 'root';
$pass '';
$db 'z_test'//nombre de la bd
$tabla 'web_michelmin'//nombre de la tabla a usar

$con mysql_connect($host$user$pass) or die(mysql_error());
mysql_select_db($db,$con) or die(mysql_error());

?> 



Parte que se agrega a la página:


<?php 
session_start
();
#~~ Comentarios a final de página; 

include_once('conect.php');

$seccion 'index'//Nombre que le quieras dar a ala seccion 

$comentarios mysql_query("SELECT comentario, autor FROM ".$tabla." WHERE seccion = '".$seccion."' "$con) or die(mysql_error());

echo 
'<table border="1">';

 

    while (
$coments mysql_fetch_array($comentarios)) { 

 

       echo 
'<tr><td colspan="2"><sub><strong>'.$coments['autor'] .'</strong></sub></td></tr> 

               <tr><td colspan="2">'
nl2br(htmlentities($coments['comentario'])) . '</td></tr>'

    } 

 

echo 
'<tr><td colspan="2"></td> 

      </tr><tr><td colspan="2">Escribe tu comentario: </td></tr> 

      <tr><td colspan="2"> 

          <form method="post" action="update.php"> 

            Autor: <input type="text" name="autor" size="31" maxlength="50" value="" /> 

        </td>
    </tr>
    <tr> 

        <td colspan="2"> 

            Comentario: <br /> 

            <textarea name="coment" cols="31"></textarea>  

            <input name="seccion" type="hidden" value="'
.$seccion.'" />
            
        </td>
    <tr>
        <td>
            Captcha:
        </td>
        <td>
            <img src="captcha.php" /> <br />
            <input type="text" name="captcha" size="10" maxlength="7" value="" />
            </div>
            <br /> 

            

        </td>
    </tr>

        <td colspan="2" align="center">
            <input name="Enviar" type="submit" /> 
        </td>
    </tr> 

        </form> 

    </table>'
;
    
    if (
$_GET['err'])
        echo 
"<b>Ha introducido un captcha incorrecto</b>";

?> 



se modifica la variable $seccion dandole el nombre de la página donde se incrustara el código sin el .php de esta forma separamos las diferentes páginas que tendrán un comentario y a la vez redirijimos en el update.php

update.php:
por errores con los headers no hago un include a conect.php...

<?php
session_start
();


$coment $_POST['coment'];
$seccion $_POST['seccion'];
$autor $_POST['autor'];

if (
$_POST['captcha'] && $_POST['captcha'] == $_SESSION['rand'])
{


$host 'localhost';
$user 'root';
$pass '';
$db 'z_test';
$tabla 'web_michelmin';
$con mysql_connect($host$user$pass) or die(mysql_error());
mysql_select_db($db,$con) or die(mysql_error());


$update mysql_query("INSERT INTO " $tabla " (id, autor, hora, comentario, seccion) VALUES (NULL, '" $autor "', CURRENT_TIMESTAMP, '" $coment "', '" $seccion "') "$con) or die (mysql_error());

header("location: "$seccion .".php");

} else
    
header("location: ".$seccion .".php?err=badcaptcha");
?> 


captcha.php (esta parte es de shell root si no me equivoco)

<?php

# Em3trix

session_start();

$x ImageCreateFrompng("captcha.PNG");

$numeros rand(0000,9999);
$letras "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

$final $letras{rand(1,50)};
$final .= $letras{rand(1,50)};
$final .= $letras{rand(1,50)};

$rand $numeros.$final;

$rand2 $rand[3].$rand[5].$rand[1].$rand[6].$rand[2].$rand[7].$rand[3];

$color imagecolorallocate($x,"250","0","0");
$string imagestring($x,5,"13","7","$rand2",$color);

$color1 imagecolorallocate($x,"250","250","0");
$color2 imagecolorallocate($x,"0","250","0");
$color3 imagecolorallocate($x,"0","0","250");

$linea imageline($x,"0","20","100","10",$color3);
$linea imageline($x,"0","10","20","100",$color1);
$linea imageline($x,"50","0","100","100",$color2);

ImageGIF($x);

$_SESSION['rand'] = $rand2;

?> 


Estilos css = 0 soy malo con eso y al final cada uno tiene su estilo xD así que espero os sirva.
2 Responses
  1. Anónimo Says:

    porque cambiaste de diseño, en el otro se veia el fondo y ahora ya no esta, sube el fondo man, lo necesito el fondo del captcha, era "fondo.PNG" mi msn es carlos.15_92@hotmail.com avisame!!!!!!!!


  2. nax Says:

    aqui lo tienes:
    http://img840.imageshack.us/img840/6636/captchab.png

    pero te sirve cualquier fondo que quieras crear....

    de todas formas este blog ya está cerrado (ver el index)

    te invito a que nos visites en skamasle.com