2010-07-25 6 views
0

Je suis en train de coder mon tout premier blog. Avec l'aide de divers tutoriels, et d'autres forums, j'ai réussi à rassembler un code de semi-travail.Implémentation de Gravatar dans un système de commentaire personnalisé

En ce moment j'ai un code qui prend et affiche le commentaire, mais le problème est que je souhaite afficher des Gravatars à côté de chaque commentaire. Je me demandais exactement comment j'allais mettre en œuvre le code qu'ils ont fourni sur leur website.

Voici mon formulaire de commentaire actuel:

  <?php 

} 
$commenttimestamp = strtotime("now"); 

$sql = "SELECT * FROM php_blog_comments WHERE entry='$id' ORDER BY timestamp"; 
$result = mysql_query ($sql) or print ("Can't select comments from table php_blog_comments.<br />" . $sql . "<br />" . mysql_error()); 
while($row = mysql_fetch_array($result)) { 
    $timestamp = date("l F d Y", $row['timestamp']); 
    printf("<hr />"); 
    print("<p>" . stripslashes($row['comment']) . "</p>"); 
    printf("<p>Comment by <a href=\"%s\">%s</a> @ %s</p>", stripslashes($row['url']), stripslashes($row['name']), $timestamp); 
    printf("<hr />"); 
} 
?> 



    <form method="post" action="process.php"> 

    <p><input type="hidden" name="entry" id="entry" value="<?php echo $id; ?>" /> 

    <input type="hidden" name="timestamp" id="timestamp" value="<?php echo $commenttimestamp; ?>"> 

    <strong><label for="name">Name:</label></strong> <input type="text" name="name" id="name" size="25" /><br /> 

    <strong><label for="email">E-mail:</label></strong> <input type="text" name="email" id="email" size="25" /><br /> 

    <strong><label for="url">URL:</label></strong> <input type="text" name="url" id="url" size="25" value="http://" /><br /> 

    <strong><label for="comment">Comment:</label></strong><br /> 
    <textarea cols="25" rows="5" name="comment" id="comment"></textarea></p> 

    <p><input type="submit" name="submit_comment" id="submit_comment" value="Add Comment" /></p> 

    </form> 

Si vous souhaitez que je posterai le php qui traite chaque commentaire ici tout aussi bien demander ci-dessous.

Mon code maintenant:

<?php 

    function get_gravatar($email, $s = 80, $d = 'mm', $r = 'g', $img = false, $atts = array()) { 
     $url = 'http://www.gravatar.com/avatar/'; 
     $url .= md5(strtolower(trim($email))); 
     $url .= "?s=$s&d=$d&r=$r"; 
     if ($img) { 
      $url = '<img src="' . $url . '"'; 
      foreach ($atts as $key => $val) 
       $url .= ' ' . $key . '="' . $val . '"'; 
      $url .= ' />'; 
     } 
     return $url; 
    } 

} 
$commenttimestamp = strtotime("now"); 

$sql = "SELECT * FROM php_blog_comments WHERE entry='$id' ORDER BY timestamp"; 
$result = mysql_query ($sql) or print ("Can't select comments from table php_blog_comments.<br />" . $sql . "<br />" . mysql_error()); 
while($row = mysql_fetch_array($result)) { 
    $timestamp = date("l F d Y", $row['timestamp']); 
    printf("<hr />"); 
    print("<p>" . stripslashes($row['comment']) . "</p>"); 
    printf("<p>Comment by <a href=\"%s\">%s</a> @ %s</p>", stripslashes($row['url']), stripslashes($row['name']), $timestamp); 
    echo $imagetag = "<img src='" . get_gravatar($email) . "' />"; 
    printf("<hr />"); 
} 
?> 
+0

Quel est le problème? On dirait que vous avez déjà le code Gravatar ... – Skilldrick

+0

Ça venait de moi qui essayait. Je l'ai enlevé maintenant. J'ai également édité le post pour qu'il revienne à son état d'origine. –

+0

vous n'appelez jamais 'get_gravatar (...)' ainsi il ne rend jamais. - (ou est-ce que je manque un autre problème?) – scunliffe

Répondre

1

Vous voulez une balise d'image dont src provient de la fonction gravatar.

Quelque chose comme:

$imagetag = "<img src='" . get_gravatar($email_address) . ' />"; 

(. Vous aurez besoin de echo cette variable où vous voulez afficher)

Le seul paramètre requis de la fonction get_gravatar est l'adresse e-mail, si juste passez ceci à get_gravatar et vous obtenez l'url de l'image gravatar.

+0

Je l'ai maintenant affichant un avatar maintenant. Mais il ne montre pas mon Gravatar personnel. J'ai ajouté le nouveau code ci-dessus. –

+0

Passez-vous votre adresse e-mail? Je pense vraiment que vous devriez prendre le temps d'apprendre un peu de base de PHP - ça va vraiment aider. Jetez un oeil à http://www.w3schools.com/php/default.asp – Skilldrick

1

Vous pouvez également utiliser le service Libravatar qui fournit une alternative gravatar compatible mais open source et fédérée.

Il a une belle bibliothèque PHP - Services_Libravatar - c'est facile à utiliser:

<?php 
require_once 'Services/Libravatar.php'; 
$sla = new Services_Libravatar(); 
$imgUrl = $sla->getUrl('[email protected]'); 
+0

D'accord, Libravatar est une amélioration: un service fédéré où les utilisateurs choisissent la partie à laquelle faire confiance pour gérer leur image. – bignose

Questions connexes