Dica de Função isset()

sexta-feira, 4 de julho de 2008 | Marcadores: , , | 0 comentários |

Se você usa a função isset() assim:

$teste = isset($_POST["algo"]);
if($teste==0)
{
$teste = $_POST["algo"];
}


Você pode economizar tempo e linhas de código fazendo assim:

isset($_POST["algo"]) ? $_POST["algo"] : FALSE;

O resultado é o mesmo!

VALIDAÇÃO DE FORMULÁRIOS COM JAVASCRIPT

| Marcadores: , , | 0 comentários |

Crie um formulário usando o código abaixo:

<form name="cadastro" action="teste.php" method="post" onSubmit="return validaForm()">
<table width="40%" border="1" cellpadding="5" cellspacing="0" bordercolor="#000000">
<tr>
<td>nome:</td>
<td><input name="nome" type="text"></td>
</tr>
<tr>
<td>user:</td>
<td><input name="user" type="text"></td>
</tr>
<tr>
<td>senha:</td>
<td><input name="senha" type="password"></td>
</tr>
<tr>
<td>email:</td>
<td><input name="email" type="text"> (xxx@xx.xx)</td>
</tr>
<tr>
<td>telefone:</td>
<td><input name="telefone" type="text"></td>
</tr>
<tr>
<td>Data de nascimento:</td>
<td><input name="nasce" type="text"> (dd/mm/yyyy)</td>
</tr>
<tr>
<td>Sexo :</td>
<td>
<input name="sexo[]" type="radio" value="masculino" id="sexo">
Masculino
<input name="sexo[]" type="radio" value="feminino" id="sexo">
Feminino
</td>
</tr>
<tr>
<td colspan="2">
<div align="right">
<input name="enviar" type="submit" value="enviar">
</div>
</td>
</tr>
</table>
</form>

No formulário acima, o evento onSubmit chama uma função chamada validaForm que será responsável pela vvalidação dos dados do formulário. Se os dados estiverem corretos retornará true e o formulário será enviado. Caso contrário uma mensagem será mostrada determinando o local do erro.

Com o formulário criado agora vamos partir para o desenvolvimento do código. Neste formulário será feita a checagem de seis caixas de entrada de dados e de um radio box.
Para validação das as caixas de entradas é feita uma verifição se foi digitado algum valor.
Para o campo e-mail a verificação é mais elaborada para saber se é um endereço de email válido.


Para o campo telefone, só são aceito números.
Para o campo Data de nascimento é verificado se a data esta correta com o padrão estabelecido.
Para o campo Sexo é verificao se algum valor foi selecionado.


Exemplo:

1 function validaForm(){
2 d = document.cadastro;
3 //validar nome
4 if (d.nome.value == ""){
5 alert("O campo " + d.nome.name + " deve ser preenchido!");
6 d.nome.focus();
7 return false;
8 }
9 //validar user
10 if (d.user.value == ""){
11 alert("O campo " + d.user.name + " deve ser preenchido!");
12 d.user.focus();
13 return false;
14 }
15 //validar senha
16 if (d.senha.value == ""){
17 alert("O campo " + d.senha.name + " deve ser preenchido!");
18 d.senha.focus();
19 return false;
20 }
21 //validar email
22 if (d.email.value == ""){
23 alert("O campo " + d.email.name + " deve ser preenchido!");
24 d.email.focus();
25 return false;
26 }
27 //validar email(verificao de endereco eletrônico)
28 parte1 = d.email.value.indexOf("@");
29 parte2 = d.email.value.indexOf(".");
30 parte3 = d.email.value.length;
31 if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9)) {
32 alert ("O campo " + d.email.name + " deve ser conter um endereco eletronico!");
33 d.email.focus();
34 return false;
35 }
36 //validar telefone
37 if (d.telefone.value == ""){
38 alert ("O campo " + d.telefone.name + " deve ser preenchido!");
39 d.telefone.focus();
40 return false;
41 }
42 //validar telefone(verificacao se contem apenas numeros)
43 if (isNaN(d.telefone.value)){
44 alert ("O campo " + d.telefone.name + " deve conter apenas numeros!");
45 d.telefone.focus();
46 return false;
47 }
48 //validar data de nascimento
49 erro=0;
50 hoje = new Date();
51 anoAtual = hoje.getFullYear();
52 barras = d.nasce.value.split("/");
53 if (barras.length == 3){
54 dia = barras[0];
55 mes = barras[1];
56 ano = barras[2];
57 resultado = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4) && (ano <= anoAtual && ano >= 1900));
58 if (!resultado) {
59 alert("Formato de data invalido!");
60 d.nasce.focus();
61 return false;
62 }
63 } else {
64 alert("Formato de data invalido!");
65 d.nasce.focus();
66 return false;
67 }
68 //validar sexo
69 if (!d.sexo[0].checked && !d.sexo[1].checked) {
70 alert("Escolha o sexo!")
71 return false;
72 }
73 return true;
74 }

Linha 1 – Declaração da função responsável pela validação dos dados do formulário.

Linha 2 – Declaração de uma variável para economizar tempo e prováveis erros de digitação.

Linha 4 – Verificação se foi digitado algum valor para o campo nome. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 10 – Verificação se foi digitado algum valor para o campo user. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 16 – Verificação se foi digitado algum valor para o campo senha. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 22 – Verificação se foi digitado algum valor para o campo email. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 28 – Declaração de uma variável que armazenara a posição do caractere “@” na caixa de entrada email.

Linha 29 – Declaração de uma variável que armazenara a posição do caractere “.” na caixa de entrada email.

Linha 30 – Declaração de uma variável que armazenara a quantidade de caracteres digitados na caixa de entrada email.

Linha 31 – Estrutura condicional para verificação se o caractere “@” está no mínimo depois de três letras, o caractere “.” está no mínimo depois de seis e se foi digitado no mínimo 9 letras. Se retornar falso, é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 37 - Verificação se foi digitado algum valor para o campo telefone. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 43 - Verificação se o valor digitado no campo telefone possui apenas números. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 50 – Declaração de uma variável que armazena uma nova Data.

Linha 51 - Declaração de uma variável que armazena o valor do ano no formato completo com 4 caracteres.

Linha 52 – Declaração de uma variável que separa o valor da caixa de entrada referente a data de nascimento e coloca em uma matriz, a “/” é utilizada para separar os valores entre elas, é suposto ter 3 valores referente a dia, mês e ano respectivamente.

Linha 53 - Estrutura condicional para verificação se tem 3 valores para a matriz criada. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 54 - Declaração de uma variável que recebe o primeiro valor da matriz, valor esse referente ao dia.

Linha 55 - Declaração de uma variável que recebe o segundo valor da matriz, valor esse referente ao mês.

Linha 56 - Declaração de uma variável que recebe o terceiro valor da matriz, valor esse referente ao ano completo com 4 caracteres.

Linha 57 - Declaração de uma variável que faz a verificação das variáveis criadas anteriormente referente a dia, mês e ano, é feita uma checagem se os valores são números e se estão no padrão estabelecido.

Linha 58 - Estrutura condicional para checagem se o resultado da verificação dos dados digitados. Se retornar falso é é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 69 - Verificação se foi selecionado algum valor referente ao sexo. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 73 – Se todos os valores foram digitados corretamente a função vai retornar true e o formulário será enviado.

ABRIR POP UP EXATAMENTO NO CENTRO DA PÁGINA

| Marcadores: , | 0 comentários |

Para abrir uma o up exatamento no centro de uma página em qualquer resolução de tela inclua o código abaixo antes da tag </head>.

<script>
function abrir(pagina,largura,altura) {

//pega a resolução do visitante
w = screen.width;
h = screen.height;

//divide a resolução por 2, obtendo o centro do monitor
meio_w = w/2;
meio_h = h/2;

//diminui o valor da metade da resolução pelo tamanho da janela, fazendo com q ela fique centralizada
altura2 = altura/2;
largura2 = largura/2;
meio1 = meio_h-altura2;
meio2 = meio_w-largura2;

//abre a nova janela, já com a sua devida posição
window.open(pagina,'','height=' + altura + ', width=' + largura + ', top='+meio1+', left='+meio2+'');
}
</script>

Agora nos links para as páginas que serão abertas no pop up use o código abaixo:

<a href="java script: abrir('PAGINA.htm','600','400');">Abrir janela centralizada</a>

DESABILITAR BOTÃO DIREITO DO MOUSE

| Marcadores: , | 0 comentários |

Para desabilitar o botão direito do mouse e evitar que copiem o seu conteudo inclua denro da tag <body> o seguinte código:

oncontextmenu="return false"

Exemplo: <body
oncontextmenu="return false">

ABRIR PÁGINA EM TELA-CHEIA (FULLSCREEN)

| Marcadores: , | 0 comentários |

Primeiramente este recurso não deve ser usado para páginas de internet, porque é muito chato abrir tela cheia sem que a pessoa queira. Infelizmente esta técnica é muito usada por spamers, mas ela tem as suas vantegens!
Como o Php possibilita que façamos alem de sites, programas para uso variados as vezes é melhor ser visualizado em tela-cheia!

Para uma página ser aberta em fullscreem, primeiro coloque o código abaixo entre as tags <head></head>.


<script type="text/javascript" language="javascript">

function abrir(URL,titulo,width,height) {
var left = 99;
var top = 99;
window.open(URL,titulo,'width='+width+', height='+height+', top='+top+', left='+left+', scrollbars=no, status=no, toolbar=no, location=no, directories=no, menubar=no, resizable=yes, fullscreen=yes');
}


</script>


Aqui vai o link para ser aberto em fullscreen:

<a href="javascript:abrir('index.php','Popup','800','600')">CLIQUE AQUI PARA ENTRAR</a>


Na página que será aberta em fullscreen coloque este código dentro da tag <body>.Isso fará com que a barra do titulo do internet explorer também desapareça.

style = "overflow-x: hidden; overflow-y: hidden;"

Esta técnica só ira funcionar em alguns computadores se for definido a página como segura nas configurações do internet explorer!

FUNÇÕES PARA TRABALHAR COM IP

quinta-feira, 3 de julho de 2008 | Marcadores: | 0 comentários |

O PHP oferece diversas funções para trabalharmos com endeços de IP.
Veja alguns exemplos:

<?
$ip = $_SERVER[‘REMOTE_ADDR’];
echo $ip; // 127.0.0.1

$host = gethostbyaddr($_SERVER[‘REMOTE_ADDR’]);
echo $host; // localhost

$get_ip = gethostbyname(‘www.uol.com.br’);
echo $get_ip; // 200.221.2.45

$get_ips = gethostbynamel(‘www.google.com’);
print_r($get_ips); // Array ( [0] => 66.102.7.99 [1] => 66.102.7.147 [2] => 66.102.7.104 )
?>


A primeira função, $_SERVER[’REMOTE_ADDR’], é utilizada para sabermos o endereço de IP de um usuário, por exemplo.
A segunda, gethostbyaddr(), informa o nome do host name de Internet referente ao endereço de IP.
A função gethostbyname() retorna o endereço de IP correspondente a um host name de internet, já a última delas, gethostbynamel(), retorna uma lista de endereços de IP correspondente ao host name de internet.

Hoje, conheci mais duas funções para se trabalhar com IP muito interessantes. São elas, ip2long() e long2ip(). Observe:

<?
$receive = ip2long($_SERVER[‘REMOTE_ADDR’]);
$output = long2ip($receive);
echo $receive; // 2130706433 {integer}
echo $output; // 127.0.0.1 {string}
?>

Uma trabalha em conjunto com a outra. Enquanto a ip2long() converte uma string contendo um “Internet Protocol dotted address” válido em um integer; a long2ip() converte o integer em uma string.

A função ip2long() se torna muito útil, quando se faz necessário armazenar endereços de IP em um banco de dados. Reduzindo consideravelmente o espaço utilizado, além de tornar muito mais rápida uma futura consulta no banco de dados por esses endereços de IP.

Digo, reduzir o espaço por que ao invés de armazenar o endereço de IP como uma string - 127.0.0.1 - e utilizando para tal um campo do tipo char(15), o que gastaria 15 bytes. Você pode pode armazená-lo como um integer - 2130706433 - e gastar 4 bytes ao invés de 15. Posteriormente para exibir o endereço de IP, você usaria a função long2ip().

VALIDAÇÃO DE RADIO BUTTON EM FORMULÁRIOS

quarta-feira, 2 de julho de 2008 | Marcadores: | 0 comentários |

Inclua o código abaixo entre a tag <head></head>

<script>
function checa(nform) {
//validacao de radio buttons sem saber quantos sao
marcado = -1
for (i=0; i<nform.resp.length; i++) {
if (nform.resp[i].checked) {
marcado = i
resposta = nform.resp[i].value
}
}

if (marcado == -1) {
alert("Selecione uma resposta.");
nform.resp[0].focus();
return false;
}
return true;
}
</script>

Para ver o funcionamento, basta não clicar em nenhuma das opções abaixo:

<form action="validacao_radio_button.asp" method="post" name="form1" onSubmit="return checa(this);">
Você é?<br>
<input type="radio" name="resp" value="Homem">Homem <input type="radio" name="resp" value="Mulher">Mulher

<input type="submit" name="responde" value="Responder"> </form>

LISTAR OS ARQUIVOS DE UM DIRETÓRIO

terça-feira, 1 de julho de 2008 | Marcadores: | 0 comentários |

Salve este código como index.php e coloque-o dentro da pasta que você quer listar os arquivos e pronto!

<?
// Define um array para armazenar os arquivos
$files = array();

// Diretório atual
$d = dir('.');

// Percorre todos os arquivos
while(false !== ($file = $d->read())){
// Se o arquivo não é este arquivo, e não começa com "." ou "~"
// e não termina em LCK, então guarde-o para exibição futura.

if(($file{0} != '.') && ($file{0} != '~') &&
(substr($file, -3) != 'LCK') &&
($file != basename($_SERVER['PHP_SELF'])) ) {
// Guarda o nome do arquivo e dados completos de uma chamada
// à stat()
$files[$file] = stat($file);
}
}

// Fecha o diretório
$d->close();

// Agora vamos exibir o resultado em uma tabela
echo '<style>td { padding-right: 10px; }</style>';
echo '<table><caption>Conteúdo deste diretório:</caption>';

// Ordenar os arquivos em ordem alfabética
ksort($files);


// Percorremos os arquivos, exibindo uma nova linha na tabela
// para cada um deles.
foreach ($files as $name => $stats) {
// Inicia a linha e exibe um link com o nome do arquivo
echo "<tr><td><a href=\"{$name}\">{$name}</a></td>\n";
// Uma célula com o tamanho do arquivo
echo "<td align='right'>{$stats['size']}</td>\n";
// Uma coluna com a data de criação do arquivo
echo '<td>', date('d/m/Y h:ia', $stats['mtime']), "</td></tr>\n";
}

echo '</table>';
?>