2009-07-23 8 views

Respuesta

1

La normalización es su mejor amigo en el sistema de comentarios/rango/votación. Aprenderlo. Muchos sitios ahora se están moviendo a PDO ... aprendan eso también.

no hay formas de hacerlo bien, correcto o incorrecto (hay formas), debe conocer los conceptos básicos y tomarlos desde allí. Si no tiene ganas de aprender, entonces quizás invierta en un framework como cakephp o zend framework, o en un sistema listo como WordPress o Joomla.

También recomendaría el libro wicked cool php scripts ya que tiene un ejemplo de sistema de comentarios en él.

+0

libro es bueno, pero no una solución ........... !!! – pratik

2

Puede crear una tabla de "comentarios", con una identificación como clave principal, luego agrega un campo de texto para capturar el texto insertado por el usuario y necesita otro campo para vincular la tabla de comentarios a la tabla de artículos (llave). Además, necesita un campo para almacenar al usuario que ha ingresado un comentario, este campo puede ser el correo electrónico del usuario. A continuación, se captura a través de GET o POST correo electrónico del usuario y hacer comentarios y se inserta todo en el DB:

"INSERT INTO comment (comment, email, approved) VALUES ('$comment', '$email', '$approved')" 

Este es un primer indicio. Por supuesto, agregar una función de comentario lleva un poco. Luego debería pensar en un formulario para permitir que el administrador apruebe los comentarios y cómo publicar los comentarios al final de los artículos.

+13

Además, lea una guía para evitar la inyección SQL –

+0

Estimado Jon, este comentario es simplemente inapropiado. – rtacconi

+0

rtacconi - ¿Por qué? –

6

Crear una nueva tabla denominada comentarios

Deben tener una columna que contiene el identificador del mensaje que están asignados.

Haga un formulario que agregue un nuevo comentario a esa tabla.

Un ejemplo (no probado así puede contener errores de sintaxis 'lil): I llaman una página con comentarios un post

Post.php

<!-- Post content here --> 

<!-- Then cmments below --> 
<h1>Comments</h1> 
<?php 
$result = mysql_query("SELECT * FROM comments WHERE postid=0"); 
//0 should be the current post's id 
while($row = mysql_fetch_object($result)) 
{ 
?> 
<div class="comment"> 
By: <?php echo $row->author; //Or similar in your table ?> 
<p> 
<?php echo;$row->body; ?> 
</p> 
</div> 
<?php 
} 
?> 
<h1>Leave a comment:</h1> 
<form action="insertcomment.php" method="post"> 
<!-- Here the shit they must fill out --> 
<input type="hidden" name="postid" value="<?php //your posts id ?>" /> 
<input type="submit" /> 
</form> 

insertcomment.php

<?php 
//First check if everything is filled in 
if(/*some statements*/) 
{ 
//Do a mysql_real_escape_string() to all fields 

//Then insert comment 
mysql_query("INSERT INTO comments VALUES ($author,$postid,$body,$etc)"); 
} 
else 
{ 
die("Fill out everything please. Mkay."); 
} 
?> 

Debe cambiar el código un poco para que funcione. No estoy haciendo tu tarea. Solo una parte;)

6

Es una pregunta difícil de responder sin más información. Hay una serie de cosas que debe considerar al implementar implementar comentarios en un sitio web existente.

¿Cómo abordarás el problema del correo no deseado? No importa cuán remoto sea su sitio web, los emisores de correo no deseado lo encontrarán y lo completarán en poco tiempo. Es posible que desee ver algo como reCAPTCHA (http://recaptcha.net/).

La estructura del sitio web también puede influir en cómo implementa sus comentarios. Son los comentarios para el sitio general, un producto o página en particular, o incluso otro comentario? Deberá conocer la relación entre el contenido y el comentario para poder definir correctamente la relación en la base de datos.Para decirlo de otra manera, usted sabe que quiere una dirección de correo electrónico, el comentario y si está aprobado o no, pero ahora necesitamos una forma de identificar a qué relación, en todo caso, está vinculado el comentario.

Si su sitio ya está establecido y construido en un marco de PHP (CakePHP por ejemplo), tendrá que abordar la forma de integrar su código correctamente con lo que ya está en su lugar.

Por último, hay una serie de recursos y tutoriales en la web para PHP. Si realiza una búsqueda rápida en Google para encontrar algo similar a "tutorial de PHP en el blog", estoy seguro de que encontrará cientos y la mayoría le mostrará paso a paso cómo implementar los comentarios.

+0

Ha explicado muy bien a qué problemas se enfrentará OP al crear una sección de comentarios en el sitio web, pero no contestó la pregunta y, lo que es más importante, creo que tampoco ha entendido la pregunta. OP pregunta cómo hacer una función básica de comentarios usando PHP y MySQL no porque quiera crear un sitio social, sino porque quiere saber "cómo usar PHP/MySQL para permitir que los usuarios afecten las páginas web", por lo que no le importa el correo no deseado. reCAPTCHA, relación entre el contenido y el comentario y otros problemas. – ands

1

Ésta es mi manera como lo hago comentarios (creo que es seguro):

<h1>Comment's:</h1> 
<?php 
$i = addslashes($_POST['a']); 
$ip = addslashes($_POST['b']); 
$a = addslashes($_POST['c']); 
$b = addslashes($_POST['d']); 
if(isset($i) & isset($ip) & isset($a) & isset($b)) 
{ 
    $r = mysql_query("SELECT COUNT(*) FROM $db.ban WHERE ip=$ip"); //Check if banned 
    $r = mysql_fetch_array($r); 
    if(!$r[0]) //Phew, not banned 
    { 
     if(mysql_query("INSERT INTO $db.com VALUES ($a, $b, $ip, $i)")) 
     { 
      ?> 
      <script type="text/javascript"> 
       window.location="/index.php?id=".<?php echo $i; ?>; 
      </script> 
      <?php 
     } 
     else echo "Error, in mysql query"; 
    } 
    else echo "Error, You are banned."; 
} 
$x = mysql_query("SELECT * FROM $db.com WHERE i=$i"); 
while($r = mysql_fetch_object($x) echo '<div class="c">'.$r->a.'<p>'.$row->b.'</p> </div>'; 

?> 
<h1>Leave a comment, pl0x:</h1> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="hidden" name="a" value="<?php $echo $_GET['id']; ?>" /> 
    <input type="hidden" name="b" value="<?php $echo $_SERVER['REMOTE_ADDR']; ?>" /> 
    <input type="text" name="c" value="Name"/></br> 
    <textarea name="d"> 
    </textarea> 
    <input type="submit" /> 
</form> 

Esto lo hace todo en una página (Esto es sólo la sección de comentarios, se necesita alguna configuración)

+0

Apuesto a que el operador ya recibió sus comentarios;) –

0

I Estoy trabajando en esto ahora mismo también. También debe agregar una fecha y hora del comentario. Lo necesitará más tarde cuando desee ordenar por más reciente.

Estos son algunos de los campos db que estoy usando.

id (auto incremented) 
name 
email 
text 
datetime 
approved 
Cuestiones relacionadas