Arquivo

Arquivo da Categoria ‘PHP’

Operador Ternário no PHP

4, junho, 2010

Existe uma forma diferente de se trabalhar com condições no PHP… Se chama Operador Ternário e ele deixa o código mais resumido, e mais otimizado.

O seu uso consiste em agrupar, na mesma linha, a condição, os comandos para true (verdadeiro) e os comandos para false (falso).

Vamos ao velho exemplo de condições (if) que todo mundo já viu:

1
2
3
4
5
6
7
8
<?
$nota = 4;
if ($nota >= 7) {
echo "Você passou!";
} else {
echo "Você não passou!";
}
?>

Agora veja a versão ternária desse mesmo código:

1
2
3
4
<?
$nota = 4;
echo ($nota >= 7) ? "Você passou!" : "Você não passou!";
?>

A sintaxe do operador ternário é a seguinte:
(< condição >) ? < instruções para verdadeiro > : < instruções para falso >;

Veja outro exemplo de uso do operador ternário:

1
2
3
4
5
6
7
8
9
10
11
<?
// Atribuição de um valor padrão a uma variável
// Versão "padrão"
if (!isset($variavel)) {
$variavel = 'valor padrão';
} else {
$variavel = $variavel;
}
// Versão usando operador ternário
$variavel = (!isset($variavel)) ? 'valor padrão' : $variavel;
?>

Não se esqueçam de ver a documentação oficial sobre operadores de comparação, dentre os quais está o operador ternário.

Espero que tenham gostado! :)

Anderson Dicas, PHP, Programação ,

SQL Injection no PHP

19, fevereiro, 2010

Recentemente tive um site invadido onde o próprio invasor me enviou um e-mail mostrando alguns dados do meu banco e dizendo que poderia corrigir o problema mediante pagamento.
Fiz uma analise procurando saber como o site foi invadido. Depois de muito analizar, chego a conclusão que foi por SQL Injection.
Segue abaixo uma alternativa que evita esse tipo de ataque:

Primeiro crie um arquivo com o seguinte conteúdo:
funcoes.inc.php

<?
function anti_injection_post($array) {
  	foreach ($array as $key=>$value) {
		$array[$key] = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|truncate|#|\*|--|\\\\)/"),"",$array[$key]);
		$array[$key] = trim($array[$key]);
		$array[$key] = strip_tags($array[$key]);
		$array[$key] = addslashes($array[$key]);
  	}
	return $array;
}
?>

Posteriormente nos arquivos do site onde você irá usar os arrays $_POST e $_GET use o seguinte no inicio do arquivo:

<?
include_once('funcoes.inc.php');
$_POST = anti_injection_post($_POST);
$_GET  = anti_injection_post($_GET);
.
.
.
?>

Essa função evita que seja inserido instruções sql em campos ou na barra de endereço do seu site.

é isso ai…

Update:
Agradecimento ao meu irmão Andriel pela colaboração.

Anderson PHP, Programação ,

Função que valida e-mail

8, setembro, 2009

Função que valida e-mail.
Verifica os caracteres informados, se possui a “@” e “.”, e não pode possuir caracteres inválidos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
function valida_email($str){ 
  if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$", $str)){ 
    return 1; 
  } else { 
    return 0; 
  }
}
 
//Modo de usar: 
$email = 'teste@teste.com'; 
if (valida_email($email)) { 
  echo "e-mail valido"; 
} else { 
  echo "e-mail invalido"; 
} 
 
?>

Anderson PHP, Programação ,

Função de diferença entre datas

5, setembro, 2009

Segue uma função que mostra a diferença de dias entre duas data informadas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<? 
function date_diff($from, $to) { 
// Use DD-MM-AA ou DD-MM-AAAA 
  list($from_day, $from_month, $from_year) = explode("-", $from); 
  list($to_day, $to_month, $to_year) = explode("-", $to); 
 
  $from_date = mktime(0,0,0,$from_month,$from_day,$from_year); 
  $to_date = mktime(0,0,0,$to_month,$to_day,$to_year); 
 
  $days = ($to_date - $from_date)/86400; 
 
  return ceil($days); 
} 
 
$de = $_GET['de']; 
$para = $_GET['para']; 
echo 'A diferença de dias entre as duas datas seria: ' . date_diff("$de","$para"); 
?>

é isso….

Anderson Dicas, PHP, Programação ,

Acentuação no AJAX

4, setembro, 2009

Escrever aplicativos com ajax é a vontade de 11 em cada 10 programadores web atualmente.
A linguagem facilita, e muito, a experiência do usuário no site e, além de ser um dos maiores ícones da web 2.0, coloca o(s) responsável(is) pelo projeto na “vanguarda da tecnologia” (assim dizem os profetas).

Só que nem tudo são flores quando o assunto é AJAX (Asynchronous JavaScript and XML). Principalmente se você for um programador brasileiro, como eu.
Digo isso por causa do nosso belo alfabeto, originado do latim e com seus acentos e caracteres peculiares.

Nós, brasileiros, utilizamos a codificação ISO-8859-1, enquanto que, por padrão, o AJAX trabalha com o UTF-8.
O resultado? Hieróglifos egípcios aparecem no lugar de palavras acentuadas e outros caracteres particulares do nosso idioma.

A solução?

Procurei por diversas soluções, mas nenhuma me atendia satisfatoriamente. Só uma, que posto a seguir:

1
header(”Content-Type: text/html; charset=ISO-8859-1), true);

Não vou oferecer explicações a respeito da função nativa do PHP, header(). Deixo que vocês mesmos consultem o manual da linguagem para que entendam como funciona.

Existem outras alternativas, como modificar o header direto no HTML, com a tag META, mas geralmente não funcionam a contento.

Quem tiver outras soluções funcionais, postem nos comentários.

Fonte: Silvio Delgado

Anderson Ajax, PHP, Programação ,

PHP, Zeros a Esquerda (Zero padding)

21, julho, 2009

Após bater a cabeça por uns instantes, rerolvi gooooglar…. e ache a solução que precisava.

Completar um número com zeros a esquerda ?

Ao que interessa (direto do php.net),

str_pad — Preenche uma string para um certo tamanho com outra string

string str_pad ( string $input, int $pad_length [, string $pad_string [, int $pad_type]] )

Só olhando já da pra percebe o funcionamento, vamos lá:

Exemplo:

1
2
3
$n = str_pad($n, 4, "0", STR_PAD_LEFT);
echo $n;
// Resultará 0001

Explicando:

str_pad($n, 4, “0″, STR_PAD_LEFT);

$n = nossa variavel de entrada
4 = nosso pad_length, ou qual o tamanho da string a ser preenchida ou qual tamanho ela deve possuir ao final
“0″ = nosso pad_string, ou string que sera usada para preencher os espaços até completar nosso tamanho desejado
STR_PAD_LEFT = nosso pad_type que pode variar entre STR_PAD_RIGHT, STR_PAD_LEFT ou STR_PAD_BOTH (deu pra entender né).

[]´s

Anderson Dicas, PHP