2009-07-23 11 views

答えて

1

ノーマライゼーションは、コメント/ランク/投票システムであなたの親友です。勉強しなさい。 多くのサイトがPDOに移行しています...そのことも学びます。

これを行う方法は正しくない、正しくない、間違っている、基本概念を知ってそこから取り出す必要があります。学習したくないと思ったら、cakephpやzend frameworkのようなフレームワークや、wordpressやjoomlaのような準備が整ったシステムに投資してください。

私はまた、その中にコメントシステムの例があるので、wicked cool php scriptsという本をお勧めしたいと思います。

+0

本は良いですが解決策ではありません。 – pratik

2

idを主キーとする「コメント」テーブルを作成し、ユーザーが挿入したテキストをキャプチャするテキストフィールドを追加し、コメントテーブルをアーティクルテーブルにリンクする別のフィールドが必要になりますキー)。さらに、コメントを入力したユーザーを格納するフィールドが必要な場合、このフィールドはユーザーの電子メールになります。その後、GETやPOSTユーザーの電子メールやコメントを経由してキャプチャして、あなたは、DB内のすべて挿入します。これは最初のヒントで

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

を。もちろん、コメント機能を追加するにはちょっと時間がかかります。次に、管理者にコメントを承認させるフォームと、記事の最後にコメントを公開する方法について考える必要があります。

+13

また、SQLインジェクションを避けるためのガイドをお読みください –

+0

親愛なるJonさん、このコメントは不適切です。 – rtacconi

+0

rtacconi - なぜそうですか? –

6

彼らは、彼らが割り当てられているポストのIDを含む列を持つ必要がありますコメント

と呼ばれる新しいテーブルを作成します。

この表に新しいコメントを追加するフォームを作成します。

例(そうリル構文エラーを含むことがテストされていません): 私は

<?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."); 
} 
?> 
insertcomment.php

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> 

ポストのコメントでページを呼び出します

コードを少し変更して機能させる必要があります。あなたの宿題をやっていません。 )その一部のみ;

6

これ以上の情報がないと難しい質問です。既存のウェブサイトでのコメントの実装を検討する際には、いくつか考慮すべき点があります。

スパムの問題をどのように解決しますか?あなたのウェブサイトがどのくらい離れているかは関係ありません。スパマーはそれを見つけて、すぐにそれを埋めます。あなたはreCAPTCHA(http://recaptcha.net/)のようなものに目を向けたいかもしれません。

ウェブサイトの構造によって、コメントの実装方法にも影響する場合があります。サイト全体、特定の製品やページ、または別のコメントに対するコメントはありますか?コンテンツとコメントの関係を知る必要があるため、データベース内の関係を適切に定義することができます。別の言い方をすれば、電子メールアドレス、コメント、承認されているかどうかを知ることができますが、今はコメントがリンクされているかどうかを特定する方法が必要です。

あなたのサイトが既に確立されPHPフレームワーク(例えばCakePHP)上に構築されている場合は、コードを適切な場所に適切に統合する方法に対処する必要があります。

最後に、PHPのWeb上に多数のリソースとチュートリアルがあります。 「PHPブログチュートリアル」の行に沿って何かをすばやくGoogle検索すると、何百を見つけることができます。大半は、コメントを実装する方法を段階的に示します。

+0

あなたはウェブサイトでコメントセクションを作成するときにOPが直面する問題をうまく説明しましたが、あなたはその質問に答えなかったし、もっと重要なのはあなたもその質問を理解していないと思います。 OPは、彼がソーシャルサイトを作りたいと思っているのではなく、「PHP/MySQLを使ってWebページに影響を与える方法」を知りたいので、PHPとMySQLを使って基本的なコメント機能を作る方法を尋ねているので、 reCAPTCHA、コンテンツとコメントの関係、その他の問題。 – ands

1

この私が私の方法であるとコメント(私はその安全なと思います):

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

これは、1ページにすべてを行います(これは、いくつかの設定が必要とされている、唯一のコメント欄で)

+0

私はopに既に彼のコメントがあると思う;) –

0

I今でもこのことに取り組んでいます。また、コメントの日時を追加する必要があります。最近の順に並べ替える場合は、後で必要になります。

ここに私が使用しているDBフィールドのいくつかがあります。

id (auto incremented) 
name 
email 
text 
datetime 
approved 
関連する問題