PHP / MySQL: как создать раздел комментариев на вашем сайте

Вместо того, чтобы спрашивать «как использовать PHP / MySQL, чтобы пользователи влияли на веб-страницы», я попрошу об этом, потому что я лучше разбираюсь в проектах и ​​примерах.

Итак, как бы я включил ОЧЕНЬ основную функцию комментариев, используя PHP и MySQL?

Создайте новую таблицу с комментариями

Они должны иметь столбец, содержащий идентификатор сообщения, которому они назначены.

Создайте форму, которая добавит новый комментарий к этой таблице.

Пример (не проверенный так может содержать синтаксические ошибки lil '): я вызываю страницу с комментариями 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."); } ?> 

Вы должны немного изменить код, чтобы он работал. Я не делаю домашнее задание. Только его часть;)

Трудный вопрос – ответить без дополнительной информации. Есть ряд вещей, которые следует учитывать при рассмотрении комментариев на существующем веб-сайте.

Как вы будете рассматривать проблему спама? Неважно, насколько удален ваш веб-сайт, спамеры найдут его, и они наполнит его в кратчайшие сроки. Возможно, вы захотите посмотреть что-то вроде reCAPTCHA ( http://recaptcha.net/ ).

Структура веб-сайта также может влиять на то, как вы выполняете свои комментарии. Являются ли комментарии для общего сайта, конкретного продукта или страницы или даже другого комментария? Вам нужно знать взаимосвязь между контентом и комментарием, чтобы вы могли правильно определить отношения в базе данных. Другими словами, вы знаете, что хотите получить адрес электронной почты, комментарий и одобрить его или нет, но теперь нам нужен способ определить, с чем связан, по крайней мере, комментарий.

Если ваш сайт уже установлен и построен на фреймворке PHP (например, CakePHP ), вам нужно будет решить, как правильно интегрировать ваш код с тем, что уже существует.

Наконец, в Интернете есть ряд ресурсов и учебных пособий для PHP. Если вы быстро выполните поиск Google по тексту «PHP blog tutorial», я уверен, что вы найдете сотни, и большинство покажет вам шаг за шагом, как реализовать комментарии.

Вы можете создать таблицу комментариев с идентификатором в качестве первичного ключа, затем добавить текстовое поле для захвата текста, вставленного пользователем, и вам понадобится другое поле, чтобы связать таблицу комментариев с таблицей статей (внешний ключ). Кроме того, вам нужно поле для хранения пользователя, который ввел комментарий, это поле может быть электронной почтой пользователя. Затем вы захватываете через GET или POST адрес электронной почты пользователя и комментируете, и вы вставляете все в БД:

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

Это первый намек. Конечно, добавление функции комментариев требует немного. Затем вы должны подумать о форме, чтобы администратор мог одобрить комментарии и как публиковать комментарии в конце статей.

Нормализация – ваш лучший друг в системе комментариев / рангов / голосов. Узнать его. Многие сайты теперь переходят к PDO … узнайте об этом.

нет правых, правильных или неправильных (ну есть) способов сделать это, вам нужно знать основные понятия и отбирать их оттуда. Если вы не хотите учиться, тогда, возможно, инвестируйте в рамки, такие как cakephp или zend framework, или готовые системы, такие как wordpress или joomla.

Я также рекомендую книгу злых классных php-скриптов, так как в ней есть пример системы комментариев.

Это мой способ делать комментарии (я думаю, что это безопасно):

 <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> 

Это делает все на одной странице (это только раздел комментариев, требуется некоторая конфигурация)

Я тоже работаю над этим прямо сейчас. Вы также должны добавить дату и время комментария. Вам понадобится это позже, когда вы захотите отсортировать его последним.

Вот некоторые из полей db, которые я использую.

 id (auto incremented) name email text datetime approved и id (auto incremented) name email text datetime approved