2009-07-23 19 views

Odpowiedz

1

Normalizacja jest Twoim najlepszym przyjacielem w systemie komentarzy/rang/głosów. Naucz się tego. Wiele witryn przechodzi teraz na PDO ... Dowiedz się także.

Nie ma dobrych, właściwych lub złych (cóż jest) sposobów robienia tego, trzeba znać podstawowe pojęcia i zabrać je stamtąd. Jeśli nie masz ochoty się uczyć, to być może zainwestuj w framework, taki jak cakephp lub zend framework, lub gotowy system, taki jak wordpress lub joomla.

Polecam również książkę wicked cool php scripts, ponieważ zawiera przykładowy system komentarzy.

+0

książka jest dobra, ale nie jest rozwiązaniem ........... !!! – pratik

2

Możesz utworzyć tabelę komentarzy z identyfikatorem jako kluczem podstawowym, a następnie dodać pole tekstowe do przechwytywania tekstu wstawionego przez użytkownika i potrzebujesz innego pola do połączenia tabeli komentarzy z tabelą artykułów klawisz). Dodatkowo do zapisania użytkownika, który wprowadził komentarz, potrzebne jest pole, to pole może być adresem e-mail użytkownika. Następnie uchwycić poprzez GET lub POST email i komentarz użytkownika i włożeniu wszystko w DB:

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

Jest to pierwsza wskazówka. Oczywiście dodanie funkcji komentarza zajmuje trochę czasu. Następnie powinieneś pomyśleć o formularzu, który umożliwi administratorowi zatwierdzanie komentarzy i publikowanie komentarzy na końcu artykułów.

+13

Przeczytaj także poradnik, jak unikać wstrzykiwania SQL –

+0

Drogi Jon, ten komentarz jest nieodpowiedni. – rtacconi

+0

rtacconi - Dlaczego tak? –

6

Utwórz nową tabelę o nazwie komentarze

Powinny one posiadać kolumnę zawierającą identyfikator stanowiska są one przypisane do.

Utwórz formularz, który dodaje nowy komentarz do tego stołu.

Przykładem (nie testowane więc mogą zawierać błędy składniowe Lil”): Wzywam stronę z komentarzami 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."); 
} 
?> 

Musisz trochę zmienić kod, aby działał. Nie robię twojej pracy domowej. Tylko część tego;)

6

Trudno odpowiedzieć bez dodatkowych informacji. Jest kilka rzeczy, które powinieneś rozważyć patrząc na implementację komentowania istniejącej strony.

Jak rozwiązać problem spamu? Nie ma znaczenia, jak odległa jest twoja strona internetowa, spamerzy ją znajdą i szybko ją zapełnią. Możesz zajrzeć do czegoś takiego jak reCAPTCHA (http://recaptcha.net/).

Struktura strony może również wpływać na sposób implementacji komentarzy. Czy komentarze dotyczą całej witryny, konkretnego produktu lub strony, czy nawet innego komentarza? Musisz znać relację między treścią a komentarzem, aby poprawnie zdefiniować relację w bazie danych.Mówiąc inaczej, wiesz, że potrzebujesz adresu e-mail, komentarza i tego, czy jest on zatwierdzony, czy nie, ale teraz potrzebujemy sposobu, by zidentyfikować, do którego komentarza jest dołączony komentarz.

Jeśli twoja strona jest już założona i zbudowana na szkielecie PHP (na przykład CakePHP), musisz się dowiedzieć, jak poprawnie zintegrować swój kod z tym, co już istnieje.

Wreszcie, istnieje wiele zasobów i samouczków w sieci dla PHP. Jeśli zrobisz szybkie wyszukiwanie w Google o czymś podobnym do "samouczka na blogu PHP", na pewno znajdziesz setki, a większość pokaże ci krok po kroku, jak zaimplementować komentarze.

+0

Dobrze wyjaśniłeś, jakie problemy napotka OP podczas tworzenia sekcji komentarzy na stronie internetowej, ale nie odpowiedziałeś na to pytanie i, co ważniejsze, myślę, że również nie zrozumiałeś tego pytania. OP pyta, jak zrobić podstawową funkcję komentarza przy użyciu PHP i MySQL, nie dlatego, że chce stworzyć serwis społecznościowy, ale dlatego, że chce wiedzieć "jak używać PHP/MySQL, aby umożliwić użytkownikom wpływ na strony internetowe", więc nie przejmuje się spamem, reCAPTCHA, związek między treścią a komentarzem i innymi problemami. – ands

1

To jest moja droga i nie komentarze (myślę, że to bezpieczne):

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

to robi to wszystko na jednej stronie (To jest tylko część komentarzy, potrzebny jest jakiś konfiguracja)

+0

Założę się, że op ma już swoje komentarze;) –

0

I Pracuję nad tym teraz. Powinieneś również dodać datetime komentarza. Będziesz potrzebować tego później, gdy chcesz posortować według najnowszych.

Oto niektóre z pól db, których używam.

id (auto incremented) 
name 
email 
text 
datetime 
approved 
Powiązane problemy