Mostrando postagens com marcador Programação. Mostrar todas as postagens
Mostrando postagens com marcador Programação. Mostrar todas as postagens

quarta-feira, 12 de outubro de 2011

Dicas de como proteger o seu site PHP contra invasões

Recentemente um dos meus sites foi invadido por um cracker sem ter o que fazer, fui obrigado a pesquisar um pouco sobre o assunto e tomar algumas medidas, acho legal repassar.

A seguir umas dicas bem válidas para deixar seu site php mais seguro.

1. Evite colocar seu arquivo de conexão com banco de dados no mesmo diretório das suas páginas ou no diretório usado para includes. O melhor a fazer é colocá-lo em algum diretório fora da raiz do site.

2. Desligue no servidor web a configuração que permite a listagem dos arquivos presentes nos diretórios que não tem um index.php.

3. Evite usar o nome includes para o diretório onde você colocará esse tipo de arquivo.

terça-feira, 14 de junho de 2011

Função Mail do PHP não exibindo acentuação

Caso você esteja recebendo e-mails do formulário do seu site sem acentuação, sem ç, adicione a seguinte linha no Header da função Mail():

$headers .= "Content-type: text/html; charset=utf-8\n";

Veja o exemplo completo abaixo:

<?php

/*Recebimento dos dados do formulário */

$corpo .= "Nome: " . $_REQUEST["nome"] . "";

$corpo .= "Email: " . $_REQUEST["email"] . "";

$corpo .= "Telefone: " . $_REQUEST["telefone"] . "";

$corpo .= "Motivo: " . $_REQUEST["motivo"] . "";

$corpo .= "Mensagem: " . $_REQUEST["mensagem"] . "";




$headers .= "Content-type: text/html; charset=utf-8 ";

$headers = "From: Coloque o nome do remetente ";

$headers = "Reply-To: $_POST[enviar_email] ";

/*

Função Mail:

1: Coloque o email que vai receber os dados do formulário;

2: Coloque o titulo do email;

3: Os dados do formulário.

*/

mail("emaildodestinatário@email.com", "Contatos no Site", $corpo, $headers);

?>

Caso queira ver mais sobre a função Mail(), leia a postagem:

Sistema de envio de e-mails em PHP com redirecionamento para mesma página e mensagem de sucesso.

 Abraços e até a próxima!

sexta-feira, 21 de janeiro de 2011

Sistema de envio de e-mails em PHP com redirecionamento para mesma página e mensagem de sucesso.

Olá pessoal,

A dica de hoje é sobre PHP. Achar códigos que enviam formulários através de PHP é uma tarefa muito fácil, tem aos montes com uma busca básica no Google.

Porém o que não achei foi um sistema de redirecionamento eficiente, todos eles utilizam o <http-equiv="REFRESH" content="0;url=http://www.dominio.com">, que é muito legal, você pode definir a quantidade de tempo que vai permanecer na página utilizando o content="x (aonde x é os segundos) e mostrar uma mensagem durante esse tempo.

Seria perfeito, se esse comando funcionasse no Chrome e Safari, mas não funciona.

Minha solução para o problema foi a seguinte, logo abaixo da tag body utilize um pequeno trecho em php, aonde defino uma variável status. Se o status for igual a "nada" ela recebe o valor 1.


<?php
if ($status=='')
{
$status=1;

}
?>

Agora o código de envio do formulário, não estou me focando em colocar a estrutura do formulário.

<?php

if ($status==0) /*Esse if checa o valor do status, se for 0 ele executa o código */
{

/*Recebimento dos dados do formulário */


$corpo .= "Nome: " . $_REQUEST["nome"] . "
";
$corpo .= "Email: " . $_REQUEST["email"] . "
";
$corpo .= "Telefone: " . $_REQUEST["telefone"] . "
";
$corpo .= "Motivo: " . $_REQUEST["motivo"] . "
";
$corpo .= "Mensagem: " . $_REQUEST["mensagem"] . "
";

$header = "From:Coloque o remetente
";
$header = "Reply-To: $_POST[enviar_email]

";

mail("email@destinatario.com.br", "Assunto do e-mail", $corpo, $header);

echo "

Mensagem enviada com sucesso, em breve responderemos sua solicitação.
"; /*Mensagem de sucesso */

}

?>

A última alteração tem que ser na TAG form do seu formulário, no action você tem que passar o valor 0 para a variável status.

<form method="post" action="contato.php?status=0;">

Ou seja, no momento que o usuário clicar no botão enviar, vai ativar o action do form, que vai pegar enviar o conteúdo para a mesma página contato.php mas setando o $status com 0, cai no if logo abaixo do body, passa direto e executa o código de envio do formulário!

Espero que seja útil!
Abraços e até a próxima!

quarta-feira, 16 de dezembro de 2009

Linguagem de programação C, programa que cria, carrega escreve e mostra o conteúdo de um arquivo

Mais um programinha em C da época da faculdade, esse programa cria, carrega escreve e mostra um arquivo de texto.

#include
#include

FILE *fp;
char nome[20];

void criar()
{


printf ("Digite o nome do arquivo que deseja criar ou carregar:\n");

fflush(stdin);

gets (nome);

fp=fopen (nome, "a+");

if (!fp)
printf ("Erro na abertura do arquivo.\n");
else
printf ("Sucesso na criação ou abertura do arquivo\n");
fclose(fp);

}

void escrever()
{


char string [100];
int i;


fp=fopen (nome,"a+");

if (!fp)
criar();

else
printf ("Entre com o texto a ser gravado\n");

fflush(stdin);
gets (string);

for(i=0; string[i]; i++)
putc(string[i], fp);

fclose(fp);

}

void mostrar()
{

char caracter;


fp=fopen (nome,"r+");

if (!fp)
criar();

do
{
caracter = getc(fp);
printf("%c",caracter);
}
while(caracter != EOF);

printf ("\n\n");

fclose(fp);

}
int main(int argc, char *argv[])
{

int menu;
int a;

a=1;
while (a==1)
{
printf (" 1 - Criar ou carregar Arquivo\n 2 - Escrever Arquivo\n 3 - Mostrar Arquivo \n 4 - Sair\n\n");
scanf ("%d",&menu);

switch (menu)
{
case 1: criar(); break;
case 2: escrever(); break;
case 3: mostrar(); break;
case 4: a=0 ;break;
default : printf ("\n opcao invalida");
}
}

system("PAUSE");
return 0;
}

Linguagem de programação C, programa que grava log em arquivo de texto.

Para programadores iniciantes, segue um execício que tive que fazer quando cursava a disciplina de linguagem de programação avançada na faculdade.

O enunciado do exercício pede para o programa gravar um log com nome, dia, mês e ano e a ação do usuário, segue o código parcialmente comentado.

Para quem nunca programou mas quer brincar um pouco, basta fazer download do Dev C++ clicando aqui.

Obs: Não consegui colar o código com a identação.


#include
#include

FILE *fp; //criação do arquivo texto

void writelog() //função que escreve no arquivo
{
int parametros;
int b;
char string[100];
char nome[30];
int dia, mes, ano;

fp=fopen ("writelog.txt", "a+"); //abertura do arquivo de texto

if (!fp)
printf ("Erro na abertura do arquivo.\n");
else
printf ("Sucesso na abertura do arquivo\n");

printf ("Entre com seu nome\n");

fflush(stdin);
gets (nome);

printf ("Dia\n");

scanf("%d",&dia);

printf ("Mes\n");

scanf("%d",&mes);

printf ("Ano\n");

scanf("%d",&ano);

b=1;
while (b==1)
{
printf ("Selecione o parametro:\n\n 350\n 351\n 500\n 650\n 651\n 701\n 702\n 704\n 800\n 4 - Sair\n");
scanf ("%d",¶metros);

switch (parametros)
{


case 350: fprintf(fp,"\n %s %d %d %d %s %s","Em", dia,mes,ano,nome, "iniciou o sistema\n"); break;
case 351: fprintf(fp,"\n %s %d %d %d %s %s","Em", dia,mes,ano,nome, "entrou no sistema"); break;
case 500: fprintf(fp,"\n %s %d %d %d %s %s","Em", dia,mes,ano,nome, "erro no sistema"); break;
case 650: fprintf(fp,"\n %s %d %d %d %s %s","Em", dia,mes,ano,nome, "terminou o sistema"); break;
case 651: fprintf(fp,"\n %s %d %d %d %s %s","Em", dia,mes,ano,nome, "saiu do sistema"); break;
case 701: fprintf(fp,"\n %s %d %d %d %s %s","Em", dia,mes,ano,nome, "abriu um arquivo"); break;
case 702: fprintf(fp,"\n %s %d %d %d %s %s","Em", dia,mes,ano,nome, "salvou um arquivo"); break;
case 704: fprintf(fp,"\n %s %d %d %d %s %s","Em", dia,mes,ano,nome, "listou um arquivo"); break;
case 800: fprintf(fp,"\n %s %d %d %d %s %s","Em", dia,mes,ano,nome, "enviou um arquivo"); break;
case 4: b=0 ;break;
default : printf ("\n opcao invalida");
}
}


}


int main(int argc, char *argv[])
{

int menu;
int a;

a=1;
while (a==1)
{
printf (" 1 - Entrar no programa\n 2 - Sair\n\n");
scanf ("%d",&menu);

switch (menu)
{
case 1: writelog(); break;
case 2: a=0; break;
default : printf ("\n opcao invalida");
}
}

system("PAUSE");
return 0;
}


O programa funciona bem, porém existem formas mais facéis de fazer o mesmo, amanhã posto um código mais limpo do mesmo.

Abraços!
Related Posts Plugin for WordPress, Blogger...
Web Analytics