Como criptografar texto dentro de um script PHP

Neste post vou mostrar como usar a função crypt do PHP, para codificar em base64 um texto dentro de um script.
O exemplo pode ser facilmente adaptado ou readequado para ser usado em seus scripts do dia a dia.
O programa pega o texto “uma senha qualquer” e a criptografa.
Em seguida, exibe o resultado criptografado na tela.
O código tanto pode ser executado no seu servidor web (Apache) como no terminal.
No meu exemplo, uso um terminal.
Segue o código, com os comentários:


<?PHP
// senha em texto puro a ser criptografada
$senhaTextoPuro = 'uma senha qualquer';

// criptografa o texto dado acima
$senha = crypt($senhaTextoPuro, base64_encode($senhaTextoPuro));

// exibe a senha codificada
echo $senha;
?>

Eu gravei o códio em um arquivo chamado senha.php
Para rodar o script no terminal, invoque o interpretador PHP:


php senha

dWo4bd6Qavg2Q

Como instalar a interface de linha de comando do WordPress

Alguns usuários podem ter utilidade para uma interface de linha de comando, para realizar atividades administrativas relacionadas ao WordPress.
Para estes, existe o wp-cli — WordPress Command Line Interface, ou “interface de linha de comando do WordPress”.

Sua instalação é simples e leva menos de 30 segundos (verdade!).
Veja quais são os prerequisitos para baixar, instalar e usar o wp-cli:

  1. Ambiente UNIX-like, o que inclui o OSX, sua distro Linux favorita, FreeBSD e Cygwin (para usuários Windows). No ambiente Windows, há suporte limitado do aplicativo, mas é possível usá-lo.
  2. PHP — a versão 5.3.29 é requerida, mas as atuais distribuições GNU/Linux já estão usando versões superiores à 7.0.
  3. WordPress 3.7 ou superior.

Por fim, use o comando wget (ou o curl) para fazer o download do wp-cli.phar:


wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Se preferir usar o curl, faça assim:


curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Verifique se aplicativo já está funcionando adequadamente:


php wp-cli.phar --info

PHP binary: /usr/bin/php7.0
PHP version:    7.0.19-1
php.ini used:   /etc/php/7.0/cli/php.ini
WP-CLI root dir:    phar://wp-cli.phar
WP-CLI vendor dir:  phar://wp-cli.phar/vendor
WP_CLI phar path:   /home/apps
WP-CLI packages dir:    
WP-CLI global config:   
WP-CLI project config:  
WP-CLI version: 1.3.0

Para tornar o uso do aplicativo mais simplificado, vamos torná-lo executável:


chmod +x wp-cli.phar 

… e movê-lo para um diretório mais apropriado.


sudo mv wp-cli.phar /usr/local/bin/wp

Agora já será possível executá-lo, sem digitar “PHP” no começo:


wp --info

PHP binary: /usr/bin/php7.0
PHP version:    7.0.19-1
php.ini used:   /etc/php/7.0/cli/php.ini
WP-CLI root dir:    phar://wp-cli.phar
WP-CLI vendor dir:  phar://wp-cli.phar/vendor
WP_CLI phar path:   /home/apps
WP-CLI packages dir:    
WP-CLI global config:   
WP-CLI project config:  
WP-CLI version: 1.3.0

Se preferir, na hora de baixar o programa, é possível optar pela versão nightly (a versão dos desenvolvedores). Ela tem os recursos mais atuais, porém é menos testada do que a versão estável.


wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli-nightly.phar

Feito o download, basta repetir os procedimentos acima — tendo o cuidado de trocar o nome da versão estável pelo da nightly.


Sempre que quiser atualizar o wp-cli, use a opção ‘update’:


sudo wp cli update
[sudo] senha para justincase: 
Success: WP-CLI is at the latest version.

Se quiser passar a usar a versão nightly, é possível fazer a troca também através do ‘update’. Veja:


sudo wp cli update --nightly

Como configuração adicional, torne o aplicativo amigável ao recurso de autocompletar:


wget https://raw.githubusercontent.com/wp-cli/wp-cli/master/utils/wp-completion.bash

Use o source, para incluir o recurso no BASH, inclua a seguinte linha no seu .bashrc:


source /caminho/para/wp-completion.bash 

… ou seja, se este arquivo estiver no seu diretório home, use “source ~/wp-completion.bash” (sem as aspas).
Para que a alteração tenha efeito imediato, rode o comando:


source ~/.bash_profile

Agora, é só usar!

Assine este site

Todo dia eu aprendo alguma coisa nova sobre administração de servidores, WordPress, bancos de dados, Android etc.
Desde o começo, este site existe para compartilhar o que sei com outras pessoas.
Se quiser ser avisado(a) quando houver post novo no blog, inscreva-se abaixo!

Referências

https://make.wordpress.org/cli/handbook/installing/.
Leia mais sobre WordPress, neste site.

Teste o seu servidor para saber se ele suporta as últimas versões do WordPress

O sistema de gestão de conteúdo WordPress não é dos mais exigentes, em termos de recursos de hardware e software, mas para ter um desempenho melhor há algumas recomendações mínimas que o seu host precisa satisfazer.
Embora o hardware e a largura de banda disponível para o tráfego sejam fundamentais para o desempenho do WordPress, como CMS (Content Management System ou sistema de gestão de conteúdo), neste post vou me ater aos requisitos de software no servidor.
Se tiver dúvidas, em algum ponto, clique nos links ou nas tags no texto para obter maiores especificidades sobre algum tema.

O que você precisa ter para poder testar o seu servidor

Servidores podem ser testados à distância, online ou através de sites especializados neste tipo de tarefa.
Por questões de segurança, contudo, muitos administradores procuram esconder informações sobre as versões dos softwares instalados nos seus sistemas.
Entretanto, um dos requisitos para instalar o WordPress é ter acesso SSH ao servidor — a menos que você vá realizar todos os procedimentos em uma máquina local.
Portanto, neste texto, partimos do pressuposto de que você tem acesso SSH (Secure SHell) ao seu servidor, que é o suficiente para obter as informações de que necessita.

O sistema operacional

Você pode instalar tudo o que precisa, para dar suporte ao WordPress em uma máquina Windows, MacOS, UNIX (FreeBSD) etc.
O sistema operacional Linux, contudo é o mais usado — pelo baixo custo e pela confiabilidade.
Há alguns testes propostos neste artigo, que levam em conta uma instalação Linux.
Estes testes pode ser realizados em outros sistemas operacionais, com pouca ou nenhuma edição.

Em outras palavras, para o fim deste artigo, o sistema operacional que você tem aí, não é tão relevante.

Os requisitos de sistema

Localmente, você pode instalar, por conta própria, um servidor LAMP (acrônimo que corresponde a Linux, Apache, MySQL/MariaDB e PHP).
Se tiver interesse em montar um servidor deste tipo, veja alguns artigos que podem te ajudar:

De maneira resumida, Para rodar a versão mais atual do WordPress, com segurança e máximo desempenho, você precisa ter suporte aos seguintes softwares (e versões):

  • Servidor web Apache ou Nginx.
  • PHP na versão 7 ou superior.
  • Um destes 2 bancos de dados:
    • MySQL 5.6 ou superior
    • MariaDB 10.0 ou superior
  • suporte a HTTPS (não é obrigatório, mas é bom ter).

É possível usar outros servidores web (com suporte a PHP e MySQL/MariaDB), tal como o Lighttpd. Além disto, versões atuais do WordPress (na data deste post) ainda funcionam em versões anteriores do PHP.
Contudo, a melhor relação entre alta performance e segurança, só serão obtidos sob aqueles requisitos listados acima.
Vale ressaltar que as versões mais antigas do PHP e do MySQL já atingiram seus tempos de vida e já não recebem atualizações de segurança — o que pode expôr o seu site a vulnerabilidades e a ataques de crackers.
Por último – e não menos importante – este site usa e recomenda o DreamHost, como provedor de hospedagem.
O DreamHost faz uso das versões mais atuais dos softwares requeridos, tem suporte a HTTPS e dispõe de instalação automática do WordPress (one-click install), o que pode te poupar muito tempo.

Como verificar se as versões dos softwares requeridos estão presentes

Acesse o servidor localmente (com um terminal) ou remotamente (via SSH) e siga os procedimentos abaixo.
Para verificar o PHP e sua versão:


php --version

PHP 7.0.19-1 (cli) (built: May 11 2017 14:04:47) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.19-1, Copyright (c) 1999-2017, by Zend Technologies

Para verificar se o MySQL está presente e sua versão:


mysql --version

mysql  Ver 15.1 Distrib 10.1.23-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Acima, note que o comando ‘mysql’ exibe a versão do MariaDB.
Isto ocorre, por que é este último que se encontra instalado e não o MySQL.
Ainda assim, pelo motivo de facilitar a transição, o comando mysql ainda funciona em instalações de bancos de dados (exclusivamente) MariaDB.
Para conferir o MariaDB:


mariadb --version

mariadb  Ver 15.1 Distrib 10.1.23-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Por fim, em sistemas Linux atuais (com o systemd) é possível conferir o status do Apache, como este comando:


systemctl status apache2

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: 
   Active: active (running) since Mon 2017-07-24 09:58:25 -03; 3 days ago
  Process: 16914 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/
 Main PID: 597 (apache2)
    Tasks: 7 (limit: 4915)
   CGroup: /system.slice/apache2.service
           ├─  597 /usr/sbin/apache2 -k start
           ├─16930 /usr/sbin/apache2 -k start
           ├─16931 /usr/sbin/apache2 -k start
           ├─16932 /usr/sbin/apache2 -k start
           ├─16933 /usr/sbin/apache2 -k start
           ├─16934 /usr/sbin/apache2 -k start
           └─17106 /usr/sbin/apache2 -k start

Outra forma de verificar a versão do Apache, está descrita neste post.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

Como instalar um servidor web LAMP no Debian 9

Um servidor web é um ponto de início básico para poder instalar e usar uma série de outros softwares e serviços, como galeria de fotos, blog, fórum ou apenas um simples site HTML.
O LAMP é, basicamente, um web server Linux, que inclui o Apache, um banco de dados e suporte à linguagem de programação PHP.

O assunto já rendeu várias tags LAMP e posts diversos, neste mesmo site.
No decorrer do texto, sugiro clicar nos links, sempre que tiver alguma dúvida e queira se aprofundar um pouco mais em um ponto específico.
O conceito é bastante flexível, como podemos ver a seguir

O que é um servidor web LAMP

Como conceito, o LAMP inclui estas 4 “peças”:

  • Você pode usar uma das diversas opções Linux disponíveis. Neste texto, estamos nos baseando no Debian 9 Stretch — que é uma versão LTS do sistema operacional, ou seja, vai ter suporte prolongado até 2022, após quase 2 anos de desenvolvimento — uma ótima opção, portanto, a ser usada em um servidor. A gama de sistemas operacionais, contudo, inclui o FreeBSD e até mesmo o Windows. Neste último caso, o servidor leva o nome de WIMP (Windows, IIS, MySQL e PHP) e, como você pode ver no link para o Urban Dictionary, o termo costuma ter sentido pejorativo.
    Como alternativas, já escrevi sobre como instalar o LAMP no Ubuntu e no OpenSUSE.
  • O servidor web, de que falamos aqui, é o Apache. Alternativas comuns são o Nginx e o Lighttpd.
  • O banco de dados MySQL foi a escolha perfeita deste quarteto, por muito tempo. Hoje, há um processo de migração para o MariaDB em curso — e o Debian está seguindo esta tendência.
  • Por último, temos a escolha da linguagem de programação, até onde se estende a flexibilidade do conceito.
    As escolhas mais comuns são, pela ordem, PHP, Python e Perl — que coincidentemente começam com a letra ‘P’.
    Entretanto, se quiser rodar apps web importantes, como o WordPress, e-commerce ou Piwigo, você vai precisar do PHP.
    Servidores Linux, contudo, já costumam incluir suporte ao Perl e ao Python.
    Se você tem interesse no uso de alguma destas duas opções, verifique se estão presentes no servidor com os seguintes comandos:

    
    perl --version
    
    This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linux-gnu-thread-multi
    (with 67 registered patches, see perl -V for more detail)
    
    Copyright 1987-2017, Larry Wall
    
    ...
    
    
    python --version
    
    Python 3.5.3
    

    Tenha em conta que o Python pode ter 2 versões independentes instaladas, em muitas distribuições GNU/Linux.

Como instalar o servidor web no Debian

O Debian tem uma ferramenta que automatiza a instalação de meta pacotes para o seu sistema.
Sugiro ler sobre o tasksel, mais tarde, para ver o que mais o utilitário pode fazer por você.
Para ter o Apache instalado e rodando, em poucos minutos, rode o seguinte comando:


sudo tasksel install web-server

debian tasksel web-server
Debian tasksel web-server install
Para verificar se o seu web server está funcionando direito, execute o seguinte:


sudo service apache2 status

[sudo] senha para justincase: 
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; 
   Active: active (running) since Sun 2017-07-16 12:26:00 -03; 15
 Main PID: 6524 (apache2)
    Tasks: 55 (limit: 4915)
   CGroup: /system.slice/apache2.service
           ├─6524 /usr/sbin/apache2 -k start
           ├─6526 /usr/sbin/apache2 -k start
           └─6527 /usr/sbin/apache2 -k start

jul 16 12:26:00 ultra-5 systemd[1]: Starting The Apache HTTP Serv
jul 16 12:26:00 ultra-5 apachectl[6513]: AH00558: apache2: Could 
jul 16 12:26:00 ultra-5 systemd[1]: Started The Apache HTTP Serve
lines 1-13/13 (END)

Procure por “active (running)“.
Debian test web-server Apache
Você também pode testar o Apache invocando o daemon diretamente (ops!), da seguinte forma:


sudo apachectl -v

Server version: Apache/2.4.25 (Debian)
Server built:   2017-06-20T19:29:11

Outro método de verificar se tudo está OK, é acessar o servidor via web: abra o endereço http://localhost em seu navegador.

Até agora, já temos o Apache rodando no sistema.
Falta o banco de dados e o PHP…

Como instalar o MariaDB no Debian

O banco de dados pode ser instalado via apt:


sudo apt install mariadb-server mariadb-client 

Ainda existe a necessidade de instalar uma pequena biblioteca para ajudar na integração entre o PHP e o banco de dados, que iremos ver no próximo tópico.
Por enquanto, faremos uma rápida checagem:


mariadb --version

mariadb  Ver 15.1 Distrib 10.1.23-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

ou pode usar o service, como fez, anteriormente, com o Apache:


sudo service mariadb status

● mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2017-07-16 15:17:52 -03; 15min ago
 Main PID: 9974 (mysqld)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─9974 /usr/sbin/mysqld

jul 16 15:17:50 ultra-5 systemd[1]: Starting MariaDB database server...
jul 16 15:17:51 ultra-5 mysqld[9974]: 2017-07-16 15:17:51 139788240409152 [Note] /usr/sbin/mysqld (mysqld 10.1.23-MariaDB-9+deb9u1) starting as proces
jul 16 15:17:52 ultra-5 systemd[1]: Started MariaDB database server.

Se o serviço não estiver active, ative-o assim:


systemctl start {apache2,mariadb}

Como instalar o PHP no Debian

Alguns tutoriais recomendam a instalação do PHP primeiro. Isto pouparia o tempo de reiniciar o Apache. Fora isso, o resultado é o mesmo.
O Debian 9 já usa, não somente, o MariaDB como padrão, como o PHP 7.0 em seus repositórios.
Tradicionalmente, a instalação é feita assim:


sudo apt install php php-mysqli apache2-mod-php7.0

Instale o phpmyadmin

Por fim, o phpmyadmin cumpre duas funções neste processo, como um todo.
É raro realizar operações diretamente no banco de dados, se você pretende usar aplicativos como o WordPress — uma vez que há plugins para isso.
Mas nem todo mundo gosta de confiar tarefas de manutenção do banco de dados a ferramentas de terceiros.
Além disto, os plugins acrescentam “peso” ao seu site e o “manual das boas práticas” manda não abusar do recurso.

O phpmyadmin, permite realizar tarefas administrativas nos bancos de dados MySQL/MariaDB.
A ferramenta representa um meio-termo entre a simplicidade dos plugins e a complexidade da linha de comando (CLI).

A segunda função do aplicativo é ajudar a verificar se toda a instalação, feita até aqui, ocorreu bem.


sudo apt install phpmyadmin


Isto feito, não se esqueça de reiniciar o serviço do Apache:


sudo systemctl restart apache2

O fato é que se ficou faltando alguma coisa, nos passos anteriores, a instalação do phpmyadmin irá cuidar de garantir que todas as dependências estejam instaladas e configuradas.
phpmyadmin frontscreen
Basta abrir a página http://localhost/phpmyadmin, para ver se tudo está bem ou não.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Como criar tabelas MySQL em um script PHP

Já expliquei anteriormente, no artigo como criar tabelas no MySQL como realizar esta mesma tarefa dentro da linha de comandos do MySQL.
Neste texto, vou mostrar como obter o resultado através de um script PHP.
Abra o seu editor de textos favorito e vamos ao código:

<html>
<head>
<title>Como criar tabelas com PHP</title>
</head>
<body>
<?php
/* substitua as variáveis abaixo pelas que se adequam ao seu caso */
$dbhost = 'localhost:3036'; // endereco do servidor de banco de dados
$dbuser = 'root'; // login do banco de dados
$dbpass = 'minhasenha'; // senha
$dbname = 'nomebanco'; // nome do banco de dados a ser usado
$conecta = mysql_connect($dbhost, $dbuser, $dbpass, $dbname);
$seleciona = mysql_select_db($dbname);
$sqlcriatabela = "CREATE TABLE contatos (nome VARCHAR(50), telefone VARCHAR(25));";
$criatabela = mysql_query( $sqlcriatabela, $conecta );

// inicia a conexao ao servidor de banco de dados
if(! $conecta )
{
  die("<br />Nao foi possivel conectar: " . mysql_error());
}
echo "<br />Conexao realizada!";

// seleciona o banco de dados no qual a tabela vai ser criada
if (! $seleciona)
{
  die("<br />Nao foi possivel selecionar o banco de dados $dbname");
}
echo "<br />selecionado o banco de dados $dbname";

// finalmente, cria a tabela 
if(! $criatabela )
{
  die("<br />Nao foi possivel criar a tabela: " . mysql_error());
}
echo "<br />A tabela foi criada!";

// encerra a conexão
mysql_close($conecta);
?>
</body>
</html>

Crie uma tabela temporária no MySQL

Ao usar o parâmetro TEMPORARY, a tabela seria criada e depois eliminada, ao final da sessão, com o comando mysql_close($conecta); na linha 39. Assim, a cada vez que a página é recarregada, a tabela é recriada e removida.
Altere o código, pratique e divirta-se!