Quando se trata de sistemas domésticos de comentários sociais, temos que mencionar alguns serviços representativos, como Duosuo, Denglu, Youyan, Comments, NetEase Cloud Posts e Sohu Changyan. Há alguns anos, quando os comentários sociais se tornaram populares, os sistemas de comentários que acompanham programas como o WordPress não eram usados. Alguns Weibo incorporados como comentários de sites e alguns usavam serviços de terceiros, como Duosuo, Denglu e Youyan para substituir os comentários. . de.

Uma vantagem de usar um sistema de comentários sociais de terceiros é que ele evita que os comentaristas tenham o trabalho de fazer login. No entanto, na minha opinião, uma desvantagem fatal é que os dados dos comentários são armazenados nas mãos de terceiros. Em outras palavras, como blogueiro, não posso garantir a segurança dos dados do site. Uma vez interrompido o serviço de terceiros, mesmo que eu possa exportar os dados dos comentários, isso consumirá muito tempo e energia.

Agora vamos dar uma olhada em alguns serviços representativos, como Duosuo, Denglu, Youyan, Comments, NetEase Cloud Posts e Sohu Changyan. Os que estão atualmente “meio mortos” são Youyan e Sohu Changyan. Outros foram basicamente declarados “mortos”. em ação" (incluindo a postagem de acompanhamento da NetEase Cloud sobre estar "morto em ação"). Algumas pessoas podem argumentar que também existem Youyan e Sohu Changyan que podem ser usados?

Instalação e uso do sistema de comentários PHP de código aberto gratuito HashOver - o sistema de comentários autoconstruído substitui serviços de terceiros

No momento, o site oficial do Youyan está basicamente indisponível para mim. Olhando para o número de usuários do Youyan, deve haver “muito poucos” restantes. Vejamos Sohu Changyan novamente. Vi este artigo no site oficial de Sohu: “Fale mais sobre a culpa deixada para trás, deixe Changyan assumir o controle com firmeza”.

O chamado “pote” não é tão fácil de “consertar”. Isso me lembra Quando o 115 Netdisk foi fechado, o 360 Netdisk disse que nunca iria desligar. Mais tarde, quando o 360 Netdisk encerrou seu serviço, o Baidu Netdisk se levantou e disse que forneceria serviços normalmente. Então, olhe para o Baidu Netdisk atual... e quando o WeChat disse que cobra taxas para saques em dinheiro, o Alipay se levantou e disse que ainda é gratuito. Mais tarde, o Alipay também começou a cobrar taxas por saques em dinheiro e nunca mais vi ninguém se manifestar.

Eu realmente espero que Sohu Changyan possa ir mais longe, para que possa sobrar tempo suficiente para que nossos amigos que ainda usam análises de terceiros percebam que os dados mais confiáveis ​​​​estão em suas próprias mãos. HashOver, que este artigo irá apresentar, é um sistema de comentários PHP gratuito e de código aberto que pode nos ajudar a construir nosso próprio sistema de comentários. É fácil de fazer backup e migrar, pode ser incorporado remotamente e é seguro e confiável.

Para mais programas de construção de sites e hosts VPS, você também pode conferir:

  1. Um webmaster que usa hospedagem Alibaba Cloud VPS há três anos resumiu as cinco principais características do Alibaba Cloud
  2. WHMCS integra VPS.net para ativar automaticamente um tutorial de host VPS - vender servidores VPS em WHMCS
  3. Experiência de host VPS.net VPS - verificação de conta e desempenho de host VPS e avaliação de velocidade

1. Método de instalação HashOver

Site oficial do HashOver: http://tildehash.com/?page=hashover, página inicial do projeto: https://github.com/jacobwb/hashover-next. HashOver só precisa de PHP para rodar, então prepare um ambiente LNMP.

Baixe: versão HashOver 2.0 do site oficial, crie uma nova pasta no diretório raiz do servidor: hashover e carregue o arquivo HashOver 2.0 baixado para esta pasta. Em seguida, modifique as permissões do arquivo da seguinte maneira:

Certifique-se de que todos os arquivos tenham pelo menos permissões "0644"

Certifique-se de que todos os arquivos PHP tenham pelo menos permissões "0755"

Certifique-se de que as permissões do diretório "hashover/pages" sejam "0777"

Modifique o arquivo de configuração básica do HashOver. Editar: hashover/scripts/settings.php, preencha seu e-mail de notificação em $notification_email, preencha o símbolo de criptografia de 8 a 32 bits em $encryption_key, defina o nome de usuário de gerenciamento em $admin_nickname e defina a senha do administrador em $admin_password . Como mostrado abaixo:

2. Tutorial de uso do HashOver

O HashOver pode ser incorporado em qualquer página da web. Você pode chamá-lo remotamente ou colocar o HashOver e seu site em um servidor e chamá-lo localmente. As funções são as seguintes:

1. Comentários aninhados

2. Suporte para edição ou exclusão de comentários

3. Apoie gostos ou desgostos

4. Suporta cinco métodos de classificação inteligentes

5. Suporte multilíngue

6. Adicione hiperlinks automaticamente a URLs

7. Apoie avatares

8. Suporte para imagens de links externos

9. Você pode personalizar o tema,

10. Suporte a tags HTML personalizadas

11. CSS pode ser personalizado

12. Suporte para configuração de intervalo HTML

13. Suporte à filtragem de spam

14. Comentários têm RSS

15. Link fixo de comentário personalizável

16. O endereço IP pode ser bloqueado

17. Preenchimento de URL de suporte

18. Suporta carregamento assíncrono 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 carregamento assíncrono:

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

Opções de configuração JS. Você pode definir opções correspondentes ao carregar JS, como fechar a caixa de nome de usuário, caixa de e-mail, 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 é o efeito do sistema de comentários do HashOver.

3. Configurações do sistema HashOver

O arquivo de configuração do HashOver: hashover/scripts/settings.php também fornece muitas opções de configuração. Aqui está uma seleção de alguns códigos de configuração para explicação:

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

Consulte a explicação acima para obter uma explicação detalhada das configurações, duas configurações principais: idioma e hora. Se definir o idioma, defina "idioma" como "zh-cn" e lembre-se de alterar o fuso horário para o fuso horário de Xangai.

4. Problemas relacionados ao HashOver

Modelo de tema HashOver. Você pode especificar o modelo do tema nas configurações: public $theme = ‘default’;, e você pode modificar o estilo CSS de acordo com suas próprias necessidades.

Notificação por e-mail HashOver. HashOver não fornece configurações de SMTP e fornece notificação por e-mail diretamente através da função mail(), então você precisa instalar um servidor de e-mail como postfix ou sendmail no host e habilitar mail() no php.ini.

Como o HashOver ativa o modo de armazenamento Mysql? A configuração padrão é: public $dataFormat = 'xml', ou seja, o método de armazenamento xml é usado: o primeiro comentário é denominado "1.xml" e o segundo comentário é denominado "2.xml. " ,E assim por diante. Quando um usuário responder a um comentário, crie outro arquivo. Quando um comentário é excluído, o visitante simplesmente excluirá o arquivo correspondente.

A vantagem de usar o método de armazenamento XML é que ele é fácil de migrar e a velocidade de resposta é rápida. Se você deseja mudar para o armazenamento de banco de dados, primeiro altere public $dataFormat = ‘xml’ para sql e, em seguida, preencha seu banco de dados em Opções gerais de banco de dados. Se você tiver um banco de dados remoto, preencha as informações do banco de dados remoto.

Os comentários do Disqus são importados para o Hashover. Programa Java: https://github.com/ianrenton/disqus-to-hashover, o método de operação é o seguinte:

1. Primeiro baixe o código-fonte JAVA e compile-o no NetBeans ou Eclipse (lembre-se de selecionar o plug-in JAXB)

2. Exporte os dados como comments.xml no plano de fundo do Disqus e coloque-os no diretório do programa compilado.

3. Execute o programa JAVA compilado e o diretório hashoverpage e cada arquivo XML serão gerados.

4. Faça upload do diretório page gerado para o diretório onde o HashOver está localizado no servidor.

Além disso, o HashOver está atualmente na versão de teste 2.0, portanto, ainda há muitos problemas a serem resolvidos. A seguir estão os possíveis problemas na versão atual. Se você encontrar problemas semelhantes, poderá consultá-los.

Erro DOP. Após selecionar mysql e preencher as informações do banco de dados, a seguinte mensagem de erro apareceu: HashOver: arquivo PDO.php não pôde ser incluído!. No momento, alguém enviou um PR para este problema. Podemos fazer algumas alterações antes da fusão 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 domínios AJAX. Ao ativar o modo ajax no arquivo de configuração, você descobrirá que todas as solicitações falham. Como o hashover não lida com o acesso entre domínios (adicionando o cabeçalho CORS), a solicitação é interceptada pelo navegador. Você pode adicionar código no topo de hashover/scripts/settings.php ou configurá-lo com Nginx/apache.

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

Problema de não salvar informações do usuário. hashover não lida com acesso entre domínios, portanto, apenas adicionar o cabeçalho cors não pode salvar cookies. A solução é encontrar XMLHttpRequest em hashover/scripts/javascript-mode.php e adicionar withCredentials=true a todos os objetos XHR.

HashOver usa SMTP para enviar cartas. Esta parte foi reproduzida do Weiyu de Weng Para o processo de modificação específico, você pode ler atentamente o artigo do blogueiro O segundo artigo da série hashover: Email SMTP . Aqui você pode baixar os arquivos smtp.php e writecomments.php modificados de Weng: hashover-smtp.zip. Backup: https://www.ucblog.net/wzfou/hashover-smtp-pack.zip

Descompacte o smtp.php baixado e coloque-o no diretório de scripts do hashover. Certifique-se de abrir o editor e substituir o SMTP por suas próprias informações e, em seguida, sobrescreva o arquivo original por writecomments.php. . Finalmente, você pode implementar lembretes de notificação por email de resposta de comentário.

5. Resumo

O HashOver é bastante conveniente de instalar e usar. O armazenamento de dados de comentários usa XML por padrão. Se você quiser mudar para o formato de banco de dados, é recomendado usar um servidor dedicado para armazenamento de dados de comentários e fazer referência remota aos comentários do HashOver em outras páginas da web. você não precisa mais se preocupar com perda de dados.

Na introdução deste artigo, você também pode ver que o HashOver tem muitos problemas. Isso pode ser em grande parte devido ao fato de o HashOver ser um programa pessoal mantido por desenvolvedores estrangeiros. Felizmente, ele oferece uma variedade de opções de configuração para todos personalizarem. Amigos interessados ​​​​podem acessar o site oficial do HashOver para ler a documentação de desenvolvimento.

PS:Registro de atualização do artigo:

Em 19 de agosto de 2017, o HashOver foi atualizado para usar SMTP para enviar cartas.

Deixe uma resposta