Cuando se trata de sistemas nacionales de comentarios sociales, debemos mencionar algunos servicios representativos como Duosuo, Denglu, Youyan, Comments, NetEase Cloud Posts y Sohu Changyan. Hace unos años, cuando los comentarios sociales se hicieron populares, los sistemas de comentarios que venían con programas como WordPress no se utilizaban. Algunos incorporaron Weibo como comentarios de sitios web y algunos utilizaron servicios de terceros como Duosuo, Denglu y Youyan para reemplazar los comentarios. . de.

Una ventaja de utilizar un sistema de comentarios sociales de terceros es que les ahorra a los comentaristas la molestia de iniciar sesión. Sin embargo, en mi opinión, existe la desventaja fatal de que los datos de los comentarios se almacenan en manos de un tercero. En otras palabras, como blogger, no puedo garantizar la seguridad de los datos del sitio web una vez que se detenga el servicio de terceros, incluso si puedo exportar los datos de los comentarios, consumirá mucho tiempo y energía.

Ahora echemos un vistazo a algunos servicios representativos como Duosuo, Denglu, Youyan, Comments, NetEase Cloud Posts y Sohu Changyan. Los que actualmente están "medio muertos" son Youyan y Sohu Changyan. Otros básicamente han sido declarados oficialmente "muertos". en acción" (incluida la publicación de seguimiento de NetEase Cloud sobre estar "muerto en acción"). Algunas personas pueden argumentar que también hay Youyan y Sohu Changyan que pueden usarse.

Instalación y uso del sistema de comentarios PHP de código abierto y gratuito HashOver: el sistema de comentarios de creación propia reemplaza los servicios de terceros

En la actualidad, el sitio web oficial de Youyan básicamente no está disponible para mí. En cuanto a la cantidad de usuarios de Youyan, deberían ser "muy pocos". Echemos un vistazo a Sohu Changyan nuevamente. Vi este artículo en el sitio web oficial de Sohu: "Hable más sobre la culpa que quedó, deje que Changyan asuma el control de manera constante".

La llamada "olla" en realidad no es tan fácil de "arreglar". Esto me recuerda a Cuando se cerró 115 Netdisk, 360 Netdisk dijo que nunca se cerraría. Más tarde, cuando 360 Netdisk cerró su servicio, Baidu Netdisk se puso de pie y dijo que proporcionaría servicios normalmente. Luego, mire el Baidu Netdisk actual... y cuando WeChat dijo que cobra tarifas por los retiros de efectivo, Alipay se puso de pie y dijo que todavía es gratis. Más tarde, Alipay también empezó a cobrar comisiones por los retiros de efectivo y nunca vi a nadie volver a hablar.

Realmente espero que Sohu Changyan pueda ir más allá, de modo que quede suficiente tiempo para que nuestros amigos que todavía utilizan reseñas de terceros se den cuenta de que los datos más confiables están en sus propias manos. HashOver, que presentaremos en este artículo, es un sistema de comentarios PHP gratuito y de código abierto que puede ayudarnos a construir nuestro propio sistema de comentarios. Es fácil de realizar copias de seguridad y migrar, se puede integrar de forma remota y es seguro y confiable.

Para obtener más programas de creación de sitios web y alojamiento VPS, también puede consultar:

  1. Un webmaster que ha utilizado el alojamiento VPS de Alibaba Cloud durante tres años resumió las cinco características principales de Alibaba Cloud
  2. WHMCS integra VPS.net para activar automáticamente un tutorial de host VPS - venda servidores VPS en WHMCS
  3. Experiencia de host VPS.net VPS: verificación de cuenta y evaluación del rendimiento y velocidad del host VPS

1. Método de instalación de HashOver

Sitio web oficial de HashOver: http://tildehash.com/?page=hashover, página de inicio del proyecto: https://github.com/jacobwb/hashover-next. HashOver solo necesita PHP para ejecutarse, así que prepare un entorno LNMP.

Descargue: la versión HashOver 2.0 del sitio web oficial, cree una nueva carpeta en el directorio raíz del servidor: hashover y cargue el archivo HashOver 2.0 descargado en esta carpeta. Luego modifique los permisos del archivo de la siguiente manera:

Asegúrese de que todos los archivos tengan al menos permisos "0644"

Asegúrese de que todos los archivos PHP tengan al menos permisos "0755"

Asegúrese de que los permisos del directorio "hashover/pages" sean "0777"

Modifique el archivo de configuración básica de HashOver. Editar: hashover/scripts/settings.php, complete su correo electrónico de notificación en $notification_email, complete el símbolo de cifrado de 8 a 32 dígitos en $encryption_key, establezca el nombre de usuario de administración en $admin_nickname y establezca la contraseña de administrador en $admin_password . Como se muestra abajo:

2. Tutorial de uso de HashOver

HashOver se puede incrustar en cualquier página web. Puede llamarlo de forma remota o puede colocar HashOver y su sitio web en un servidor y llamarlo localmente. Las funciones son las siguientes:

1. Comentarios anidados

2. Admite editar o eliminar comentarios.

3. Apoya lo que te gusta o lo que no te gusta

4. Admite cinco métodos de clasificación inteligentes

5. Soporte en varios idiomas

6. Agregue automáticamente hipervínculos a las URL

7. Avatares de soporte

8. Admite imágenes de enlaces externos

9. Puedes personalizar el tema,

10. Admite etiquetas HTML personalizadas

11. CSS se puede personalizar

12. Admite la configuración del rango HTML

13. Admite filtrado de spam

14. Los comentarios tienen RSS

15. Enlace fijo de comentario personalizable

16. La dirección IP se puede bloquear

17. Admite la finalización de URL

18. Admite carga asincrónica AJax

Método JS:

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

Método PHP:

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

Método de carga asincrónica:

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

Opciones de configuración de JS. Puede configurar las opciones correspondientes al cargar JS, como cerrar el cuadro de nombre de usuario, el cuadro de correo electrónico, 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>

Este es el efecto del sistema de comentarios de HashOver.

3. Configuración del sistema HashOver

El archivo de configuración de HashOver: hashover/scripts/settings.php también proporciona muchas opciones de configuración. Aquí hay una selección de algunos códigos de configuración para explicación:

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

Para obtener instrucciones detalladas sobre la configuración, consulte la explicación anterior. Hay dos configuraciones clave: idioma y hora. Si configura el idioma, configure "idioma" en "zh-cn" y recuerde cambiar la zona horaria a la zona horaria de Shanghai.

4. Problemas relacionados con HashOver

Plantilla de tema HashOver. Puedes especificar la plantilla del tema en la configuración: public $theme = ‘default’; y puedes modificar el estilo CSS según tus propias necesidades.

Notificación por correo electrónico de HashOver. HashOver no proporciona configuración SMTP y proporciona notificaciones por correo electrónico directamente a través de la función mail(), por lo que necesita instalar un servidor de correo como postfix o sendmail en el host y habilitar mail() en php.ini.

¿Cómo habilita HashOver el modo de almacenamiento MysqL? La configuración predeterminada es: public $dataFormat = 'xml'; es decir, se utiliza el método de almacenamiento xml. El principio es: el primer comentario se denomina "1.xml" y el segundo comentario se denomina "2.xml". ", Y así sucesivamente. Cuando un usuario responde a un comentario, crea otro archivo. Cuando se elimina un comentario, el visitante simplemente eliminará el archivo correspondiente.

La ventaja de utilizar el método de almacenamiento xml es que es fácil de migrar y la velocidad de respuesta es rápida. Si desea cambiar al almacenamiento de la base de datos, primero cambie public $dataFormat = 'xml' a sql y luego complete su base de datos en Opciones generales de base de datos. Si tiene una base de datos remota, complete la información de la base de datos remota.

Los comentarios de Disqus se importan a Hashover. Programa Java: https://github.com/ianrenton/disqus-to-hashover, el método de operación es el siguiente:

1. Primero descargue el código fuente de JAVA y compílelo en NetBeans o Eclipse (recuerde seleccionar el complemento JAXB)

2. Exporte los datos como comments.xml en segundo plano de Disqus y colóquelos en el directorio del programa compilado.

3. Ejecute el programa JAVA compilado y se generará el directorio hashoverpage y cada archivo XML.

4. Cargue el directorio page generado al directorio donde se encuentra HashOver en el servidor.

Además, HashOver se encuentra actualmente en la versión de prueba 2.0, por lo que todavía quedan muchos problemas por resolver. Los siguientes son posibles problemas en la versión actual. Si encuentra problemas similares, puede consultarlos.

Error de PDO. Después de seleccionar mysql y completar la información de la base de datos, apareció el siguiente mensaje de error: HashOver: ¡No se pudo incluir el archivo PDO.php! La razón es que la clase PDO en algún lugar olvidó agregar el espacio de nombres raíz. Actualmente, alguien ha enviado un PR para este problema. Podemos cambiarlo nosotros mismos antes de la fusión oficial.

#打开:hashover/scripts/parsesql.php

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

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

Problema entre dominios de AJAX. Al habilitar el modo ajax en el archivo de configuración, encontrará que todas las solicitudes fallan. Debido a que hashover no maneja el acceso entre dominios (agregando el encabezado CORS), el navegador intercepta la solicitud. Puede agregar código en la parte superior de 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 al no guardar la información del usuario. hashover no maneja el acceso entre dominios, por lo que solo agregar el encabezado cors no puede guardar las cookies. La solución es encontrar XMLHttpRequest en hashover/scripts/javascript-mode.php y agregar withCredentials=true a todos los objetos XHR.

HashOver usa SMTP para enviar cartas. Esta parte es una reproducción de Weiyu de Weng. Para conocer el proceso de modificación específico, puede leer atentamente el artículo del blogger El segundo artículo de la serie hashover: correo electrónico SMTP . Aquí puede descargar los archivos smtp.php y writecomments.php modificados por Weng: hashover-smtp.zip. Copia de seguridad: https://www.ucblog.net/wzfou/hashover-smtp-pack.zip

Descomprima el smtp.php descargado y colóquelo en el directorio de scripts de hashover. Asegúrese de abrir el editor y reemplazar SMTP con su propia información, y luego sobrescriba el archivo original con writecomments.php. Finalmente, se pueden implementar recordatorios de notificación por correo electrónico de respuesta a comentarios.

5. Resumen

HashOver es bastante conveniente de instalar y usar. El almacenamiento de datos de comentarios usa XML de forma predeterminada. Si desea cambiar al formato de base de datos, se recomienda utilizar un servidor dedicado para el almacenamiento de datos de comentarios y hacer referencia remota a los comentarios de HashOver en otras páginas web. Ya no tendrás que preocuparte por la pérdida de datos.

En la introducción de este artículo, también puede ver que HashOver tiene muchos problemas. Esto puede deberse en gran medida al hecho de que HashOver es un programa personal mantenido por desarrolladores extranjeros y, afortunadamente, proporciona una gran cantidad de opciones de configuración para que todos puedan personalizar. Los amigos interesados ​​pueden ir al sitio web oficial de HashOver para leer la documentación de desarrollo.

PD:Registro de actualización del artículo:

El 19 de agosto de 2017, HashOver se actualizó para utilizar SMTP para enviar cartas.

Deja una respuesta