Wenn es um inländische soziale Kommentarsysteme geht, müssen wir einige repräsentative Dienste wie Duosuo, Denglu, Youyan, Comments, NetEase Cloud Posts und Sohu Changyan erwähnen. Vor einigen Jahren, als soziale Kommentare populär wurden, wurden die mit Programmen wie WordPress gelieferten Kommentarsysteme nicht verwendet. Einige betteten Weibo als Website-Kommentare ein, und einige nutzten Dienste von Drittanbietern wie Duosuo, Denglu und Youyan, um Kommentare zu ersetzen . von.

Ein Vorteil der Verwendung eines Social-Comment-Systems eines Drittanbieters besteht darin, dass Kommentatoren sich die Mühe des Einloggens ersparen. Ein fataler Nachteil besteht meiner Meinung nach jedoch darin, dass die Kommentardaten in den Händen Dritter gespeichert werden. Mit anderen Worten: Als Blogger kann ich die Sicherheit der Website-Daten nicht garantieren, selbst wenn ich die Kommentardaten exportieren kann, sobald der Drittanbieter-Dienst eingestellt wird, wird dies viel Zeit und Energie kosten.

Schauen wir uns nun einige repräsentative Dienste wie Duosuo, Denglu, Youyan, Comments, NetEase Cloud Posts und Sohu Changyan an. Die derzeit „halbtoten“ sind Youyan und Sohu Changyan in Aktion“ (einschließlich des Folgebeitrags von NetEase Cloud über „tot in Aktion“). Einige Leute mögen argumentieren, dass es auch Youyan und Sohu Changyan gibt, die verwendet werden können?

Installation und Nutzung des kostenlosen Open-Source-PHP-Kommentarsystems HashOver – selbst erstelltes Kommentarsystem ersetzt Dienste von Drittanbietern

Derzeit ist die offizielle Website von Youyan für mich grundsätzlich nicht verfügbar. Angesichts der Anzahl der Benutzer von Youyan dürften „sehr wenige“ übrig sein. Schauen wir uns Sohu Changyan noch einmal an. Ich habe diesen Artikel auf der offiziellen Website von Sohu gesehen: „Sprechen Sie mehr über die zurückgelassene Schuld, lassen Sie Changyan stetig übernehmen.“

Der sogenannte „Topf“ ist wirklich nicht so einfach zu „reparieren“. Das erinnert mich an Als 115 Netdisk heruntergefahren wurde, sagte 360 ​​Netdisk, dass es niemals heruntergefahren werden würde. Als 360 Netdisk später seinen Dienst abschaltete, stand Baidu Netdisk auf und sagte, es würde die Dienste normal bereitstellen. Schauen Sie sich dann die aktuelle Baidu Netdisk an ... und als WeChat sagte, dass für Bargeldabhebungen Gebühren erhoben werden, stand Alipay auf und sagte, dass es immer noch kostenlos sei. Später begann Alipay auch, Gebühren für Bargeldabhebungen zu erheben, und ich habe nie wieder gesehen, dass sich jemand dazu geäußert hätte.

Ich hoffe wirklich, dass Sohu Changyan noch weiter gehen kann, damit unseren Freunden, die immer noch Bewertungen von Drittanbietern nutzen, genügend Zeit bleibt, um zu erkennen, dass die zuverlässigsten Daten in ihren eigenen Händen liegen. HashOver, das in diesem Artikel vorgestellt wird, ist ein kostenloses Open-Source-PHP-Kommentarsystem, das uns beim Aufbau unseres eigenen Kommentarsystems helfen kann. Es ist einfach zu sichern und zu migrieren, kann remote eingebettet werden und ist sicher und zuverlässig.

Weitere Website-Erstellungsprogramme und VPS-Hosts finden Sie auch unter:

  1. Ein Webmaster, der Alibaba Cloud VPS-Hosting seit drei Jahren nutzt, fasste die fünf Hauptmerkmale von Alibaba Cloud zusammen
  2. WHMCS integriert VPS.net, um automatisch ein VPS-Host-Tutorial zu aktivieren – VPS-Server auf WHMCS verkaufen
  3. VPS.net VPS-Host-Erlebnis – Kontoverifizierung und Bewertung der Leistung und Geschwindigkeit des VPS-Hosts

1. HashOver-Installationsmethode

Offizielle Website von HashOver: http://tildehash.com/?page=hashover, Projekthomepage: https://github.com/jacobwb/hashover-next. HashOver benötigt zum Ausführen nur PHP. Bereiten Sie daher bitte eine LNMP-Umgebung vor.

Bitte laden Sie die HashOver 2.0-Version von der offiziellen Website herunter, erstellen Sie einen neuen Ordner im Stammverzeichnis des Servers: hashover und laden Sie die heruntergeladene HashOver 2.0-Datei in diesen Ordner hoch. Ändern Sie dann die Dateiberechtigungen wie folgt:

Stellen Sie sicher, dass alle Dateien mindestens über die Berechtigungen „0644“ verfügen

Stellen Sie sicher, dass alle PHP-Dateien mindestens über die Berechtigungen „0755“ verfügen

Stellen Sie sicher, dass die Berechtigungen des Verzeichnisses „hashover/pages“ „0777“ sind.

Ändern Sie die grundlegende Konfigurationsdatei von HashOver. Bearbeiten: hashover/scripts/settings.php, geben Sie Ihre Benachrichtigungs-E-Mail unter $notification_email ein, geben Sie das 8-32-Bit-Verschlüsselungssymbol unter $encryption_key ein, legen Sie den Verwaltungsbenutzernamen auf $admin_nickname fest und legen Sie das Administratorkennwort unter $admin_password fest . Wie nachfolgend dargestellt:

2. Tutorial zur Verwendung von HashOver

HashOver kann in jede Webseite eingebettet werden, oder Sie können HashOver und Ihre Website auf einem Server platzieren und sie lokal aufrufen. Die Funktionen sind wie folgt:

1. Verschachtelte Kommentare

2. Unterstützen Sie das Bearbeiten oder Löschen von Kommentaren

3. Unterstützen Sie Vorlieben oder Abneigungen

4.Unterstützt fünf intelligente Sortiermethoden

5. Mehrsprachige Unterstützung

6. Fügen Sie automatisch Hyperlinks zu URLs hinzu

7. Unterstützen Sie Avatare

8. Unterstützen Sie externe Linkbilder

9. Sie können das Thema anpassen,

10. Unterstützt benutzerdefinierte HTML-Tags

11. CSS kann angepasst werden

12. Unterstützt die Einstellung des HTML-Bereichs

13. Unterstützen Sie die Spam-Filterung

14. Kommentare haben RSS

15. Anpassbarer fester Link für Kommentare

16. IP-Adresse kann blockiert werden

17. Unterstützen Sie die URL-Vervollständigung

18. Unterstützt das asynchrone Laden von AJax

JS-Methode:

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

PHP-Methode:

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

Asynchrone Lademethode:

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

JS-Einstellungsoptionen. Sie können beim Laden von JS entsprechende Optionen festlegen, z. B. ob das Benutzernamenfeld, das E-Mail-Feld usw. geschlossen werden sollen.

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

Dies ist der Effekt des Kommentarsystems von HashOver.

3. HashOver-Systemeinstellungen

Die Einstellungsdatei von HashOver: hashover/scripts/settings.php bietet ebenfalls viele Einstellungsmöglichkeiten. Hier eine Auswahl einiger Einstellungscodes zur Erläuterung:

 // 必填设置
    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;

Eine ausführliche Erläuterung der Einstellungen finden Sie in der obigen Erklärung. Dabei handelt es sich um zwei wichtige Einstellungen: Sprache und Uhrzeit. Wenn Sie die Sprache einstellen, stellen Sie bitte „Sprache“ auf „zh-cn“ ein und denken Sie daran, die Zeitzone auf die Shanghai-Zeitzone zu ändern.

4. HashOver-bezogene Probleme

HashOver-Themenvorlage. Sie können die Theme-Vorlage in den Einstellungen angeben: public $theme = ‘default’;, und Sie können den CSS-Stil entsprechend Ihren eigenen Bedürfnissen ändern.

HashOver-E-Mail-Benachrichtigung. HashOver bietet keine SMTP-Einstellungen und stellt E-Mail-Benachrichtigungen direkt über die Funktion mail() bereit. Sie müssen daher einen Mailserver wie Postfix oder Sendmail auf dem Host installieren und mail() in php.ini aktivieren.

Wie aktiviert HashOver den MySQL-Speichermodus? Die Standardeinstellung ist: public $dataFormat = 'xml'; das heißt, es wird die XML-Speichermethode verwendet. Das Prinzip lautet: Der erste Kommentar heißt „1.xml“ und der zweite Kommentar heißt „2.xml“. " ,Und so weiter und so fort. Wenn ein Benutzer auf einen Kommentar antwortet, erstellen Sie eine weitere Datei. Wenn ein Kommentar gelöscht wird, löscht der Besucher einfach die entsprechende Datei.

Der Vorteil der Verwendung der XML-Speichermethode besteht darin, dass sie einfach zu migrieren ist und die Reaktionsgeschwindigkeit schnell ist. Wenn Sie zum Datenbankspeicher wechseln möchten, ändern Sie zuerst public $dataFormat = „xml“ in sql und geben Sie dann Ihre Datenbank in den allgemeinen Datenbankoptionen ein. Wenn Sie über eine Remote-Datenbank verfügen, geben Sie bitte die Informationen zur Remote-Datenbank ein.

Disqus-Kommentare werden in Hashover importiert. Java-Programm: https://github.com/ianrenton/disqus-to-hashover, die Betriebsmethode ist wie folgt:

1. Laden Sie zunächst den JAVA-Quellcode herunter und kompilieren Sie ihn in NetBeans oder Eclipse (denken Sie daran, das JAXB-Plug-In auszuwählen).

2. Exportieren Sie die Daten als comments.xml im Disqus-Hintergrund und legen Sie sie im kompilierten Programmverzeichnis ab.

3. Führen Sie das kompilierte JAVA-Programm aus. Das Verzeichnis hashoverpage und jede XML-Datei werden generiert.

4. Laden Sie das generierte Verzeichnis page in das Verzeichnis hoch, in dem sich HashOver auf dem Server befindet.

Darüber hinaus befindet sich HashOver derzeit in der Testversion 2.0, sodass noch viele Probleme gelöst werden müssen. Wenn Sie auf ähnliche Probleme stoßen, können Sie sich auf diese beziehen.

PDO-Fehler. Nach der Auswahl von MySQL und dem Ausfüllen der Datenbankinformationen erschien die folgende Fehlermeldung: HashOver: PDO.php-Datei konnte nicht eingebunden werden! Der Grund dafür ist, dass die PDO-Klasse irgendwo vergessen hat, den Root-Namespace hinzuzufügen. Derzeit hat jemand eine PR für dieses Problem eingereicht. Wir können vor der offiziellen Zusammenführung selbst einige Änderungen vornehmen.

#打开:hashover/scripts/parsesql.php

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

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

AJAX-übergreifendes Domänenproblem. Wenn Sie den Ajax-Modus in der Konfigurationsdatei aktivieren, werden Sie feststellen, dass alle Anfragen fehlschlagen. Da der Hashover keinen domänenübergreifenden Zugriff (Hinzufügen des CORS-Headers) übernimmt, wird die Anfrage vom Browser abgefangen. Sie können Code oben in hashover/scripts/settings.php hinzufügen oder ihn mit Nginx/Apache konfigurieren.

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

Problem, dass Benutzerinformationen nicht gespeichert werden. hashover verarbeitet keinen domänenübergreifenden Zugriff, sodass nur das Hinzufügen des Cors-Headers keine Cookies speichern kann. Die Lösung besteht darin, XMLHttpRequest in hashover/scripts/javascript-mode.php zu finden und withCredentials=true zu allen XHR-Objekten hinzuzufügen.

HashOver verwendet SMTP zum Versenden von Briefen. Dieser Teil ist eine Reproduktion von Wengs Weiyu. Informationen zum spezifischen Änderungsprozess finden Sie im Artikel des Bloggers . Der zweite Artikel in der Hashover-Reihe: SMTP-E-Mail . Hier können Sie Wengs modifizierte Dateien smtp.php und writecomments.php herunterladen: hashover-smtp.zip. Sicherung: https://www.ucblog.net/wzfou/hashover-smtp-pack.zip

Entpacken Sie die heruntergeladene smtp.php und legen Sie sie im Skriptverzeichnis des Hashovers ab. Öffnen Sie unbedingt den Editor, ersetzen Sie SMTP durch Ihre eigenen Informationen und überschreiben Sie dann die Originaldatei mit writecomments.php Abschließend können Erinnerungen zur Kommentarantwort per E-Mail implementiert werden.

5. Zusammenfassung

HashOver ist recht bequem zu installieren und zu verwenden. Wenn Sie auf die Datenbankform umsteigen möchten, wird empfohlen, einen dedizierten Server für die Kommentardatenspeicherung zu verwenden und auf diese Weise auf HashOver-Kommentare zu verweisen Sie müssen sich keine Sorgen mehr über Datenverlust machen.

Aus der Einleitung dieses Artikels können Sie auch ersehen, dass es bei HashOver viele Probleme gibt. Dies kann größtenteils darauf zurückzuführen sein, dass HashOver ein persönliches Programm ist, das von ausländischen Entwicklern verwaltet wird. Glücklicherweise bietet es eine Fülle von Einstellungsoptionen, die jeder anpassen kann. Interessierte Freunde können die Entwicklungsdokumentation auf der offiziellen Website von HashOver lesen.

PS:Artikelaktualisierungsdatensatz:

Am 19. August 2017 wurde HashOver aktualisiert, um SMTP zum Versenden von Briefen zu verwenden.

Hinterlasse eine Antwort