如何在我的博客上编写评论框?

时间:2010-06-10 18:57:35

标签: php javascript comments

显然,我是一名新手网页设计师。我正在使用php和sql来做所有引擎盖下的东西,但我想要一个视觉上吸引人的功能评论系统。

现在我只使用HTML表单,但看起来不太好。我应该使用javascript吗?让我入门的任何提示?

5 个答案:

答案 0 :(得分:6)

如果您只是想要评论而不是寻找学习经历,那么请切出一些角落并使用Disqus!这很容易设置。

  

现在我只使用HTML表单,但看起来不太好。我应该使用javascript吗?

如果您使用JavaScript,那么无论如何都会在那里的某个地方放置HTML表单。

基本上你想要:

  • 创建SQL表comments
  • 创建一个PHP脚本'comment.php'
  • 将代码添加到显示评论的所有页面的底部......
  • ...以及HTML <form>到您要评论的所有网页的底部,其中action属性指向您的'comment.php'脚本。

创建SQL表comments

使用以下列在数据库中创建表:

  • id - 唯一标识符
  • url - 评论过的页面的网址。
  • 作者 - 谁发表评论
  • 评论 - 留下的评论

一点SQL:

CREATE TABLE `comments`
    ( `id` INT NOT NULL AUTO_INCREMENT,
      `url` VARCHAR(255) NOT NULL ,
      `author` VARCHAR(255) NOT NULL ,
      `comment` TEXT NOT NULL ,
      PRIMARY KEY (id)
     )

没有承诺我的语法是完美的;)

创建一个PHP脚本'comment.php'

让它响应POST请求并在表comments中插入一行。 (为什么选择POST?了解Safe Methods

<?php
    $db = DB::connect(...);
    // I'm being a little lazy with the intricacies of PHP-DB interaction...
    // Be sure to validate the input a little.
    // You'll want to take some measures to prevent spoofing.
    $db->insert("INSERT INTO `comments` (`url`, `author`,`comment`) VALUES (?,?,?)", array($_POST['url'], $_POST['author'], $_POST['comment']));
    header("Location: ".$_POST['url']); // redirect back to the commented page
                                        // actually, I'm being lazy;the Location header is supposed to be a full url including protocol and domain etc
?>

请注意I've used placeholders ? in the SQL ...

将代码添加到显示注释的所有页面的底部

在包含评论的所有页面的底部,添加类似......

的内容
<?php
    $db = DB::connect(...);
    // I'm being a little lazy with the intricacies of PHP-DB interaction...
    $result = $db->query("SELECT * FROM `comments` WHERE `url`=?", array($_SERVER['REQUEST_URI']));
    while($row = $result->fetchRow()) }
        echo "<div class=\"comment\">";
        echo "<div class=\"author\">Comment By:".htmlentities($row['author'])."</div>";
        echo htmlentities($row['comment']);
        echo "</div>";
    }
?>

请注意使用htmlentities来阻止XSS

将HTML <form>添加到所有页面的底部

现在,要让用户能够添加评论,您需要一个HTML <form>

<form method="post" action="/path/to/comments.php">
<label for="author">Your name:</label><input name="author" id="author" />
<textarea name="comment"></textarea>
<input type="hidden" name="url" value="<?php echo htmlentities($_SERVER['REQUEST_URI'])?>" />
<input type="submit" />
</form>

然而,这样做,你只有文字(没有很酷的引力或任何东西),而你真的只是信任他们的名字(没有OpenID认证)。你也没有真正的评论格式(它们都是纯文本)。

所有这些都可以通过使用Disqus来解决。

答案 1 :(得分:1)

对此有无限的答案。简单的答案是使用/学习CSS。

如果你正在唱一个像jQuery这样的JS库,那么你可以使用其中一个已经为你提供css格式的插件。

答案 2 :(得分:1)

Imho如果您想要的只是评论,那么请查看此服务:

http://disqus.com

您可以在此处查看工作示例:

http://mashinaizec.com/mons-2

它非常容易实现,只需复制您在网站上获得的代码,然后将其粘贴到您的网页中即可。上述网站的代码是:

<div id="disqus_thread"></div>
<script type="text/javascript">
/**
* var disqus_identifier; [Optional but recommended: Define a unique identifier (e.g. post id or slug) for this thread] 
*/
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://mashinazec.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript=mashinazec"></a></noscript>

当我只需要几页的评论时,我发现这项服务非常有帮助。

实施后,只需使用CSS即可轻松按照自己的方式设计样式。

答案 3 :(得分:0)

您可以安装wordpress或类似的博客软件平台。然后可以通过CSS轻松定制外观。

答案 4 :(得分:0)

要快速修整表单,请查看JQueryUI的主题滚轴主题。

http://jqueryui.com/