defr/DualBlog
annotate comment.php @ 65:434751e80c88
Utilisation de la classe Requete dans tb.php
Cela permet de gérer automatiquement l'ajout des quotes si on a pas de
magic_quotes notamment, empechant les injections SQL :-)
Cela permet de gérer automatiquement l'ajout des quotes si on a pas de
magic_quotes notamment, empechant les injections SQL :-)
| author | Franck Deroche <webmaster@defr.org> |
|---|---|
| date | Tue Mar 11 16:33:07 2008 +0100 (2008-03-11) |
| parents | 25c6e59f019e |
| children | 464f4b94ee27 |
| rev | line source |
|---|---|
| webmaster@0 | 1 <?php |
| webmaster@16 | 2 require_once("classes.php"); |
| webmaster@16 | 3 $sk = Factory::getSkeleton(); |
| webmaster@0 | 4 $id = $_GET['id']; |
| webmaster@16 | 5 $Data = Factory::getDB(); |
| webmaster@0 | 6 $Req = new Requete; |
| webmaster@16 | 7 |
| webmaster@16 | 8 |
| webmaster@16 | 9 // Enregistrement éventuel d'un commentaire dans la base de données |
| webmaster@0 | 10 $Auteur=$Req->get('Auteur'); |
| webmaster@0 | 11 $Adresse=$Req->get('Adresse'); |
| webmaster@0 | 12 $AdresseMail = $Req->get('AdresseMail'); |
| webmaster@0 | 13 $Comment=$Req->get('Comment'); |
| webmaster@0 | 14 $DateComment=gmdate("Y-m-d H:i:s", time() + 3600*2); |
| webmaster@64 | 15 |
| webmaster@24 | 16 // Si on essaie d'ajouter un commentaire et que la graine n'est pas bonne |
| webmaster@48 | 17 if(!empty($Comment) && $_SESSION['commentSeed'] != $Req->get('seed', null, 't')) |
| webmaster@24 | 18 die("L'ajout de commentaire doit se faire à partir du formulaire de ce blog"); |
| webmaster@64 | 19 |
| webmaster@64 | 20 if(!is_null($Auteur) && $Auteur!='Votre Nom' && $Auteur != $Adresse && !empty($Comment) && strlen($Comment) > 6 && strpos($Comment, 'xanga') === false) { |
| webmaster@0 | 21 // Prévention d'un "cassage" par ajout d'un commentaire incorrectement formaté |
| webmaster@0 | 22 $ip = $_SERVER['REMOTE_ADDR']; |
| webmaster@0 | 23 $Auteur = str_replace(array('<', '>'), array('<', '>'), $Auteur); |
| webmaster@64 | 24 |
| webmaster@64 | 25 /* Akismet */ |
| webmaster@64 | 26 require_once('akismet.class.php'); |
| webmaster@64 | 27 $comment = array( |
| webmaster@64 | 28 'author' => $Auteur, |
| webmaster@64 | 29 'email' => $AdresseMail, |
| webmaster@64 | 30 'website' => $Adresse, |
| webmaster@64 | 31 'body' => $Comment, |
| webmaster@64 | 32 'permalink' => 'http://defr.org/blog/posts/' . $id |
| webmaster@64 | 33 ); |
| webmaster@64 | 34 $ak = new akismet('http://defr.org/blog', AKISMET_API_KEY, $comment); |
| webmaster@64 | 35 if(!$ak->errorsExist()) |
| webmaster@64 | 36 $visibleBool = !$ak->isSpam(); |
| webmaster@64 | 37 |
| webmaster@64 | 38 // Suppression d'un gros lourd |
| webmaster@64 | 39 $visibleBool &= (ereg('^ma[0-9]+zda$', $Auteur) === false); |
| webmaster@64 | 40 $visible = $visibleBool ? 1 : 0; |
| webmaster@64 | 41 |
| webmaster@0 | 42 if(DOMDocument::loadXML('<comment>' . $Comment . '</comment>')) { |
| webmaster@0 | 43 $Data->debugQuery(" |
| webmaster@64 | 44 INSERT INTO Commentaires(MessId, Auteur, Adresse, AdresseMail, Comment, DateComment, ip, Visible) |
| webmaster@64 | 45 VALUES({$id}, '{$Auteur}', '{$Adresse}', '{$AdresseMail}', '{$Comment}', '{$DateComment}', '{$ip}', $visible) |
| webmaster@0 | 46 "); |
| webmaster@0 | 47 $Data->Query("UPDATE Mess SET NbCommentaires=NbCommentaires+1 WHERE num_mess={$id}"); |
| webmaster@64 | 48 if($visibleBool) |
| webmaster@64 | 49 mail(ADMIN_MAIL, 'Nouveau commentaire de ' . $Auteur, $Auteur . " vient de mettre en ligne le commentaire suivant: \n" . wordwrap($Comment, 70)); |
| webmaster@0 | 50 } |
| webmaster@0 | 51 else { |
| webmaster@0 | 52 $infos = 'Votre commentaire doit etre fait de XML valide pour apparaitre.'; |
| webmaster@0 | 53 } |
| webmaster@0 | 54 } |
| webmaster@0 | 55 |
| webmaster@16 | 56 // Ajout du post au squelette |
| webmaster@0 | 57 $Data->Query("SELECT * FROM Mess WHERE num_mess = {$id}"); |
| webmaster@0 | 58 $row = $Data->GetRow(); |
| webmaster@16 | 59 $post = new Post($row); |
| webmaster@16 | 60 $sk->addBlogPost($post->format()); |
| webmaster@36 | 61 $sk->checkUpdateTime(strtotime($row['DatePost'])); |
| webmaster@16 | 62 |
| webmaster@22 | 63 // On définit le titre |
| webmaster@22 | 64 $sk->setTitle($row['Titre'] . ' - Dual Blog'); |
| webmaster@22 | 65 |
| webmaster@16 | 66 // Récupération des commentaires |
| webmaster@1 | 67 $Data->Query("SELECT * FROM Commentaires Where MessId={$id} AND Visible=1 ORDER BY num_comm"); |
| webmaster@61 | 68 $defaultGravatar = urlencode(BLOG_DEFAULT_GRAVATAR); |
| webmaster@0 | 69 while(0 !== ($row = $Data->GetRow())) { |
| webmaster@32 | 70 $commentTpl = new Template(Skeleton::getTemplateFile('comment')); |
| webmaster@57 | 71 $dateFormatee = strftime(" à %Hh%M, le %A %d %B %Y", strtotime($row['DateComment'])); |
| webmaster@33 | 72 $dateFormateeISO = date('c', strtotime($row['DateComment'])); |
| webmaster@16 | 73 $AdresseMail = $row['AdresseMail']; |
| webmaster@16 | 74 $grav_id = md5($AdresseMail); |
| webmaster@23 | 75 $grav_url = 'http://www.gravatar.com/avatar.php?gravatar_id=' . $grav_id . '&size=50&default=' . $defaultGravatar; |
| webmaster@16 | 76 $Comment = nl2br($row['Comment']); |
| webmaster@16 | 77 $Comment = str_replace(" & ", " & ", $Comment); |
| webmaster@16 | 78 $commentFrag = $commentTpl->getDocumentFragment(); |
| webmaster@16 | 79 $commentFrag->appendXML($Comment); |
| webmaster@16 | 80 $params = array( |
| webmaster@16 | 81 '#gravatar@src' => $grav_url, |
| webmaster@30 | 82 '#auteur@href' => $post->getURL() . '#c' . $row['num_comm'], |
| webmaster@16 | 83 '#auteur@name' => 'c' . $row['num_comm'], |
| webmaster@16 | 84 '#auteur' => $row['Auteur'], |
| webmaster@16 | 85 'commentDate' => $dateFormatee, |
| webmaster@33 | 86 'commentDateISO' => $dateFormateeISO, |
| webmaster@32 | 87 'commentNumber' => $row['num_comm'], |
| webmaster@16 | 88 'comment' => $commentFrag, |
| webmaster@16 | 89 ); |
| webmaster@16 | 90 if(stristr($row['Adresse'], 'http://')) { |
| webmaster@16 | 91 $params['#auteur@href'] = $row['Adresse']; |
| webmaster@16 | 92 } |
| webmaster@32 | 93 $commentTpl->setParams(array_merge($post->getTplParams(), $params)); |
| webmaster@16 | 94 $sk->addBlogPost($commentTpl); |
| webmaster@36 | 95 $sk->checkUpdateTime(strtotime($row['DateComment'])); |
| webmaster@0 | 96 } |
| webmaster@16 | 97 |
| webmaster@24 | 98 // Génération de la graine (cette dernière permet de s'assurer |
| webmaster@24 | 99 // que l'essai d'ajout de commentaire provient bien de ce |
| webmaster@24 | 100 // formulaire, et en conséquence devrait permettre de réduire |
| webmaster@24 | 101 // le spam. |
| webmaster@24 | 102 $seed = md5(time() . 'DualBlog'); |
| webmaster@24 | 103 $_SESSION['commentSeed'] = $seed; |
| webmaster@24 | 104 |
| webmaster@24 | 105 // Ajout du formulaire d'enregistrement de commentaires |
| webmaster@16 | 106 $commentForm = new Template('commentForm.xml'); |
| webmaster@24 | 107 $commentForm->setParams(array('#Seed@value' => $seed)); |
| webmaster@31 | 108 $sk->setParams(array('commentForm' => $commentForm)); |
| webmaster@16 | 109 |
| webmaster@16 | 110 echo $sk; |
| webmaster@0 | 111 ?> |
