PHP / MySQL: web sitenize bir yorum bölümü oluşturmak için nasıl [kapalı]

6 Cevap php

Bunun yerine 'kullanıcılar web sayfalarını etkilemesine izin PHP / MySQL kullanmak için nasıl' soran ben proje ve örneklerin daha iyi öğrenirler, çünkü bu soracağım.

Peki nasıl PHP ve MySQL kullanarak bir çok temel bir yorum özelliğini birleştirmek istiyorsunuz?

6 Cevap

Daha fazla bilgi olmadan, cevaplaması zor bir soru. Varolan web sitesinde yorum uygulanması bakarken düşünmelisiniz şeyler vardır.

Nasıl spam sorunu ele alacak? Bu web sitesi ne kadar uzak olduğunu fark etmez, spam onu ​​bulmak OLACAK ve onlar hiçbir zaman o kadar dolu olacak. Sen Güvenlik kodu gibi bir şey içine bakmak isteyebilirsiniz (http://recaptcha.net/).

Web sitesinin yapısı da sizin yorumlarınızı uygulamak nasıl etkileyebilir. Genel site, belirli bir ürün veya sayfa, hatta başka Yorumlarınız için yorumlar mısınız? Eğer düzgün bir veritabanında ilişki tanımlayabilirsiniz böylece içerik ve yorumun arasındaki ilişkiyi bilmek gerekir. Bir başka deyişle, size bir e-posta adresi, Yorum istediğini biliyorum, ve onaylanmış olup olmadığını, ama şimdi biz eğer bir şey, açıklama bağlı ne, tanımlamak için bir yol gerekir.

Siteniz zaten kurulmuş ve (örneğin CakePHP) bir PHP çerçevesinde inşa edilmiştir Eğer bir yerde zaten ne ile düzgün kodunuzu nasıl entegre ele gerekir.

Son olarak, PHP web kaynakları ve öğreticiler vardır. Eğer eminim "PHP blog öğretici" çizgisinde bir şey için hızlı bir google arama yaparsanız yüzlerce bulacaksınız ve çoğunluğu yorumları uygulamak için nasıl adım adım gösterecektir.

Birincil anahtar olarak bir kimliğe sahip, bir 'yorum' tablo oluşturabilirsiniz, daha sonra kullanıcı tarafından eklenen metin yakalamak için bir metin alanına eklemek ve makale tablo (yabancı anahtar) için açıklama tablo bağlantı başka bir alan gerekir. Artı bir yorum girmiş kullanıcıya depolamak için bir alan gerekir, bu alan kullanıcının e-posta olabilir. Sonra GET veya POST üzerinden kullanıcının e-posta yakalamak ve yorumlamak ve DB her şeyi eklemek:

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

Bu bir ilk ipucu. Tabii bir yorum özelliğini ekleyerek o biraz sürer. Sonra yönetici yorumları onaylamak ve nasıl makalelerin sonunda yorumlarını yayınlamak için izin için bir form düşünmesi gerekir.

Comments adlı yeni bir tablo oluşturun

Onlar atanan yazının id içeren bir sütun olmalıdır.

Bu tabloya yeni bir yorum katan bir form yapmak.

An example (not tested so may contain lil' syntax errors): I call a page with comments a 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.");
}
?>

Bunu çalışması için kodu biraz değiştirmeniz gerekir. I'n ödevini yapmıyor. Sadece bunun bir parçası ;)

Normalization is your best friend in comment/rank/vote system. Learn it. A lot of sites are now moving to PDO ... learn that as well.

hiçbir doğru, sağ-er, ya da yanlış (kuyu vardır) bunu yapmanın yolu vardır, sen temel kavramları bilmek ve orada onları almak gerekir. Eğer öğrenme gibi hissetmiyorum IF, o zaman belki CakePHP'de veya Zend Framework, veya wordpress veya joomla gibi hazır sistemi gibi bir çerçevede yatırım.

Bunun içinde bir yorum sistemi örnek vardır gibi ben de wicked cool php scripts kitap tavsiye ederim.

Bu i yorumlar (Ben onun güvenli düşünüyorum) yapmak benim yolum:

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

Bu tek bir sayfada (Bu yalnızca yorumları bazı yapılandırma tabi bölüm olan) yok

Ben şimdi de bu hak üzerinde çalışıyorum. Ayrıca yorumun bir datetime eklemek gerekir. En son sıralamak istediğiniz zaman buna daha sonra ihtiyacınız olacak.

İşte kullanıyorum db alanlardan bazılarıdır.

id (auto incremented)
name
email
text
datetime
approved