我不会问'如何使用PHP / MySQL让用户影响网页',我会问这个问题,因为我从项目和示例中学到了更多。
那么我如何使用PHP和MySQL合并一个非常基本的评论功能呢?
答案 0 :(得分:6)
如果没有更多信息,这是一个难以回答的问题。在查看在现有网站上实施评论时,您应该考虑许多事项。
您如何解决垃圾邮件问题?无论您的网站有多远,垃圾邮件发送者都会找到它并且它们会立即填满它并不重要。您可能希望查看类似reCAPTCHA(http://recaptcha.net/)的内容。
网站的结构也可能会影响您实施评论的方式。是针对整个网站,特定产品或网页的评论,还是其他评论?您需要知道内容和注释之间的关系,以便您可以在数据库中正确定义关系。换句话说,你知道你想要一个电子邮件地址,评论,以及它是否被批准,但现在我们需要一种方法来识别评论链接的内容(如果有的话)。
如果您的站点已经建立并构建在PHP框架上(例如CakePHP),那么您需要解决如何正确地将代码与现有代码集成的问题。
最后,网上有很多关于PHP的资源和教程。如果你快速谷歌搜索“PHP博客教程”的内容,我相信你会找到数百个,大多数人会一步一步地向你展示如何实施评论。
答案 1 :(得分:5)
创建一个名为comments
的新表他们应该有一个列,其中包含分配给他们的帖子的ID。
制作一个表格,为该表添加新评论。
示例(未经过测试可能包含lil'语法错误): 我打电话给评论帖子的页面
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.");
}
?>
您必须稍微更改代码才能使其正常工作。我不做你的功课。只是它的一部分;)
答案 2 :(得分:0)
规范化是评论/排名/投票系统中最好的朋友。学习它。 许多网站现在正在转向PDO ......也要了解它。
没有正确的,正确的或错误的(有)方法,你需要了解基本概念并从中获取它们。如果您不想学习,那么可能会投资像cakephp或zend框架这样的框架,或像wordpress或joomla这样的现成系统。
我还推荐这本书wicked cool php scripts,因为它有一个评论系统示例。
答案 3 :(得分:0)
您可以创建一个'comment'表,id为主键,然后添加一个文本字段来捕获用户插入的文本,您需要另一个字段将注释表链接到文章表(外键) )。另外,您需要一个字段来存储已输入评论的用户,此字段可以是用户的电子邮件。然后通过GET或POST捕获用户的电子邮件和评论,然后在数据库中插入所有内容:
"INSERT INTO comment (comment, email, approved) VALUES ('$comment', '$email', '$approved')"
这是第一个提示。当然添加评论功能需要一点点。然后你应该考虑一个表单让管理员批准评论,以及如何在文章的最后发表评论。
答案 4 :(得分:0)
这是我做评论的方式(我认为它是安全的):
<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>
这一切都在一个页面中完成(这只是评论部分,需要一些配置)
答案 5 :(得分:-1)
我现在正在研究这个问题。您还应该添加评论的日期时间。如果你想按最近的时间排序,你将需要这个。
以下是我正在使用的一些数据库字段。
id (auto incremented)
name
email
text
datetime
approved