# Script PHP para recados em sites ou artigos (livro de visitas)
# Original em http://aurelio.net/bin/
# Uso livre, sem restricoes.
#
# Para usa-lo basta colocar um require("recados.phps")
# na pagina PHP do seu site ou artigo.
#
# Use CSS para formatar os recados.
# Exemplo em http://aurelio.net/include/recados.css
# Aproveite os seguintes
: formulario, total, recados
#
# 2001-08-09 nascimento
# 2002-06-21 adicionado stripslashes() para evitar os \' e \"
# 2002-12-10 criada secao inicial de configuracao, total de mensagens
# 2003-07-02 adicionado $intro e configuracao de cores do link e vlink
# 2004-06-07 adicionada checagem de tamanho maximo do comentario
# 2004-07-01 adicionada mensagem que mostra o tamanho maximo
# 2004-08-24 melhorado codigo para mudar a extensao do fonte para .phps
# 2004-08-24 melhorada mensagem "valeu pelo comentario"
# 2004-08-25 adicionada config $mailto e agora tambem envia e-mails
# 2004-09-02 adicionada config $mask_mail, cidade agora obrigatoria
# 2004-11-24 adicionado suporte a paginacao
# 2005-06-18 mudado formato dos comentarios para usar
(bom pra CSS)
# 2006-03-22 juncao do script de visitas com o de comentarios em artigos.
# o script agora gera somente os recados, e nao a pagina toda.
# assim fica mais facil embuti-lo em qualquer pagina. novidades:
# - HTML limpo e com DIVs para CSS
# - checagem basica contra SPAM
# - removido suporte a paginacao e envio de e-mails
# - e-mail do visitante "escondido" como tooltip em seu nome
# - atualizado para PHP 4
# 2006-11-18 adicionadas mais checagens anti-spam
# 2006-11-26 adicionadas funcionalidades do opine.phps ($older_first)
#
#############################################################################
### CONFIG
#
## Arquivo que contera os recados dos visitantes. Deve poder ser
## escrito pelo usuario do servidor HTTP (geralmente nobody)
$file = 'recados.html';
#
## Tamanho maximo do comentario do usuario (em caracteres)
$max_size = 1000;
#
## Mascara e-mails, protegendo-os dos robos de SPAM (1 liga, 0 desliga)
$mask_mail = 1;
#
## O numero inicial de contagem dos recados. Defina algum valor caso
## guarde os recados anteriores em outro arquivo e queira inclui-los
## na contagem total de recados.
#
$count_offset = 0;
#
### Inverte o formato de armazenamento e aparicao dos recados.
### Mais antigos no topo e novos no final. Formulario no final.
$older_first = 0;
#
## Coloque aqui os endereços (sem o www.) das paginas permitidas.
## De um nome de variavel unico para cada pagina.
## E lembre-se de coloca-la no IF seguinte tambem.
#
$book_pogo = 'aurelio.net/musica/pogo.php';
$book_pogo = 'iverde.local/~aurelio/www/musica/pogo.php'; # local
$book_aurelio = 'aurelio.net/recados.php';
$book_aurelio = 'iverde.local/~aurelio/www/recados.php'; # local
$book_zz = 'funcoeszz.net/recados.php';
#$book_zz = 'iverde.local/~aurelio/zz/recados.php'; # local
$book_er = 'aurelio.net/er/guia/recados.php';
#$book_er = 'iverde.local/~aurelio/www/er/guia/recados.php'; # local
$book_rac = 'aurelio.net/rac/recados.php';
#$book_rac = 'iverde.local/~aurelio/www/rac/recados.php'; # local
#
#############################################################################
$has_error = 0;
$is_php_NG = 1; # Mude para zero se teu PHP eh anterior ao 4.x
if ($is_php_NG) {
$_txt = $_POST['_txt'];
$_nome = $_POST['_nome'];
$_email = $_POST['_email'];
$_cidade = $_POST['_cidade'];
$_estado = $_POST['_estado'];
$REQUEST_METHOD = $_SERVER['REQUEST_METHOD'];
$script_url = $_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];
} else {
$script_url = $SERVER_NAME.$SCRIPT_NAME;
}
$this_book = ereg_replace("www\.", "", "$script_url");
#############################################################################
## Atalhos para testes durante o desenvolvimento
#
#$REQUEST_METHOD = 'POST';
#$_txt = "Foi-se";
#$_nome = "Eu mesmo";
#$_email = "eu.mesmo@dominio.com";
#$_cidade = "Curitiba";
#$_estado = "PR";
#$this_book = $book_pogo;
#
## Conversão do formato anterior dos recados para o atual (Vim)
# :%s,\(- ]*>\)\(....\)-\(..\)-\(..\),\1\4/\3/\2, # dd/mm/aaaa
# :%s,\([^<]*\) <\(.*\)>,\1, # mail como title
# :%s!\( (.*\), \([A-Z][A-Z]\))!\1 - \2)! # cidade - XX
# :%s!\( (.*\), )!\1)! # cidade sem estado
#
#############################################################################
# Cadastre nesse IF todas as paginas que podem usar este script.
# O minimo que se deve setar eh o $file, mas tambem pode-se
# configurar o $max_size e $mask_mail.
if ($this_book == $book_aurelio) {
$file = '/tmp/persistent/aurelio/visitas-aurelio.html';
$file = 'nobody/visitas-aurelio.html'; # local
$count_offset = 560;
}
elseif ($this_book == $book_pogo) {
$file = '/tmp/persistent/aurelio/visitas-pogo.html';
$file = '../nobody/visitas-pogo.html'; # local
$older_first = 1;
}
elseif ($this_book == $book_zz) {
$file = '/tmp/persistent/aurelio/visitas-zz.html';
# $file = '/a/www/nobody/visitas-zz.html'; # local
}
elseif ($this_book == $book_er) {
$file = '/tmp/persistent/aurelio/visitas-er.html';
# $file = '/a/www/nobody/visitas-er.html'; # local
}
elseif ($this_book == $book_rac) {
$file = '/tmp/persistent/aurelio/visitas-rac.html';
# $file = '/a/www/nobody/visitas-rac.html'; # local
}
else {
MyError("A página '$this_book' não tem permissão para acessar este script");
exit;
}
$estados = split(':','AC:AL:AM:AP:BA:CE:DF:ES:GO:MA:MG:MS:MT:PA:PB:PE:PI:PR:RJ:RN:RO:RR:RS:SC:SE:SP:TO');
# Funcoes
#
function MyError($msg){
global $has_error; $has_error = 1;
echo "\n
Erro: $msg
"; }
function WriteAtBottom($file,$txt){
$fd = fopen($file, 'a'); fwrite($fd, "\n$txt"); fclose($fd); }
function WriteAtTop($file,$txt){
$lines = file($file); $fd = fopen($file,'w');
fwrite($fd, "$txt\n" . join($lines)); fclose($fd); }
function FormIni($php){
return "\n