DickRips – Informatica e Atualidade

Pagina dedicada ao Linux, Tecnologias e diversidades

Arquivo da categoria ‘Programação’

Apache PHP Postgresql no CentOS e Fedora

Publicado por Daniel Carraro Tomasini em Janeiro 16, 2009

Nesse pequeno tutorial vamos aprender a instalar e configurar de maneira básica um servidor Web na plataforma Linux (baseado no CentOS 5). Note que trata-se de material inédito, que será de grande valia para muitos que, como eu, precisam fazer isso e não encontram materiais disponíveis na web. Mãos à obra!

1) Abra o shell e logue como root:
No CentOS e Fedora o pacote chama-se httpd;

2) Instalando o Apache:
# yum install httpd

Após a instalação, é necessário rodar o comando chkconfig para que ele seja ativado no boot:
# chkconfig httpd on

3) Para iniciar o serviço temos duas opções de comandos:
# service httpd start
OU
# /etc/init.d/httpd start

start: Inicia o serviço
stop: Para o serviço
restart: Para e inicia o serviço
reload: Apenas atualiza a configuração, sem para o serviço.

Após iniciar o serviço, abra o navegador e digite, para testar o serviço:
http://127.0.0.1
Se for carregada a página inicial do APACHE, significa que a instalação foi concluída com sucesso!

Todas as configurações do Apache no CentOS e Fedora ficam no arquivo:
/etc/httpd/conf/httpd.conf

Os sites ficam concentrados dentro do diretório:
/var/www/html/

4) Instalando o suporte a PHP:
# yum install php

5) Instalando o módulo PHP para fazer a junção com Postgresql:
# yum install php-pgsql

Para que as alterações entrem em vigor, reinicie o Apache:
# service httpd restart

Para verificar se o suporte a PHP esta ativo, crie um arquivo com o nome teste.php dentro da pasta /var/www/html/
que contenha a seguinte linha:
<?php phpinfo( ); ?>

Abra o seu navegador e digite o endereço:
http://127.0.0.1/teste.php

6) Instalando o Postgresql com todas as suas dependências:
# yum install postgresql*.*

Iniciando o serviço e ativando-o no boot:
# service postgresql start
# chkconfig postgresql on

Os arquivos de configuração do Postgresql se encontram dentro da pasta:
/var/lib/pgsql/data/

Acesse esse diretório e vamos editar os arquivos de configuração:
# cd /var/lib/pgsql/data
# vi pg_hba.conf

No final do arquivo deixe as linhas conforme o exemplo abaixo:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:

Libera o acesso para a máquina local sem senha:
host all all 127.0.0.1/32 trust

Libera o acesso para a rede local sem senha:
host all all 192.168.0.0/24 trust

# Libera o acesso externo sem senha
host all all 0,0,0,0 0,0,0,0 trust

# IPv6 local connections:

#host all all ::1/128 ident sameuser

Para que as alterações entrem em vigor reinicie o serviço:
# service postgresql restart

Agora vamos editar o arquivo postgresql.conf:
# vi postgresql.conf

Descomente e modifique as linhas abaixo conforme o exemplo:

#—————————————————————————
# CONNECTIONS AND AUTHENTICATION #—————————————————————————

# – Connection Settings -

# Descomente, essa linha faz com que o Postgresql aceite conexões de qualquer ip.
listen_addresses = ‘*’ # what IP address(es) to listen on;

# comma-separated list of addresses;

# defaults to ‘localhost’, ‘*’ = all

# Descomente as linha abaixo,
port = 5432
max_connections = 500

Para que as alterações entrem em vigor reinicie o serviço:
# service postgresql restart

Alguns comandos básicos de Postgresql:

Criando uma base de dados chamada microcamp
# createdb -U postgres microcamp

Listando as bases de dados dentro do banco:
# psql -U postgres -l

Entrando dentro da base de dados microcamp
# psql -U postgres microcamp

# Listando o conteúdo da base de dados:
frigo2=# \d

# Atribuindo uma senha para a base de dados
frigo2=# alter user postgres with encrypted password ’senha’;

Para sair da base de dados use as teclas CTRL + D simultaneamente.

Após atribuido a senha a base de dados é necessário editar novamente o arquivo pg_hba.conf, trocando os métodos trust por md5 para que a senha seja requisitada ao tentar a conexão, lembrando que o arquivo se encontra dentro do diretório /var/lib/pgsql/data.
# cd /var/lib/pgsql/data
# vi pg_hba.conf

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# “local” is for Unix domain socket connections only

local all all md5

# IPv4 local connections:

# Libera o acesso para a máquina local sem senha
host all all 127.0.0.1/32 md5

# Libera o acesso para a rede local sem senha
host all all 192.168.0.0/24 md5

# Libera o acesso externo sem senha
host all all 0,0,0,0 0,0,0,0 md5

# IPv6 local connections:

#host all all ::1/128 ident sameuser

Para que as alterações entrem em vigor reinicie o serviço:
# service postgresql restart

Agora vamos testar a conexão com o Postgresql, crie um arquivo chamado conexao.inc.php dentro do diretório /var/www/html e adicione as linhas abaixo:

<?php

$strConexao=”host=localhost user=postgres dbname=frigo2 password=frigo13579 port=5432″;

$conexao=pg_connect($strConexao);

if(!$conexao){

echo “Erro na conexcao: ” . pg_last_error($conexao);

}

?>

Agora crie um arquivo chamado consultar_todos.php e adicione as linhas abaixo:

<?php

$strConexao=”host=localhost user=postgres dbname=frigo2 password=frigo13579 port=5432″;

$conexao=pg_connect($strConexao);

if(!$conexao){

echo “Erro na conexcao: ” . pg_last_error($conexao);

}

?>

Agora uma dica muito importante, para que a conexão possa ser estabelecida no CentOS é necessário desativar o SELinux, que por padrão na instalação fica ativado, para desativa-lo vá na área de trabalho e no menu Sistema -> Administração -> Nível de Segurança e Firewall e selecione Desativado

Pronto sua configuração básica já vai estar funcionando.

Fonte: www.microcampnews.com.br

Enviado em Linux, Programação, Redes, Servidores, Tecnico | Deixar um comentário »

Detectando Intrusos com o PHPIDS

Publicado por Daniel Carraro Tomasini em Junho 26, 2008

O PHPIDS é um sistema de Detecção de Intrusos baseado em assinaturas por expressão regular, e impede que scripts maliciosos sejam executados no servidor.
Segue abaixo o guia de instalação e configuração.
Boa Sorte!

Por razões de segurança, vou instalar PHPIDS fora do DocumentRoot e, por isso, criar o diretório / var/www/web1/phpids:

mkdir /var/www/web1/phpids

Baixe a ultima versão do PHPIDS e extraia – vamos precisar apenas do diretório LIB:

cd /tmp
wget http://php-ids.org/files/phpids-0.5.tar.gz
tar xvfz phpids-0.5.tar.gz
cd phpids-0.5
mv lib/ /var/www/web1/phpids/

Entre no diretório IDS…

cd /var/www/web1/phpids/lib/IDS

…e de permissão de escrita para o apache na pasta tmp:

chown -R www-data:www-data tmp/

Agora vamos configurar o Config.ini do PHPIDS.

cd Config/
vi Config.ini

Usei a config default, alterando apenas os paths:

; PHPIDS Config.ini

; General configuration settings

; !!!DO NOT PLACE THIS FILE INSIDE THE WEB-ROOT IF DATABASE CONNECTION DATA WAS ADDED!!!

[General]

filter_type = xml
filter_path = /var/www/web1/phpids/lib/IDS/default_filter.xml
tmp_path = /var/www/web1/phpids/lib/IDS/tmp
scan_keys = false

exceptions[] = __utmz
exceptions[] = __utmc

; If you use the PHPIDS logger you can define specific configuration here

[Logging]

; file logging
path = /var/www/web1/phpids/lib/IDS/tmp/phpids_log.txt

; email logging

; note that enabling safemode you can prevent spam attempts,
; see documentation
recipients[] = test@test.com.invalid
subject = “PHPIDS detected an intrusion attempt!”
header = “From: info@php-ids.org”
safemode = true
allowed_rate = 15

; database logging

wrapper = “mysql:host=localhost;port=3306;dbname=phpids”
user = phpids_user
password = 123456
table = intrusions

; If you would like to use other methods than file caching you can configure them here

[Caching]

; caching: session|file|database|memcached|none
caching = file
expiration_time = 600

; file cache
path = /var/www/web1/phpids/lib/IDS/tmp/default_filter.cache

; database cache
wrapper = “mysql:host=localhost;port=3306;dbname=phpids”
user = phpids_user
password = 123456
table = cache

; memcached
;host = localhost
;port = 11211
;key_prefix = PHPIDS
;tmp_path = /var/www/web1/p

Vamos agora criar o arquivo /var/www/web1/web/phpids.php que irá chamar o PHPIDS (mais tarde, vamos colocar este arquivo para todos os nossos arquivos PHP automaticamente):

vi /var/www/web1/web/phpids.php

set_include_path(
get_include_path()
. PATH_SEPARATOR
. ‘/var/www/web1/phpids/lib’
);

require_once ‘IDS/Init.php’;
$request = array(
‘REQUEST’ => $_REQUEST,
‘GET’ => $_GET,
‘POST’ => $_POST,
‘COOKIE’ => $_COOKIE
);
$init = IDS_Init::init(’/var/www/web1/phpids/lib/IDS/Config/Config.ini’);
$ids = new IDS_Monitor($request, $init);
$result = $ids->run();

if (!$result->isEmpty()) {
// Take a look at the result object
echo $result;
require_once ‘IDS/Log/File.php’;
require_once ‘IDS/Log/Composite.php’;

$compositeLog = new IDS_Log_Composite();
$compositeLog->addLogger(IDS_Log_File::getInstance($init));
$compositeLog->execute($result);
}
?>

Agora, quando você chamar o arquivo em um navegador, (por exemplo, http://192.168.0.100/phpids.php), você verá uma página em branco. Mas se você tentar anexar alguns parâmetros maliciosos para a URL (por exemplo, http://192.168.0.100/phpids.php?test =% 22% 3EXXX% 3Cscript% 3Ealert (1)% 3C/script% 3E), o PHPIDS irá detectar presente e imprimir as suas conclusões no navegador:

Agora temos de encontrar uma maneira de chamar o PHPIDS antes dos sites em PHP.Há duas maneiras de fazer isso.Por exemplo, se nós chamamos o script info.php em um navegador, o PHP iria executar o phpids.php primeiro e, depois, o info.php, (sem modificar o info.php).
Podemos fazer isso usando o parâmetro PHP’s auto_prepend_file no nosso php.ini (esta é uma definição global que é válido para todos os web sites PHP no servidor), ou em um .htaccess (esta é uma configuração válida apenas para o web site em questão):

php.ini
Abra o seu php.ini…

vi /etc/php5/apache2/php.ini

…e procure pela string “prepend_file”.Altere para:

[...]
auto_prepend_file = /var/www/web1/web/phpids.php
[...]

Restarte o apache:

/etc/init.d/apache2 restart

.htaccess
Em vez de alterar o php.ini (que é uma mudança global, ou seja, a mudança é válida para todos os sites que utilizam PHP no servidor), você pode usar o arquivo .htaccess (dessa forma apenas os sites que tiverem esse arquivo e uma configuração no apache chamarão o PHPIDS antes):

Crie um arquivo .htaccess…

vi /var/www/web1/web/.htaccess

…e adicione nele:

php_value auto_prepend_file /var/www/web1/web/phpids.php

Certifique-se que o vhost para o site em /var/www/web1/web contenha a string (caso contrário, o .htaccess será ignorado):

AllowOverride All

Crie o arquivo info.php…

vi /var/www/web1/web/info.php

…com este conteúdo:

phpinfo();
?>

Chame esse arquivo em um navegador (http://192.168.0.100/info.php), e você verá a saída normal do phpinfo ().

Agora se anexarmos alguns parâmetros maliciosos para a URL (por exemplo, http://192.168.0.100/info.php?test =% 22% 3EXXX% 3Cscript% 3Ealert (1)% 3C/script% 3E), você deverá encontrar um relatório PHPIDS antes do phpinfo () (porque o PHP /var/www/web1/web/phpids.php foi executado antes do /var/www/web1/web/info.php):

Cheque os logs em/var/www/web1/phpids/lib/IDS/tmp/phpids_log.txt, você deve ver algo nele:

cat /var/www/web1/phpids/lib/IDS/tmp/phpids_log.txt

“192.168.0.200″,2008-06-04T17:36:08+02:00,54,”xss csrf id rfe lfi”,”REQUEST.test=%5C%22%3EXXX%3Cscript%3Ealert%281%29%3C%2Fscript%3E GET.test=%5C%22%3EXXX%3Cscript%3Ealert%281%29%3C%2Fscript%3E”,
“%2Finfo.php%3Ftest%3D%2522%253EXXX%253Cscript%253Ealert%281%29%253C%2Fscript%253E”

Era isso!

Fonte: rmb.homelinux.com

Enviado em Programação, Segurança | Deixar um comentário »

Ubuntu + Apache2 + Mysql + PHP5 “LAMP”

Publicado por Daniel Carraro Tomasini em Abril 30, 2008

Aqui uma breve dica de como instalar tudo rapidinho no Ubuntu.Antes de mais nada vamos fazer um sudo apt-get update depois.

sudo apt-get install apache2 mysql-server-5.0 php5 php5-mysql

O simples comando acima irá instalar o apache 2, o mysql 5 e o php5, depois para testar se está tudo devidamente bem instalado crie um arquivo dentro de /var/www por exemplo

sudo vi teste.php

Dentro dele insira a linha <?php phpinfo(); ?>

Salve e saia, agora abra o seu navegador e digite http://localhost/teste.php se estiver tudo correto irás ver uma tela com várias informações sobre o seu servidor.

Dica de módulos a ser feita é a seguinte:

cd /etc/apache2/mods-enabled/
sudo ln -ns ../mods-available/php5.conf php5.conf
sudo ln -ns ../mods-available/php5.load php5.load
sudo /etc/init.d/apache2 reload

Beleza, está tudo pronto? Não! Ainda falta setar uma senha para o banco de dados MySQL, então faça o seguinte:

mysqladmin -u root password (senha que não precisa ser a mesma do sistema)

Pronto, agora temos o Apache, o MySQL e o PHP rodando, pode melhorar?

Claro que pode, um bom administrador de MySQL é o phpmysql, então faça o seguinte:

sudo apt-get install phpmyadmin

Agora se quiser usar a interface é só digitar http://localhost/phpmyadmin/

Mas eu gostaria de ter meu site em um host legal que não fosse meu ip, já que meu ip muda sempre que reconecto, para isso use o serviço do no-ip. Faça o cadastro e o seu domínio logo em seguida, assim:

sudo apt-get install no-ip

Agora vamos criar o host no seu apache assim:

sudo gedit /etc/apache2/httpd.conf

Agora insira o seguinte:

DocumentRoot /var/www/teste
ServerName “aqui vc coloca o host que vc criou no site do no-ip,sem aspas”
allow from all
Options +Indexes

agora vamos no hosts:

sudo gedit /etc/hosts

e coloque o ip da sua placa de redes local e o nome do host que vc criou no site do NO-IP.Exemplo:

192.168.254.10 diekn.serve-no-ip.com

Ok,salve o arquivo.

Agora vamos configurar o No-IP assim:

sudo no-ip -C
sudo no-ip
sudo no-ip -U15
sudo no-ip -S

Depois disso, estará pronto e funcionando e a cada 15 segundos ele atualizará o host no No-IP.

A parte do No-IP, foi retirada do Under-Linux.

Agora construa o seu site e fique tranquilo.

Fonte: andregondim.eti.br

Enviado em Programação, Servidores | Deixar um comentário »

Desenvolvendo para a web: por onde começar, afinal ?

Publicado por Daniel Carraro Tomasini em Setembro 10, 2007

Se você é programador a mais de 2 anos, provavelmente não começou programando como todos essas coisas que ouvimos nas conferências ou que temos lido durante esses últimos tempos.Alguns, talvez muitos dos programadores web são na verdade web developers, ou seja, uma mistura de programador com designer e como um bom developer você deve saber que se não manter-se atualizado, você está fora da tecnologia, afinal, somos provedores de tecnologia de uma forma ou de outra =)

Hoje muitos desenvolvem nos moldes de meados de 1999/2003, ou seja tem as características:

  • Programação procedural
  • HTML sem muita “frescura” para que fechar a tag body se ela não faz diferença mesmo ?
  • Estrutura do site em tabelas
  • Site for I.E only (Apenas para Internet Explorer)

Mas é claro que você dá valor aos clientes, e também pretende continuar no ramo, então, você decide se atualizar, mas antes de fazer qualquer coisa logo vem a pergunta à mente: “Por onde começar ?”

Como diria nossa “ministra”, relaxa e … continua lendo!
Não é nada fácil querer abraçar o mundo de um dia para o outro, então você precisa ir aos poucos! Vamos lá…

1. Programação O.O
Trocando em miúdos: Programação Orientada à objetos. Essa técnica consiste em desenvolver uma aplicação mas visando o lado que tudo (ou quase tudo) é um objeto. Até para um programador que sabe o que é e usa todo dia se você perguntar o que é programação Orientada à objetos ele vai parar, pensar e talvez até indagar: “O que é mesmo Orientação a Objetos ?”. Então, não se assuste com isso e também não precisa treinar a resposta para essa pergunta no espelho para ficar preparado quando te perguntarem )

Bom, chega de papo… usando o “PHP procedural” como você faria para:

    1. Acender uma lampada
      verificar seu status
      Apaga-la
      Verificar novamente seu status ?

Com a programação procedural, poderia ser assim:

PLAIN TEXT

PHP:

 

  1. <?php

  2.  

  3. $status = “Desligada”;

  4.  

  5. if($status == “Desligada”) {

  6. $status = “Ligada”;

  7. print “Acendendo a luz: Acendeu a lampada!<br>”;

  8. print “Estado atual da lampada: “ . $status . “<br />”;

  9. }

  10.  

  11. if($status == “Ligada”) {

  12. $status = “Desligada”;

  13. print “Apagando a luz: Apagou a lampada!<br />”;

  14. print “Estado atual da lampada: “ . $status;

  15. }

  16. ?>

Agora, com a programação O.O:

PLAIN TEXT

PHP:

 

  1. <?php

  2.  

  3. class Tomada {

  4.  

  5. public $TOMADA;

  6.  

  7. public function acende() {

  8. $this->TOMADA = “Ligada”;

  9. return “Acendeu a lampada!”;

  10. }

  11.  

  12. public function apaga() {

  13. $this->TOMADA = “Desligada”;

  14. return “Apagou a lampada!”;

  15. }

  16.  

  17. public function estadoAtual() {

  18. return $this->TOMADA;

  19. }

  20. }

  21.  

  22. // Instanciando o objeto

  23. // Esse objeto não precisa ser instanciado nesse arquivo, aqui é apenas um exemplo

  24. $tm = new Tomada();

  25.  

  26. print “Acendendo a luz: “ . $tm->acende() . “<br />”;

  27. print “Estado atual da lampada: “ . $tm->estadoAtual() . “<br />”;

  28. print “Apagando a luz: “ . $tm->apaga() . “<br />”;

  29. print “Estado atual da lampada: “ . $tm->TOMADA;

  30. ?>

A saída de ambos no browser é a exibida abaixo:

[img] resultado

Com O.O.P a mesma rotina ficou mais clara, mais organizada, e o principal: reutilizável! Apenas instâncio a Tomada() onde eu precisar e consigo acender/apagar as lâmpadas! D

NOTA: Destaque para a linha 27 e 29. Vejam que em ambas eu acho o status da lâmpada, porém, de formas diferentes. Tentem descobrir o por quê!

Infelizmente não posso ficar falando apenas de O.O.P, vamos partir para o próximo assunto!

2. Organize seus dados com XML
Já ouviu falar de XML antes ? Acredito que sim.
O XML (eXtendend Markup Language) tem toda uma história e tragetória por trás, porém, não é o foco aqui entrar nesses detalhes nem no histórico do XML. O importante é entender o que é, para que serve e como funciona. Tendo esses principios, você já poderá começar a definitivamente brincar com XML.

  • XML é uma linguagem de marcação que armazena todo tipo de informação que você precisar.
  • Como já dissemos, ele serve para armazenar dados de qualquer tipo

Um exemplo de uma informação no XML seria:

PLAIN TEXT

XML:

 

  1. <?xml version=“1.0″ encoding=“ISO-8859-1″ ?>

  2. <faqs>

  3. <faq>

  4. <categoria>Duvidas gerais</categoria>

  5. <pergunta>O que é XML ?</pergunta>

  6. <resposta>É exatamente isso que você vê!</resposta>

  7. </faq>

  8.  

  9. <faq>

  10. <categoria>Duvidas gerais</categoria>

  11. <pergunta>O que é XML ?</pergunta>

  12. <resposta>É exatamente isso que você vê!</resposta>

  13. </faq>

  14.  

  15. <faq>

  16. <categoria>Duvidas gerais</categoria>

  17. <pergunta>O que é XML ?</pergunta>

  18. <resposta>É exatamente isso que você vê!</resposta>

  19. </faq>

  20.  

  21. <faq>

  22. <categoria>Duvidas gerais</categoria>

  23. <pergunta>O que é XML ?</pergunta>

  24. <resposta>É exatamente isso que você vê!</resposta>

  25. </faq>

  26.  

  27. <faq>

  28. <categoria>Duvidas gerais</categoria>

  29. <pergunta>O que é XML ?</pergunta>

  30. <resposta>É exatamente isso que você vê!</resposta>

  31. </faq>

  32. </faqs>

A saída dele no browser seria algo como isso:

[img] modelo xml

Claro que para ficar interessante precisaria jogar um estilo nessa informação para ser exibida adequadamente e tudo mais. É para isso que existe o XSL (Outra coisa para pesquisar ;) )

3. xHTML. HTML mais extensível e mais dentro dos padrões
xHTML não difere muito do HTML que conhecemos há tempos. Ele tem algumas regras que sendo seguidas garatem que nosso documento estará sendo exibido adequadamente aos nossos visitantes/clientes.
Alguns pontos interessantes:

  • Definir um doctype
  • Escrever tags atributos e elementos em minusculo. < p > < /P > é errado!
  • Fechar todas as tags! < p >< /p > e < br / >
  • Usar o atributo alt para imagens. Afinal não são todos que acessam a net com browsers que renderizam imagens!
  • Tag’s em ordem: < strong >< em >< /strong >< /em > é errado!

Como ele não muda visualmente do HTML, não tem muito o que mostrar. É testar e acostumar-se com a prática.

4. Tableless
O Tableless é uma metodologia de desenvolvimento, e não uma tecnologia ou ferramenta de trabalho como alguns ainda pensam. Há um bocado de motivos para usar o tableless nas suas aplicações, não vou focar nisso aqui, pois existem artigos que explicam muito bem isso! São exemplos:

5. E muito mais…
Acha que acabou ? Pois bem, vamos citar mais algumas coisas:

  • Frameworks de desenvolvimento
  • Javascript / DOM e Ajax
  • MVC
  • Design Patterns
  • CSS, XSL
  • Site Multiplataforma. Para este, vale a dica seguir as especificações W3C de desenvolvimento.

Ufa! Que tal concluir o post ?
Ok! Ficou cansado com o tour ? Ficou preocupado ? Não se espante! Siga a ordem que apresentei aqui, ou qualquer outra ordem que prefira, só não queira aprender tudo de uma vez da noite para o dia, porque neste caso, você não vai conseguir entender como as coisas funcionam!

Bom estudo !

Fonte: http://www.hlegius.pro.br/

Enviado em Programação | Deixar um comentário »

Conheça o Incrível Ruby on Rails

Publicado por Daniel Carraro Tomasini em Julho 4, 2007

Ruby é uma linguagem interpretada orientada à objetos que vem aparecendo no mercado faz tempo. Sua popularidade vem subindo graças ao framework on Rails, que pode acelerar, e muito, o desenvolvimento de aplicações para a web.

Gostou da demonstração? O ponto de partida para um entusiasta pode ser o Ruby on Br, com alguns bons artigos e um forum que une os melhores profissionais no ramo.

Dê uma olhada nos tutoriais do Taq e, se gostar, compre o livro (é muito bom, recomendo). Outro livro muito bom é o do Akita (responsável pela tradução do livro Getting Real by 37 Signals para pt_BR).

Embarque nessa vc também!

Enviado em Programação | Deixar um comentário »

PHP HTML Encoder

Publicado por Daniel Carraro Tomasini em Janeiro 30, 2007

Um pequeno script para ser mais difícil os spam bots “agarrarem” o vosso e-mail.

<?php
$email=”dickrips@gmail.com”;

for ($i=0;$i<strlen($email);$i++)
$out.=”&#”.ord($email[$i]);

echo $out;
?>

O resultado em html será algo assim:

&#77&#97&#114&#99&#111&#64&#84&#111&#110
&#100&#101&#108&#97&#46&#111&#114&#103

Enviado em Programação | Deixar um comentário »