Quando si tratta di sistemi di commento sociale nazionali, dobbiamo menzionare alcuni servizi rappresentativi come Duosuo, Denglu, Youyan, Comments, NetEase Cloud Post e Sohu Changyan. Alcuni anni fa, quando i commenti sui social diventarono popolari, i sistemi di commento forniti con programmi come WordPress non venivano utilizzati. Alcuni incorporavano Weibo come commenti sui siti Web e alcuni utilizzavano servizi di terze parti come Duosuo, Denglu e Youyan per sostituire i commenti. . Di.

Un vantaggio dell’utilizzo di un sistema di commenti social di terze parti è che evita ai commentatori la fatica di accedere. Tuttavia, a mio avviso, uno svantaggio fatale è che i dati dei commenti sono archiviati nelle mani di terzi. In altre parole, come blogger, non posso garantire la sicurezza dei dati del sito web. Una volta interrotto il servizio di terze parti, anche se potessi esportare i dati dei commenti, ciò consumerebbe molto tempo ed energia.

Ora diamo uno sguardo indietro ad alcuni servizi rappresentativi come Duosuo, Denglu, Youyan, Comments, NetEase Cloud Post e Sohu Changyan. Quelli che sono attualmente "mezzi morti" sono Youyan e Sohu Changyan. Altri sono stati sostanzialmente dichiarati ufficialmente "morti". in azione" (incluso il post successivo di NetEase Cloud sull'essere "morto in azione"). Alcuni potrebbero obiettare che esistono anche Youyan e Sohu Changyan che possono essere utilizzati?

Installazione e utilizzo del sistema di commenti PHP open source gratuito HashOver: il sistema di commenti autocostruito sostituisce i servizi di terze parti

Al momento, il sito web ufficiale di Youyan non è praticamente disponibile per me. Considerando il numero di utenti di Youyan, dovrebbero esserne rimasti "pochissimi". Diamo un'altra occhiata a Sohu Changyan. Ho visto questo articolo sul sito ufficiale di Sohu: "Parla di più della colpa lasciata alle spalle, lascia che Changyan prenda costantemente il sopravvento".

Il cosiddetto "pentola" non è poi così facile da "aggiustare". Questo mi ricorda Quando 115 Netdisk è stato chiuso, 360 Netdisk ha detto che non si sarebbe mai spento. Successivamente, quando 360 Netdisk ha interrotto il suo servizio, Baidu Netdisk si è alzato e ha detto che avrebbe fornito i servizi normalmente. Poi, guarda l'attuale Baidu Netdisk... e quando WeChat ha detto che addebita commissioni per i prelievi di contanti, Alipay si è alzato e ha detto che è ancora gratuito. Successivamente, Alipay ha iniziato ad addebitare anche commissioni per i prelievi di contanti e non ho mai più visto nessuno parlare apertamente.

Spero davvero che Sohu Changyan possa andare oltre, in modo che possa essere lasciato abbastanza tempo ai nostri amici che utilizzano ancora recensioni di terze parti per rendersi conto che i dati più affidabili sono nelle loro mani. HashOver, che verrà introdotto in questo articolo, è un sistema di commenti PHP gratuito e open source che può aiutarci a creare il nostro sistema di commenti. È facile da eseguire il backup e la migrazione, può essere incorporato in remoto ed è sicuro e affidabile.

Per ulteriori programmi di creazione di siti Web e host VPS, puoi anche consultare:

  1. Un webmaster che ha utilizzato l'hosting VPS Alibaba Cloud per tre anni ha riassunto le cinque caratteristiche principali di Alibaba Cloud
  2. WHMCS integra VPS.net per attivare automaticamente un tutorial sull'host VPS: vendi server VPS su WHMCS
  3. Esperienza host VPS VPS.net: verifica dell'account e valutazione delle prestazioni e della velocità dell'host VPS

1. Metodo di installazione di HashOver

Sito web ufficiale di HashOver: http://tildehash.com/?page=hashover, home page del progetto: https://github.com/jacobwb/hashover-next. HashOver necessita solo di PHP per funzionare, quindi prepara un ambiente LNMP.

Scarica: versione HashOver 2.0 dal sito Web ufficiale, crea una nuova cartella nella directory principale del server: hashover e carica il file HashOver 2.0 scaricato in questa cartella. Quindi modificare i permessi del file come segue:

Assicurati che tutti i file dispongano almeno delle autorizzazioni "0644".

Assicurati che tutti i file PHP abbiano almeno le autorizzazioni "0755".

Assicurati che i permessi della directory "hashover/pages" siano "0777"

Modifica il file di configurazione di base di HashOver. Modifica: hashover/scripts/settings.php, inserisci l'e-mail di notifica su $notification_email, inserisci il simbolo di crittografia a 8-32 bit su $encryption_key, imposta il nome utente di gestione su $admin_nickname e imposta la password dell'amministratore su $admin_password . Come mostrato di seguito:

2. Tutorial sull'utilizzo di HashOver

HashOver può essere incorporato in qualsiasi pagina web. Puoi chiamarlo da remoto oppure puoi posizionare HashOver e il tuo sito web su un server e chiamarlo localmente. In breve, devi solo impostare il percorso di chiamata. Le funzioni sono le seguenti:

1. Commenti nidificati

2. Supporta la modifica o l'eliminazione dei commenti

3. Supporta simpatie e antipatie

4.Supporta cinque metodi di ordinamento intelligenti

5. Supporto multilingue

6. Aggiungi automaticamente collegamenti ipertestuali agli URL

7. Supporta gli avatar

8. Supporta immagini di collegamenti esterni

9. Puoi personalizzare il tema,

10. Supporta tag HTML personalizzati

11. I CSS possono essere personalizzati

12. Supporta l'impostazione dell'intervallo HTML

13. Supporta il filtraggio dello spam

14. I commenti hanno RSS

15. Collegamento fisso ai commenti personalizzabili

16. L'indirizzo IP può essere bloccato

17. Supporta il completamento dell'URL

18. Supporta il caricamento asincrono AJax

Metodo JS:

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

Metodo PHP:

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

Metodo di caricamento asincrono:

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

Opzioni di impostazione JS. Puoi impostare le opzioni corrispondenti durante il caricamento di JS, ad esempio se chiudere la casella del nome utente, la casella di posta elettronica, ecc.

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

Questo è l'effetto del sistema di commenti di HashOver.

3. Impostazioni di sistema HashOver

Il file di impostazione di HashOver: hashover/scripts/settings.php fornisce anche molte opzioni di impostazione Ecco una selezione di alcuni codici di impostazione per la spiegazione:

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

Si prega di consultare la spiegazione sopra per una spiegazione dettagliata delle impostazioni, due impostazioni chiave: lingua e ora. Se si imposta la lingua, impostare "lingua" su "zh-cn" e ricordarsi di modificare il fuso orario nel fuso orario di Shanghai.

4. Problemi relativi a HashOver

Modello tema HashOver. Puoi specificare il modello del tema nelle impostazioni: public $theme = 'default';, e puoi modificare lo stile CSS in base alle tue esigenze.

Notifica e-mail HashOver. HashOver non fornisce impostazioni SMTP e fornisce notifiche email direttamente tramite la funzione mail(), quindi è necessario installare un server di posta come postfix o sendmail sull'host e abilitare mail() in php.ini.

In che modo HashOver abilita la modalità di archiviazione MysqL? L'impostazione predefinita è: public $dataFormat = 'xml'; ovvero viene utilizzato il metodo di archiviazione xml. Il principio è: il primo commento si chiama "1.xml" e il secondo commento si chiama "2.xml " ,Così via. Quando un utente risponde a un commento, crea un altro file. Quando un commento viene eliminato, il visitatore eliminerà semplicemente il file corrispondente.

Il vantaggio dell'utilizzo del metodo di archiviazione XML è che è facile da migrare e la velocità di risposta è elevata. Se desideri passare all'archiviazione del database, modifica prima public $dataFormat = 'xml' in sql, quindi compila il database in Opzioni generali del database. Se disponi di un database remoto, inserisci le informazioni sul database remoto.

I commenti Disqus vengono importati in Hashover. Programma Java: https://github.com/ianrenton/disqus-to-hashover, il metodo operativo è il seguente:

1. Per prima cosa scarica il codice sorgente JAVA e compilalo in NetBeans o Eclipse (ricordati di selezionare il plug-in JAXB)

2. Esportare i dati come comments.xml nello sfondo di Disqus e inserirli nella directory del programma compilato.

3. Eseguire il programma JAVA compilato e verranno generati la directory hashoverpage e ciascun file XML.

4. Caricare la directory page generata nella directory in cui si trova HashOver sul server.

Inoltre HashOver è attualmente nella versione di prova 2.0, quindi ci sono ancora molti problemi da risolvere. Di seguito sono riportati i possibili problemi della versione attuale. Se riscontrate problemi simili, potete farvi riferimento.

Errore PDO. Dopo aver selezionato mysql e inserito le informazioni sul database, è apparso il seguente messaggio di errore: HashOver: il file PDO.php non può essere incluso!. Il motivo è che la classe PDO da qualche parte ha dimenticato di aggiungere lo spazio dei nomi root. Al momento, qualcuno ha inviato una PR per questo problema. Possiamo apportare alcune modifiche noi stessi prima della fusione ufficiale.

#打开:hashover/scripts/parsesql.php

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

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

Problema tra domini AJAX. Quando abiliti la modalità ajax nel file di configurazione, scoprirai che tutte le richieste falliscono. Poiché l'hashover non gestisce l'accesso tra domini (aggiungendo l'intestazione CORS), la richiesta viene intercettata dal browser. Puoi aggiungere il codice nella parte superiore di hashover/scripts/settings.php o configurarlo con Nginx/apache.

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

Problema di mancato salvataggio delle informazioni dell'utente. hashover non gestisce l'accesso tra domini, quindi solo aggiungendo l'intestazione cors non è possibile salvare i cookie. La soluzione è trovare XMLHttpRequest in hashover/scripts/javascript-mode.php e aggiungere withCredentials=true a tutti gli oggetti XHR.

HashOver utilizza SMTP per inviare lettere. Questa parte è riprodotta da Weiyu di Weng. Per il processo di modifica specifico, puoi leggere attentamente l'articolo del blogger Il secondo articolo della serie hashover: email SMTP . Qui puoi scaricare i file smtp.php e writecomments.php modificati da Weng: hashover-smtp.zip. Backup: https://www.ucblog.net/wzfou/hashover-smtp-pack.zip

Decomprimere il file smtp.php scaricato e inserirlo nella directory degli script dell'hashover. Assicurati di aprire l'editor e sostituire SMTP con le tue informazioni, quindi sovrascrivere il file originale con writecomments.php. Infine, sarà possibile implementare promemoria di notifica via email per la risposta ai commenti.

5. Riepilogo

HashOver è abbastanza comodo da installare e utilizzare. L'archiviazione dei dati dei commenti utilizza XML per impostazione predefinita. Se si desidera passare al modulo database, si consiglia di utilizzare un server dedicato per l'archiviazione dei dati dei commenti e fare riferimento in remoto ai commenti di HashOver in altre pagine Web in questo modo non devi più preoccuparti della perdita di dati.

Dall'introduzione di questo articolo, puoi anche vedere che HashOver ha molti problemi. Ciò potrebbe essere in gran parte dovuto al fatto che HashOver è un programma personale gestito da sviluppatori stranieri. Fortunatamente, fornisce numerose opzioni di impostazione personalizzabili. Gli amici interessati possono visitare il sito Web ufficiale di HashOver per leggere la documentazione di sviluppo.

PS:Registrazione aggiornamento articolo:

Il 19 agosto 2017, HashOver è stato aggiornato per utilizzare SMTP per inviare lettere.

lascia un commento