segunda-feira, 28 de junho de 2010
Converta PDF's escaneados com o Google OCR
1. Faça o upload do documento PDF escaneado para algum diretório do seu blog (ou outro site);
2. Aguarde enquanto o Google Spider registra seu upload;
3. Abra o link "site:seublog_ou_site/diretorio_pdf filetype:pdf" para ver o arquivo convertido em texto puro;
Nós sempre teremos Paris.
quarta-feira, 9 de junho de 2010
Como desinstalar o IE (Internet Explorer) no Windows 7 (Seven)
How to uninstall IE (Internet Explorer) in Windows 7 (Seven)
domingo, 6 de junho de 2010
Lista Encadeada Simples em C - Livraria
#include <stdio.h>
#include <stdlib.h>
#define QTD 100
//Powered by Cleórbete Santos
typedef struct sLivro{
char titulo[50];
char autor[50];
char editora[50];
int proximo;
}livro;
typedef struct sLista{
livro livros[QTD];
int inicio;
int fim;
int branco;
}lista;
void inicializa(lista* lista){
int i;
lista->inicio=-1;
lista->fim=-1;
lista->branco=0;
for (i=0;i<=QTD;i++)
lista->livros[i].proximo=i+1;
lista->livros[QTD].proximo=-1;
}
int lista_vazia(lista* lista){
return lista->inicio==lista->fim;
}
int lista_cheia(lista* lista){
return lista->branco==-1;
}
void imprimir(lista* livro){
int i=0;
for(i;i<livro->inicio;i++){
printf("\n%d Titulo: %s\tAutor: %s\tEditora: %s",i+1,livro->livros[i].titulo,livro->livros[i].autor,livro->livros[i].editora);
if(!(i%23) && i>0){
printf("\nLimite de 23 livros alcancado. Continuando a listar.");
getch();
}
}
}
void inserir(lista* livro){
if(lista_vazia(livro))
livro->inicio=0;
fflush(stdin);
printf("Titulo: ");
scanf("%s",&livro->livros[livro->inicio].titulo);
fflush(stdin);
printf("Autor: ");
scanf("%s",&livro->livros[livro->inicio].autor);
printf("Editora: ");
scanf("%s",&livro->livros[livro->inicio].editora);
livro->inicio=livro->inicio+1;
if(livro->inicio==QTD)
livro->branco=-1;
}
void buscar(lista *livro){
int i, teste=-1; char nome[50];
fflush(stdin);
printf("\nInforme o titulo do livro: ");
scanf("%s",&nome);
for(i=0;(teste=strcmp(livro->livros[i].titulo,nome)!=0) && i<QTD;i++);
if(!teste){
system("cls");
printf("Livro encontrado.");
getch();
}else{
system("cls");
printf("\nLivro nao encontrado.");
getch();
}
}
void excluir(lista *livro){
int i, teste=-1; char nome[50];
fflush(stdin);
printf("\nInforme o titulo do livro: ");
scanf("%s",&nome);
for(i=0;(teste=strcmp(livro->livros[i].titulo,nome)!=0) && i<QTD;i++);
if(!teste){
if(livro->inicio>1){
for(i;i<QTD-1;i++)
livro->livros[i]=livro->livros[i+1];
for (i;i<QTD;i++)
livro->livros[i].proximo=-1;
livro->inicio--;
livro->branco=0;
}else
inicializa(livro);
system("cls");
printf("Livro excluido com sucesso.");
getch();
}else{
printf("\nLivro nao encontrado.");
getch();
}
}
void bolha(lista *lista){
int i, j, Z;
if((Z=lista->inicio)>1){
for(i=0;i<Z-1;i++){
for(j=i+1;j<Z;j++){
if(strcmp(lista->livros[i].titulo,lista->livros[j].titulo)==1){
livro x = lista->livros[j];
lista->livros[j] = lista->livros[i];
lista->livros[i] = x;
}
}
}
for(i=0;i<=QTD;i++)
lista->livros[i].proximo = i+1;
lista->livros[QTD].proximo = -1;
printf("Livros ordenados. Escolha a opcao 2.");
}else{
printf("\nEncontrado somente 1 livro. Nao ha a necessidade de ordenacao.\n");
}
}
int menu(){
int op;
printf("LIVRARIA\n\n");
printf("1- Inserir livro\n");
printf("2- Buscar livro\n");
printf("3- Listar livros\n");
printf("4- Ordenar livros\n");
printf("5- Remover livro\n");
printf("0- Sair\n\n");
printf("Digite sua opcao: ");
scanf("%d", &op);
return op;
}
main (){
int op;
lista list;
inicializa(&list);
enum{SAIR, INSERIR, BUSCAR, LISTAR, ORDENAR, EXCLUIR};
for(;;){
op=menu();
switch(op){
case INSERIR:
system("cls");
if(!lista_cheia(&list)){
inserir(&list);
}else{
printf("\ntLista cheia.");
getch();
}
system("cls");
break;
case BUSCAR:
system("cls");
if(!lista_vazia(&list)){
buscar(&list);
}else{
printf("\nLista vazia.");
getch();
}
system("cls");
break;
case LISTAR:
system("cls");
if(!lista_vazia(&list)){
imprimir(&list);
getch();
}else{
printf("\nLista vazia.");
getch();
}
system("cls");
break;
case ORDENAR:
system("cls");
if(!lista_vazia(&list)){
bolha(&list);
getch();
}else{
printf("\nLista vazia.");
getch();
}
system("cls");
break;
case EXCLUIR:
system("cls");
if(!lista_vazia(&list))
excluir(& list);
else{
printf("\nLista vazia.");
getch();
}
system("cls");
break;
case SAIR:
printf("\nTchau!");
getch();
exit(1);
break;
}
}
getch();
}
Asta la...
sábado, 5 de junho de 2010
Windows 7 RC 7100 desligando sozinho - Correção
Fixing Windows 7 RC 7100 auto shutdown
terça-feira, 25 de maio de 2010
Enviando e-mail anônimo com o Google
sexta-feira, 14 de maio de 2010
Limpando o Spool de Impressão do Windows 7
@echo off
echo Stopping print spooler.
echo.
net stop spooler
echo Erasing Temporary Junk Printer Documents
echo.
del /Q /F /S "%systemroot%\System32\Spool\Printers\*.*"
echo Starting print spooler.
echo.
net start spooler
2. Clique com o botão direito no arquivo, escolha "Executar como administrador";
Obs.: O comando del /Q /F /S "%systemroot%\System32\Spool\Printers\*.*" pode ser feito sem as aspas.
"That's the song of the men, working on the chain..." ;)
terça-feira, 27 de abril de 2010
Copiando informações de um PDF protegido

* Utilize softwares de Print Screen (como Snagit ou SolidCapture) para copiar as telas do PDF aberto;
* Utilize um software de OCR (como o Kleptomania) para copiar o PDF;
PS.: Se há uma proteção baseada em executável (.exe), abra tal aplicação e procure pelo PDF gerado em sua pasta de temporários (geralmente em "documents and settings") e aplique alguma das tarefas listadas nesse post;
Obs.: Se a proteção é baseada em senha, utilize o "Elcomsoft Advanced PDF Password Recovery" ou o PDF Decrypter (dependerá do tipo de proteção e do tamanho da senha);
Dica: a maioria dos softwares para executar o exposto acima pode ser encontrado no www.4shared.com (embora nem todos sejam gratuitos)
"Agora podemos cuidar de nosso jardim."
segunda-feira, 19 de abril de 2010
Logon Automático no Windows

1. Iniciar/Executar "regedit";
2. Em [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon], crie um valor de seqüência:
"AutoAdminLogon"="1"
"DefaultUserName"="usuário"
"DefaultPassword"="senha"
"DefaultDomainName"="dominio local"
"DontDisplayLastUserName"="0"
Sub-dica: Para travar o Windows via linha de comando: "rundll32.exe user32.dll,LockWorkStation"
Dicas enviada pelo meu colega Felipe Augusto.
Abraço,
sexta-feira, 16 de abril de 2010
Preenchendo automaticamente o campo 'Contato' no Ocomon
Para, ao abrir chamados, preencher automaticamente o campo 'Contato' com o nome de quem está logado, basta alterar o arquivo ocomon/geral/incluir.php, mudando a linha a seguir:

if (isset($_GET['contato'])) {
$contato = $_GET['contato'];
} //else $contato = "";
para:
if (isset($_GET['contato'])) {
$contato = $_GET['contato'];
}else $contato=$_SESSION['s_usuario'];
Abraço,
terça-feira, 13 de abril de 2010
Como debugar as ACL's do Squid

1. Adicionar ao squid.conf a seguinte linha: "debug_options ALL,1 33,2";
2. Dar um reload no Squid; No meu caso: /etc/rc.d/init.d/squid reload;
3. Monitorar o acesso; Ex.: tail -f /var/log/squid/cache.log;
PS.: Dica enviada pelo colega Rogério Moura (que comigo trabalha). Valeu!
Hasta la.
segunda-feira, 5 de abril de 2010
Como salvar todas as imagens de um site usando Firefox

0. Abra o site com as imagens;
1. Na barra de endereços, clique no ícone ao lado esquerdo do endereço;
2. Clique no botão "Mais informações";
3. Clique na guia "Mídia";
4. Selecione os arquivos que deseja (ou dê um CTRL+A, para todos);
5. Clique no botão "Salvar como";
Don't worry... Be happy...
quarta-feira, 24 de março de 2010
Fazendo Dump de um banco de dados Mysql pela rede

1. Crie um banco no Mysql de destino;
Ex.: "create database banco2";
2. Execute o comando "mysqldump -u root --password=senha banco1 | mysql -h destino -u root --password=senha banco2;"
.banco1: banco original, a ser copiado;
.banco2: banco novo, que receberá os dados do banco original;
.destino: é o Ip/Nome do Mysql de, pasme, destino;
Something else?
PS.: O segredo é apenas usar o pipe. Note que as duas partes do comando são corriqueiras. Para duplicar um banco, então, é um "must".
Abraço,
terça-feira, 23 de março de 2010
java.lang.OutOfMemoryError: Java heap space in Tomcat
Para aumentar a memória Heap para a JVM do Tomcat, siga os passos abaixo:
1. Crie a variável de ambiente CATALINA_OPTS, com a quantidade de memória desejada.
Obs.: No meu caso, como uso o Red Hat 5, editei o arquivo /etc/profile.d/tomcat.sh com a linha "CATALINA_OPTS="-Xms120m -Xmx120m"* ; export CATALINA_OPTS" e dei o comando "source tomcat.sh" para atualizar o env;
2. Reinicie o Tomcat;
* No exemplo, a memória foi configurada para 120 Mega;
Erro de Deny ao acessar o Manager do Tomcat
Se ao tentar acessar o Manager* do seu Tomcat ocorrer o erro "Access to the requested resource has been denied", simplesmente adicione as linhas (destacadas) abaixo em seu tomcat-users.xml:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="admin" password="secret" roles="manager"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>
Pronto, agora é só reiniciar o Container e utilizar o usuário "admin" para acessar o Manager.
* O Manager é aplicação de gerenciamento do Tomcat, acessível geralmente pelo link http://seu_server:8080/manager/html
Abraço,
quinta-feira, 18 de março de 2010
Convertendo de Notação Infixa para Pós-fixa (RPN) usando C
/*
Implementação criada por Cleórbete Santos em linguagem C
em 18 de março de 2010
para converter de notação Infixa para Pos-fixa (RPN)
(usando Stacks)
*/

/* Includes necessários */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/* Constantes */
#define VERDADEIRO 1
#define FALSO 0
/* Estrutura para a pilha */
typedef struct{
char dados[20]; /* Matriz para armazenar as informações da pilha */
int topo; /* Topo da pilha */
} PILHA;
/* Prototipação das funções */
void iniciaPilha(PILHA *pilha);
void pega_infixo(char infixo[]);
void converteParaPosfixo(char infixo[], char posfixo[]);
int eOperador(char c);
int precedencia(char operador1, char operador2);
int precedenciaNivel(char ch);
void colocaNaPilha(PILHA *pilha, char value);
char tiraDaPilha(PILHA *pilha);
char topoDaPilha(PILHA *pilha);
int estaVazia(PILHA *pilha);
int estaCheia(PILHA *pilha);
void imprimeResultado(char infixo[], char posfixo[]);
void imprimeMensagem(void);
/* Função Principal */
int main(void){
char infixo[20], posfixo[20]="";
/* Chama a função que converte de infixo para posfixo */
converteParaPosfixo(infixo, posfixo);
infixo[strlen(infixo)-2]='\0';
/* Imprime o resultado */
imprimeResultado(infixo, posfixo);
return EXIT_SUCCESS;
}
/* Inicializa a pilha */
void iniciaPilha(PILHA *pilha){
pilha->topo = -1; /* Inicia vazia */
}
/* Pega a expressão infixa */
void pega_infixo(char infixo[]){
int i;
printf("Digite a expressao infixa: ");
fflush(stdin); /*Captura a entrada*/
/* Lendo os caracteres */
for ( i=0; i<18; ){
if ((infixo[i]=getchar())=='\n'){ //Se no final, sai
i++;
break;
}else if (!(isspace(infixo[i]))) //Se não é espaço, continua
i++;
}
infixo[i] = '\0';
}
/* Converte de infixo para posfixo */
void converteParaPosfixo(char infixo[], char posfixo[]){
int i, tamanho;
int j=0;
char topo_ch;
PILHA pilha;
iniciaPilha(&pilha); /* Inicializa a pilha */
pega_infixo(infixo); /* Chama a funão que captura os caracteres */
tamanho = strlen(infixo);
/* Se o tamanho for maior que zero */
if (tamanho){
colocaNaPilha(&pilha,'(');
strcat(infixo,")"); //Concatena
tamanho++;
for (i=0;i<tamanho;i++){
/* Se é dígito */
if (isdigit(infixo[i])){
posfixo[j++] = infixo[i];
}
/* Se é parêntese esquerdo */
else if (infixo[i]=='('){
colocaNaPilha(&pilha,'(');
}
/* Se é operador */
else if (eOperador(infixo[i])){
while (VERDADEIRO){
/* Pega o Topo */
topo_ch = topoDaPilha(&pilha);
/* Critica */
if (topo_ch=='\0'){
printf("\nExpressao invalida\n");
imprimeMensagem();
exit(1);
}else{
if (eOperador(topo_ch)){
if (precedenciaNivel(topo_ch)>=precedenciaNivel(infixo[i]))
posfixo[j++] = tiraDaPilha(&pilha);
else
break;
}else
break;
}
}
colocaNaPilha(&pilha, infixo[i]);
}
/* Se é parêntese direito */
else if (infixo[i]==')'){
while (VERDADEIRO){
/* Pega o topo */
topo_ch=topoDaPilha(&pilha);
/* Critica */
if (topo_ch=='\0'){
printf("\nExpressao invalida\n");
imprimeMensagem();
exit(1);
}else{
if (topo_ch!='('){
posfixo[j++] = topo_ch;
tiraDaPilha(&pilha);
}else{
tiraDaPilha(&pilha);
break;
}
}
}
continue;
}
}
}
posfixo[j] = '\0';
}
/* Verifica qual é o operador */
int eOperador(char o){
if (o=='+'||o=='-'||o=='*'||o=='/'||o=='%'||o=='^'){
return VERDADEIRO;
}else
return FALSO;
}
/* Veririca o nível de precedência */
int precedenciaNivel(char p){
if (p=='+'||p=='-')
return 1;
else if (p=='^')
return 3;
else
return 2;
}
/* Veririca se a precedência do Operador1 é Menor, Igual ou Maior que a precedência
do Operador2 */
int precedencia(char operador1, char operador2){
if (precedenciaNivel(operador1)>precedenciaNivel(operador2))
return 1;
else if (precedenciaNivel(operador1)<precedenciaNivel(operador2) )
return -1;
else
return 0;
}
/* Push */
void colocaNaPilha(PILHA *pilha, char valor){
if (!(estaCheia(pilha))){ /* Se não está cheia */
(pilha->topo)++;
pilha->dados[pilha->topo]=valor;
}
}
/* Pop */
char tiraDaPilha(PILHA *pilha){
char c;
if (!(estaVazia(pilha))){ /* Se não está vazia */
c = pilha->dados[pilha->topo];
(pilha->topo)--;
return c;
}else
return '\0';
}
/* Retorna o topo da pilha sem retirar o elemento do topo */
char topoDaPilha(PILHA *pilha){
if (!(estaVazia(pilha))) /* Se não está vazia */
return pilha->dados[pilha->topo];
else
return '\0';
}
/* Verifica se a pilha está vazia */
int estaVazia(PILHA *pilha){
/* Vazia */
if (pilha->topo==-1)
return VERDADEIRO;
/* Não vazia */
else
return FALSO;
}
/* Verifica se a pilha está cheia */
int estaCheia(PILHA *pilha){
/* Cheia */
if (pilha->topo==19)
return VERDADEIRO;
/* Não cheia */
else
return FALSO;
}
/* Mostra o resultado da Notação Pos-fixa */
void imprimeResultado(char infixo[], char posfixo[]){
printf("\n");
printf("Notacao Pos-fixa: %s\n\n", posfixo);
imprimeMensagem();
}
/* Imprime a mensagem de saída */
void imprimeMensagem(void){
printf("Pressione ENTER para sair");
fflush(stdin);
getchar();
}
Mais sobre a Notação Polonesa Reversa aqui.
PS.: Agora dormirei um pouco.
Abraço,
Se essa postagem ajudou você, clique em "curtir" ao lado direito da página www.cleorbete.com. Agradeço.
quarta-feira, 17 de março de 2010
Mudando o boot default no GRUB 2

1. Copie o conteúdo entre aspas da linha "menuentry" no arquivo /boot/grub/grub.cfg;
Obs.: No meu caso: "Windows 7 (loader) (on /dev/sda1)"
2. Abra o arquivo /etc/default/grub e procure pela linha GRUB_DEFAULT=0;
3. Substitua o "0" pelo texto copiado no item 1. Ou seja:
De: GRUB_DEFAULT=0
Para: GRUB_DEFAULT="Windows 7 (loader) (on /dev/sda1)"
4. Valide as novas configurações executando o comando "update-grub";
"Agora cuidaremos de nosso jardim".
Obrigado, Felipe!
Erro de short-tags no Ocomon
Ao instalar o Ocomon, não raras as vezes pode ser que nos deparemos com o erro abaixo. O mesmo ocorre pela simples razão do Ocomon utilizar tags curtas e o PHP5, por padrão, não habilitá-las. Para corrigir, edite seu arquivo php.ini e altere (ou crie) a propriedade referente para ON. Verbis:
short_open_tag = On
ERRO:
Leia o arquivo README.TXT para obter as principais informações sobre a instalação do OCOMON!". "
You have to configure the config.inc.php file in OCOMON/INCLUDES/ to start using Ocomon!
Read the file README.TXTto get the main informations about the Ocomon Installation!" ); session_start(); //session_destroy(); if (!isset($_SESSION['s_language'])) $_SESSION['s_language']= "pt_BR.php"; if (!isset($_SESSION['s_usuario'])) $_SESSION['s_usuario']= ""; if (!isset($_SESSION['s_logado'])) $_SESSION['s_logado']= ""; if (!isset($_SESSION['s_nivel'])) $_SESSION['s_nivel']= ""; include ("PATHS.php"); //include ("".$includesPath."var_sessao.php"); include ("includes/functions/funcoes.inc"); include ("includes/javascript/funcoes.js"); include ("includes/queries/queries.php"); include ("".$includesPath."config.inc.php"); //require_once ("includes/languages/".LANGUAGE.""); include ("".$includesPath."versao.php"); include("includes/classes/conecta.class.php"); $conec = new conexao; $conec->conecta('MYSQL') ; $qryLang = "SELECT * FROM config"; $execLang = mysql_query($qryLang); $rowLang = mysql_fetch_array($execLang); $_SESSION['s_language']= $rowLang['conf_language']; $uLogado = $_SESSION['s_usuario']; if (empty($uLogado)) { $USER_TYPE = TRANS('MNS_OPERADOR');//$TRANS['MNS_OPERADOR']; $uLogado = TRANS('MNS_NAO_LOGADO'); //$TRANS['MNS_NAO_LOGADO']; $logInfo = "".TRANS('MNS_LOGON').""; //$TRANS['MNS_LOGON'] $hnt = TRANS('HNT_LOGON'); } else { if ($_SESSION['s_nivel'] < 3) { $USER_TYPE = TRANS('MNS_OPERADOR'); } else $USER_TYPE = TRANS('MNS_USUARIO'); $logInfo = "".TRANS('MNS_LOGOFF').""; $hnt = TRANS('HNT_LOGOFF'); } $marca = "HOME"; //print ""; print ""; print ""; print ""; print ""; print ""; print ""; if ($_SESSION['s_logado']){ //BLOCO PARA RECARREGAR A PÁGINA NO MÓDULO ADMIN QUANDO FOR SELECIONADO NOVO TEMA if (isset($_GET['LOAD']) && $_GET['LOAD'] == 'ADMIN'){ $PARAM = "&LOAD=ADMIN"; $marca = "ADMIN"; }else $PARAM = ""; print ""; print ""; print ""; } else { //print ""; print ""; print ""; print ""; } print ""; print " "; print " ".$USER_TYPE.": ".$uLogado." | ".$logInfo." | ".TRANS('MNS_AJUDA')." ".TRANS('MNS_SOBRE')."
"; print ""; if (empty($_SESSION['s_permissoes'])&& $_SESSION['s_nivel']!=1){ print ""; print ""; print ""; print ""; print ""; $conec->desconecta('MYSQL'); } else{ // include("includes/classes/conecta.class.php"); // $conec = new conexao; // $conec->conecta('MYSQL') ; $qryconf = $QRY["useropencall"]; $execconf = mysql_query($qryconf) or die('Não foi possível ler as informações de configuração do sistema!'); $rowconf = mysql_fetch_array($execconf); $qryStyle = "SELECT * FROM temas t, uthemes u WHERE u.uth_uid = ".$_SESSION['s_uid']." and t.tm_id = u.uth_thid"; $execStyle = mysql_query($qryStyle) or die('ERRO NA TENTATIVA DE RECUPERAR AS INFORMAÇÕES DE ESTILOS!
'.$qryStyle); $rowStyle = mysql_fetch_array($execStyle); $regs = mysql_num_rows($execStyle); if ($regs==0){ //SE NÃO ENCONTROU TEMA ESPECÍFICO PARA O USUÁRIO unset ($rowStyle); $qryStyle = "SELECT * FROM styles"; $execStyle = mysql_query($qryStyle); $rowStyle = mysql_fetch_array($execStyle); } print ""; $sis=""; $sisPath=""; $sistem="home.php"; $marca = "HOME"; if (($_SESSION['s_ocomon']==1) && ($_SESSION['s_area'] != $rowconf['conf_ownarea'])) { print ""; if ($sis=="") $sis="sis=o"; $sisPath = $ocoDirPath; $sistem = "abertura.php"; $marca = "OCOMON"; //$home = "home=true"; } else // incluir para usuario simples. if (($_SESSION['s_ocomon']==1) && ($_SESSION['s_area'] == $rowconf['conf_ownarea'])) { print ""; $sis="sis=s"; $sisPath = $ocoDirPath; $sistem = "abertura_user.php?action=listall"; $marca = "OCOMON"; } else print ""; if ($_SESSION['s_invmon']==1){ print ""; //abertura.php - ".$invDirPath."".$invHome." if ($sis=="") $sis="sis=i"; if ($sisPath=="") $sisPath=$invDirPath; $sistem = "abertura.php"; if ($marca=="") $marca = "INVMON"; //$home = "home=true"; } else print ""; if ($_SESSION['s_nivel']==1) { print ""; if ($sis=="") $sis="sis=a"; if ($sisPath=="") $sisPath=""; if ($sistem=="") $sistem = "menu.php"; if ($marca=="")$marca = "ADMIN"; //$home = "home=true"; } else print ""; print ""; $conec->desconecta('MYSQL'); } print " ".TRANS('MNS_HOME')." ".TRANS('MNS_OCORRENCIAS')." ".TRANS('MNS_OCORRENCIAS')." ".TRANS('MNS_OCORRENCIAS')." ".TRANS('MNS_INVENTARIO')." ".TRANS('MNS_INVENTARIO')." ".TRANS('MNS_ADMIN')." ".TRANS('MNS_ADMIN')."
"; print "
"; print ""; print "
"; if (isset($_GET['inv']) ) { if ($_GET['inv']=="1") { print "". "". ""; } } if (isset($_GET['usu']) ) { $typedUser = $_GET['usu']; } else { $typedUser = ""; } print "". //class='help' ""; //class='blogin' print ""; print ""; print " ".TRANS('ERR_LOGON')."!
AUTH_TYPE: ".AUTH_TYPE."
".TRANS('MNS_USUARIO').":
".TRANS('MNS_SENHA').":
".TRANS('MNS_MSG_CAD_ABERTURA_1')."".TRANS('MNS_MSG_CAD_ABERTURA_2')."!
OcoMon - ".TRANS('MNS_MSG_OCOMON').".
".TRANS('MNS_MSG_VERSAO').": ".VERSAO." - ".TRANS('MNS_MSG_LIC')." GPL
"; print ""; ?>
Abraço,
sexta-feira, 12 de março de 2010
Enviando e-mail em PHP com autenticação SMTP
Quem conhece a função mail() sabe que a mesma não oferece muitos recursos. Sendo assim, resta interessante utilizar a PEAR Mail Package, que disponibiliza para o desenvolvedor, entre outras coisas, o envio de e-mail's frente a um servidor SMTP.

Depois de verificar se a PEAR está instalada, faça um teste:
<?php
require_once "Mail.php";
$de = "Cleórbete Santos< cleorbete@gmail.com>";
$para = "Ana Paula <anap@ula.com>";
$assunto = "Oi";
$mensagem = "Oi, linda. Ligue pra mim: 0000-0000.";
$servidor = "smtp.xxx.xxx"; //servidor SMTP
$usuario = "usuario"; //usuario smtp
$senha = "senha"; // senha
$cabecalho = array ('From' => $de,'To' => $para,'Subject' => $assunto);
$smtp = Mail::factory('smtp',array ('host' => $servidor,'auth' => true,'username' => $usuario,'password' => $senha));
$mail = $smtp->send($para, $cabecalho, $mensagem); //Enviando o e-mail
//Verificando erros
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else { //Se tudo OK
echo("<p>E-mail enviado com sucesso!</p>");
}
?>
PS.: Esse post surgiu como adendo ao post Como abrir chamados por e-mail no Ocomon.
Abraço,

