segunda-feira, 28 de junho de 2010

Converta PDF's escaneados com o Google OCR

Vamos lá!

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)

É só:



1. Iniciar/Painel de Controle;
2. Clique em "Desinstalar um programa";
3. Escolha "Ligar ou desligar recursos do Windows";
4. Desmarque a opção "Internet Explorer 8" e pressione Ok;

Seja feliz...

How to uninstall IE (Internet Explorer) in Windows 7 (Seven)

Step-by-step... (oooh, baby...):



1. Start/Control Panel;
2. Click "Uninstall a program";
3. Choose "Turn Windows features on or off";
4. Uncheck "Internet Explorer 8" e press Ok;

C ya...

domingo, 6 de junho de 2010

Lista Encadeada Simples em C - Livraria

Eis a lista baseada em vetor, com ordenação Bolha (Bubblesort) pós preenchimento da lista:

#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

Let's play, DJ:

1. Faça o download e instale o ShutdownGuard:link;
2. Faça o download e execute a nova versão do RemoveWAT (2.2.25):link;
3. Sorria;

Seja um bom samaritano!

Fixing Windows 7 RC 7100 auto shutdown

Let's play, DJ:

1. Download & install ShutdownGuard from here;
2. Download & run new RemoveWAT version (2.2.25) from here;
3. Smile;

Have a nice day!

terça-feira, 25 de maio de 2010

Enviando e-mail anônimo com o Google

Essa missão é dificílima! :)



1. Acesse o endereço http://maps.google.com/;
2. Clique no botão "Enviar";
3. Preencha os campos com os e-mail's que achar necessário (separados por vírgula);

This is the end... My only friend, the end...

sexta-feira, 14 de maio de 2010

Limpando o Spool de Impressão do Windows 7

1. Crie um arquivo .BAT com o conteúdo abaixo:

@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

Eis abaixo algumas opções para a proteção relativa à restrição de cópia e impressão:



* 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

Para que o Windows efetue logon automaticamente com um dado usuário:



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

Nós, administradores de rede, ficamos às vezes sem saber quando determinada ACL está bloqueando determinado conteúdo acessado por nossos queridos usuários. Para resolvermos esse tipo de mistério, é suficiente:



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

Jogo rápido:



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

Para copiar um banco de dados Mysql de um Servidor para outro:



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

Depois de passar a noite inteira "virando bicho", eis que terminei um dos códigos exigidos para minha disciplina de Estruturas de Dados:


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

Eis uma dica enviada pelo Felipe Augusto (felipe.aufe@gmail.com), que comigo trabalha:




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,