En ce qui concerne les systèmes nationaux de commentaires sociaux, nous devons mentionner quelques services représentatifs tels que Duosuo, Denglu, Youyan, Comments, NetEase Cloud Posts et Sohu Changyan. Il y a quelques années, lorsque les commentaires sociaux sont devenus populaires, les systèmes de commentaires fournis avec des programmes tels que WordPress n'étaient pas utilisés. Certains Weibo intégrés comme commentaires sur les sites Web, et certains utilisaient des services tiers tels que Duosuo, Denglu et Youyan pour remplacer les commentaires. . de.

L’un des avantages de l’utilisation d’un système de commentaires sociaux tiers est qu’il évite aux commentateurs d’avoir à se connecter. Cependant, à mon avis, le fait que les données des commentaires soient stockées entre les mains d’un tiers présente un inconvénient fatal. En d'autres termes, en tant que blogueur, je ne peux pas garantir la sécurité des données du site Web. Une fois le service tiers arrêté, même si je peux exporter les données des commentaires, cela consommera beaucoup de temps et d'énergie.

Revenons maintenant à certains services représentatifs tels que Duosuo, Denglu, Youyan, Comments, NetEase Cloud Posts et Sohu Changyan. Ceux qui sont actuellement « à moitié morts » sont Youyan et Sohu Changyan. D'autres ont été officiellement déclarés « morts ». en action » (y compris le post de suivi de NetEase Cloud sur le fait d'être « mort en action »). Certaines personnes diront peut-être qu'il existe également Youyan et Sohu Changyan qui peuvent être utilisés ?

Installation et utilisation du système de commentaires PHP open source gratuit HashOver - le système de commentaires auto-construit remplace les services tiers

À l'heure actuelle, le site officiel de Youyan n'est pratiquement pas disponible pour moi. Au vu du nombre d'utilisateurs de Youyan, il devrait être « très peu nombreux ». Jetons à nouveau un coup d'œil à Sohu Changyan. J'ai vu cet article sur le site officiel de Sohu : « Parlez davantage du blâme laissé derrière vous, laissez Changyan prendre le relais de manière constante.

Le soi-disant « pot » n’est vraiment pas si simple à « réparer ». Cela me rappelle Lorsque 115 Netdisk a été arrêté, 360 Netdisk a déclaré qu'il ne s'arrêterait jamais. Plus tard, lorsque 360 ​​Netdisk a arrêté son service, Baidu Netdisk s'est levé et a déclaré qu'il fournirait ses services normalement. Ensuite, regardez le Baidu Netdisk actuel... et lorsque WeChat a déclaré qu'il facturait des frais pour les retraits d'espèces, Alipay s'est levé et a déclaré qu'il était toujours gratuit. Plus tard, Alipay a également commencé à facturer des frais pour les retraits d’espèces, et je n’ai plus jamais vu personne s’exprimer.

J'espère vraiment que Sohu Changyan pourra aller plus loin, afin de laisser suffisamment de temps à nos amis qui utilisent encore des avis tiers pour se rendre compte que les données les plus fiables sont entre leurs mains. HashOver, que cet article présentera, est un système de commentaires PHP gratuit et open source qui peut nous aider à créer notre propre système de commentaires. Il est facile à sauvegarder et à migrer, peut être intégré à distance et est sûr et fiable.

Pour plus de programmes de création de sites Web et d'hébergement VPS, vous pouvez également consulter :

  1. Un webmaster qui utilise l'hébergement VPS Alibaba Cloud depuis trois ans a résumé les cinq caractéristiques majeures d'Alibaba Cloud
  2. WHMCS intègre VPS.net pour activer automatiquement un tutoriel d'hôte VPS - vendre des serveurs VPS sur WHMCS
  3. Expérience d'hôte VPS.net VPS - vérification de compte et évaluation des performances et de la vitesse de l'hôte VPS

1. Méthode d'installation de HashOver

Site officiel de HashOver : http://tildehash.com/?page=hashover, page d'accueil du projet : https://github.com/jacobwb/hashover-next. HashOver n'a besoin que de PHP pour fonctionner, veuillez donc préparer un environnement LNMP.

Veuillez télécharger : la version HashOver 2.0 depuis le site officiel, créez un nouveau dossier dans le répertoire racine du serveur : hashover et téléchargez le fichier HashOver 2.0 téléchargé dans ce dossier. Modifiez ensuite les autorisations du fichier comme suit :

Assurez-vous que tous les fichiers disposent d'au moins les autorisations "0644".

Assurez-vous que tous les fichiers PHP disposent d'au moins les autorisations "0755"

Assurez-vous que les autorisations du répertoire "hashover/pages" sont "0777"

Modifiez le fichier de configuration de base de HashOver. Edit : hashover/scripts/settings.php, remplissez votre e-mail de notification à $notification_email, remplissez le symbole de cryptage à 8-32 chiffres à $encryption_key, définissez le nom d'utilisateur de gestion sur $admin_nickname et définissez le mot de passe administrateur sur $admin_password. . Comme indiqué ci-dessous:

2. Tutoriel d'utilisation de HashOver

HashOver peut être intégré à n'importe quelle page Web. Vous pouvez l'appeler à distance, ou vous pouvez placer HashOver et votre site Web sur un serveur et l'appeler localement. En bref, il vous suffit de définir le chemin d'appel. Les fonctions sont les suivantes :

1. Commentaires imbriqués

2. Prise en charge de la modification ou de la suppression de commentaires

3. Soutenir les goûts ou les dégoûts

4. Prend en charge cinq méthodes de tri intelligentes

5. Prise en charge multilingue

6. Ajoutez automatiquement des hyperliens aux URL

7. Prise en charge des avatars

8. Prise en charge des images de liens externes

9. Vous pouvez personnaliser le thème,

10. Prise en charge des balises HTML personnalisées

11. CSS peut être personnalisé

12. Prise en charge de la définition de la plage HTML

13. Prise en charge du filtrage anti-spam

14. Les commentaires ont RSS

15. Lien fixe de commentaire personnalisable

16. L'adresse IP peut être bloquée

17. Prise en charge de l'achèvement de l'URL

18. Prise en charge du chargement asynchrone AJax

Méthode JS :

<script type="text/javascript" src="/hashover/hashover.js"></script>
<noscript>你的浏览器需要支持JS才能加载此评论.</noscript>

Méthode PHP :

<?php $mode = 'php'; include('hashover.js'); ?>

Méthode de chargement asynchrone :

<div id="hashover"></div>
<script type="text/javascript">(function() { var s = document.createElement('script'), t = document.getElementsByTagName('script')[0]; s.type = 'text/javascript'; s.async = true; s.src = "/hashover.php"; t.parentNode.insertBefore(s, t); })();</script>

Options de configuration JS. Vous pouvez définir les options correspondantes lors du chargement de JS, par exemple s'il faut fermer la boîte de nom d'utilisateur, la boîte de courrier électronique, etc.

<script type="text/javascript">
        var rows="4";        // Sets "Comments" field 调试
        var name_on="no";    // 禁用 "Name" field
        var passwd_on="no";  // 禁用 "Password" field
        var email_on="no";   // 禁用 "E-mail" field
        var sites_on="no";   // 禁用 "Website" field
</script>

C'est l'effet du système de commentaires de HashOver.

3. Paramètres du système HashOver

Le fichier de configuration de HashOver : hashover/scripts/settings.php fournit également de nombreuses options de configuration. Voici une sélection de quelques codes de configuration pour explication :

 // 必填设置
    public    $notificationEmail    = 'example@example.com';    // 新评论邮件提醒
    protected $encryptionKey    = '8CharKey';           // 加密key
    protected $adminName        = 'admin';          // 管理员登录用户名
    protected $adminPassword    = 'passwd';         // 管理员登录密码

    // 基础设置
    public $language        = 'auto';           // 语言, for example 'en', 'de', etc. 'auto' to use system locale
    public $theme           = 'default';            // 主题模板
    public $usesModeration      = false;            // 评论显示前是否需要审核
    public $dataFormat      = 'xml';            // 存储方式; 可选: xml, json, sql
    public $defaultName     = 'Anonymous';          // Default name to use when one isn't given
    public $allowsImages        = true;             // 是否允许外链图片
    public $allowsLogin     = true;             // 是否允许登录
    public $allowsLikes     = true;             // 是否允许顶
    public $allowsDislikes      = false;            // 是否允许踩
    public $usesAJAX        = true;             // 是否开启 AJAX 
    public $collapsesUI     = false;            // 是否隐藏评论系统
    public $collapsesComments   = true;             // Whether to hide comments and display a link to show them
    public $collapseLimit       = 3;                // Number of comments that aren't hidden
    public $replyMode       = 'thread';         // 回复模式,可选 a 'thread' or as a 'stream'
    public $streamDepth     = 3;                // In stream mode, the number of reply indentions to allow before the thread flattens
    public $popularityThreshold = 5;                // Minimum likes a comment needs to be popular
    public $popularityLimit     = 2;                // Number of comments allowed to become popular

    // 时间设置
    public $serverTimezone      = 'America/Los_Angeles';    // 时区
    public $usesUserTimezone    = true;             // Whether comment dates should use the user's timezone (JavaScript-mode)
    public $usesShortDates      = true;             // Whether comment dates are shortened, for example "X days ago"
    public $timeFormat      = 'g:ia';           // Time format, use 'H:i' for 24-hour format (see: http://php.net/manual/en/function.date.php)
    public $dateFormat      = 'm/d/Y';          // Date format (see: http://php.net/manual/en/function.date.php)

    // 评论框设置, use true/false to enable/disable a field,
    // use 'required' to require a field be properly filled
    public $fieldOptions = array (
        'name'     => true,
        'password' => true,
        'email'    => true,
        'website'  => true
    );

    // 操作设置
    public $displaysTitle       = true;             // Whether page title is shown or not
    public $formPosition        = 'top';            // Position for primary form; options: 'top' or 'bottom'
    public $usesAutoLogin       = true;             // Whether a user's first comment automatically logs them in
    public $showsReplyCount     = true;             // Whether to show reply count separately from total
    public $countIncludesDeleted    = true;             // Whether comment counts should include deleted comments
    public $iconMode        = 'image';          // 如何显示 avatar icons (可选 'image', 'count' or 'none')
    public $iconSize        = '45';             // 头像大小
    public $imageFormat     = 'png';            // Format for icons and other images (use 'svg' for HDPI)
    public $usesLabels      = false;            // Whether to display labels above inputs
    public $usesCancelButtons   = true;             // Whether forms have "Cancel" buttons
    public $appendsCSS      = true;             // Whether to automatically add a CSS  element to the page 
    public $displaysRSSLink     = true;             // 是否显示 RSS feed 

    // 技术设置
    public $loginMethod     = 'defaultLogin';       // Login method class for handling user login information
    public $setsCookies     = true;             // Whether cookies are enabled
    public $secureCookies       = false;            // Whether cookies set over secure HTTPS will only be transmitted over HTTPS
    public $storesIPAddress     = false;            // 是否存储用户IP地址
    public $allowsUserReplies   = false;            // 是否给评论者一个邮件提醒
    public $noreplyEmail        = 'noreply@example.com';    // 发送邮件提醒的邮箱
    public $spamDatabase        = 'remote';         // Whether to use a remote or local spam database
    public $spamCheckModes      = 'php';            // Perform IP spam check in 'javascript' or 'php' mode, or 'both'
    public $gravatarDefault     = 'custom';         // Gravatar theme to use ('custom', 'identicon', 'monsterid', 'wavatar', or 'retro')
    public $gravatarForce       = false;            // Whether to force the themed Gravatar images instead of an avatar image
    public $minifiesJavaScript  = false;            // Whether JavaScript output should be minified
    public $minifyLevel     = 4;                // How much to minify JavaScript code, options: 1, 2, 3, 4
    public $enablesAPI      = true;             // API: true = fully-enabled, false = fully disabled, or array of modes
    public $latestMax       = 10;               // Maximum number of comments to save as latest comments
    public $latestTrimWidth     = 100;              // Number of characters to trim latest comments to, 0 for no trim
    public $userDeletionsUnlink = false;            // Whether user deleted files are actually unlinked from the filesystem

    // 图片设置,Types of images allowed to be embedded in comments
    public $imageTypes = array (
        'jpeg',
        'jpg',
        'png',
        'gif'
    );

    // 远程域名加载设置,External domains allowed to remotely load HashOver scripts
    public $allowedDomains = array (
        // '*.example.com',
        // '*.example.org',
        // '*.example.net'
    );

    // 数据库选项,General database options
    public $databaseType        = 'sqlite';         // Type of database, sqlite or mysql
    public $databaseName        = 'hashover-pages';     // Database name

    // SQL database options
    public $databaseHost        = 'localhost';          // Database host name
    public $databaseUser        = 'root';           // Database login user
    public $databasePassword    = 'password';           // Database login password
    public $databaseCharset     = 'utf8';           // Database character set

    // Automated settings
    public $isMobile        = false;

    // Technical settings placeholders
    public $rootDirectory;
    public $httpRoot;
    public $httpScripts;
    public $httpImages;
    public $cookieExpiration;
    public $domain;

Veuillez consulter l'explication ci-dessus pour une explication détaillée des paramètres, deux paramètres clés : la langue et l'heure. Si vous définissez la langue, veuillez définir « langue » sur « zh-cn » et n'oubliez pas de changer le fuseau horaire en fuseau horaire de Shanghai.

4. Problèmes liés à HashOver

Modèle de thème HashOver. Vous pouvez spécifier le modèle de thème dans les paramètres : public $theme = 'default';, et vous pouvez modifier le style CSS en fonction de vos propres besoins.

Notification par e-mail HashOver. HashOver ne fournit pas de paramètres SMTP et fournit une notification par e-mail directement via la fonction mail(). Vous devez donc installer un serveur de messagerie tel que postfix ou sendmail sur l'hôte et activer mail() dans le php.ini.

Comment HashOver active-t-il le mode de stockage MySQL ? Le paramètre par défaut est : public $dataFormat = 'xml' ; c'est-à-dire que la méthode de stockage XML est utilisée. Le principe est : le premier commentaire est nommé "1.xml" et le deuxième commentaire est nommé "2.xml". " ,Etc., etc. Lorsqu'un utilisateur répond à un commentaire, créez un autre fichier. Lorsqu'un commentaire est supprimé, le visiteur supprimera simplement le fichier correspondant.

L’avantage de l’utilisation de la méthode de stockage XML est qu’elle est facile à migrer et que la vitesse de réponse est rapide. Si vous souhaitez passer au stockage de base de données, remplacez d'abord public $dataFormat = 'xml' par sql, puis remplissez votre base de données dans les options générales de la base de données. Si vous disposez d'une base de données distante, veuillez remplir les informations de la base de données distante.

Les commentaires Disqus sont importés dans Hashover. Programme Java : https://github.com/ianrenton/disqus-to-hashover, la méthode de fonctionnement est la suivante :

1. Téléchargez d'abord le code source JAVA et compilez-le dans NetBeans ou Eclipse (pensez à sélectionner le plug-in JAXB)

2. Exportez les données sous comments.xml en arrière-plan Disqus et placez-les dans le répertoire du programme compilé.

3. Exécutez le programme JAVA compilé. Le répertoire hashoverpage et chaque fichier XML seront générés.

4. Téléchargez le répertoire page généré dans le répertoire où se trouve HashOver sur le serveur.

De plus, HashOver est actuellement en version test 2.0, il reste donc encore de nombreux problèmes à résoudre. Voici les problèmes possibles dans la version actuelle. Si vous rencontrez des problèmes similaires, vous pouvez vous y référer.

Erreur PDO. Après avoir sélectionné MySQL et rempli les informations de la base de données, le message d'erreur suivant est apparu : HashOver : le fichier PDO.php n'a pas pu être inclus !. La raison est que la classe PDO a quelque part oublié d'ajouter l'espace de noms racine. À l'heure actuelle, quelqu'un a soumis un PR pour ce problème. Nous pouvons le modifier nous-mêmes avant la fusion officielle.

#打开:hashover/scripts/parsesql.php

Line 76  在PDO前面加上“”
$fetchAll = $results->fetchAll (PDO::FETCH_NUM);

Line 111 同理
return (array) $result->fetch (PDO::FETCH_ASSOC);

Problème inter-domaines AJAX. Lors de l'activation du mode ajax dans le fichier de configuration, vous constaterez que toutes les requêtes échouent. Étant donné que le hashover ne gère pas l'accès entre domaines (ajout de l'en-tête CORS), la requête est interceptée par le navigateur. Vous pouvez ajouter du code en haut de hashover/scripts/settings.php ou le configurer avec Nginx/apache.

header("Access-Control-Allow-Origin:".(isset($_SERVER['HTTP_ORIGIN'])?$_SERVER['HTTP_ORIGIN']:"*"));
header("Access-Control-Allow-Credentials:true");

Problème de non-enregistrement des informations utilisateur. hashover ne gère pas l'accès entre domaines, donc seul l'ajout de l'en-tête cors ne peut pas enregistrer les cookies. La solution consiste à rechercher XMLHttpRequest dans hashover/scripts/javascript-mode.php et à ajouter withCredentials=true à tous les objets XHR.

HashOver utilise SMTP pour envoyer des lettres. Cette partie est reproduite à partir de Weiyu de Weng. Pour le processus de modification spécifique, vous pouvez lire attentivement l'article du blogueur Le deuxième article de la série hashover : E-mail SMTP . Ici, vous pouvez télécharger les fichiers smtp.php et writecomments.php modifiés par Weng : hashover-smtp.zip. Sauvegarde : https://www.ucblog.net/wzfou/hashover-smtp-pack.zip

Décompressez le fichier smtp.php téléchargé et placez-le dans le répertoire des scripts du hashover. Assurez-vous d'ouvrir l'éditeur et de remplacer SMTP par vos propres informations, puis d'écraser le fichier d'origine par writecomments.php. Enfin, vous pourrez mettre en œuvre des rappels de notification par courrier électronique en réponse aux commentaires.

5. Résumé

HashOver est très pratique à installer et à utiliser. Le stockage des données de commentaires utilise XML par défaut. Si vous souhaitez passer au formulaire de base de données, il est recommandé d'utiliser un serveur dédié pour le stockage des données de commentaires et de référencer à distance les commentaires HashOver dans d'autres pages Web. vous n'avez plus à vous soucier de la perte de données.

Dès l'introduction de cet article, vous pouvez également constater que HashOver présente de nombreux problèmes. Cela peut être dû en grande partie au fait qu'il s'agit d'un programme personnel géré par des développeurs étrangers. Heureusement, il offre une multitude d'options de configuration que chacun peut personnaliser. Les amis intéressés peuvent se rendre sur le site officiel de HashOver pour lire la documentation de développement.

PS :Enregistrement de mise à jour de l'article :

Le 19 août 2017, HashOver a été mis à jour pour utiliser SMTP pour envoyer des lettres.

Laisser une réponse