PHP – O Lado seguro e ágil da coisa
Dado a questão do php não ser na máquina cliente, como um programa feito em Delphi por exemplo, ele nos dá um acesso ao servidor que torna um serviço rápido, possível e seguro.
Uma vez, um grande amigo de MSN, programador e professor me falou uma vez que já que você tem uma grande ferramenta em suas mãos..nunca passe-a para o cliente...e é verdade...por exemplo..você vai mexer com números captcha (aqueles números chatos que você tem que preencher em todos os formulários), quando for fazer a verificação, nunca mande para o site..e faça no servidor, pois se você mandar..eles não terá utilidade..logo todos poderão hackeiar seu site!
Bom..tem algumas variáveis que a gente nunca vai usar (não pelo lado que vou levar)...mas que vou falar um pouquinho...como:
<?php echo $HTTP_USER_AGENT;?>
Essa variável feia ai..vai nos dar qual navegador nosso cliente está usando...
Tem várias outras variáveis que você pode consultar em:
http://www.criarweb.com/artigos/81.php
HTTP://www.php.net
Que não vamos citar aqui..porém, as mais utilizadas devemos e vamos falar sobre elas!
GET
A variável get vai servir para você enviar algum dado de uma página à outra!!
Por exemplo..você tem uma variável nome, e na outra página não tem como vc reconhecer essa variável..você utilizará do get para isso!
Exemplo:
pagina01.php
Código:
<?php
$var = 'Ket Boiola';
Echo "<a href='pagina02.php?var=".$var."'>Clique Aqui!</a>";
?>
pagina02.php
Código:
<?php
$var = $_GET['var'];
echo $var;
?>
Com isso você vai ver que não tem nenhuma variável com um valor definido na página 02..mas ao passar essa variável da página 01..você vai ver que o $_GET[‘var’]; irá pegar o valor!!
POST
O post vai funcionar igual ao get..porém..para formulários (você poderá fazer isso para o get Tb..td denpende do seu form)
Vamos supor que você tenha o seguinte formulário:
pagina01.php
Código:
<form action="pagina02.php" method="post" enctype="multipart/form-data" name="frm_ins" id="frm_ins">
<input name="nome" id="nome" type="text" />
<input type="submit" name="btn" id="btn" value="Enviar" />
</form>
Observe bem que tem somente um campo, com o nome nome!!
Hahahaha!!
Logo faremos o seguinte na página 2:
pagina02.php
Código:
<?php
$nome = $_POST['nome'];
echo $nome;
?>
NOHHHHHHHHHHH....pois é...é só isso mesmo!!
E você pega todos os dados enviado de um formulário!!
Ai você me pergunta..então já posso fazer um big Mac super mega pop star cadastro?
Ai eu respondo: não..pois você ainda não aprendeu como inserir em um banco de dados..masssss..isso é a próxima aula!!
Hehehe
FILES
A Var files pra mim é uma das mais legais, pois você pode trabalhar com envio de arquivos...
Bom..vamos fazer duas páginas de teste aqui...uma vai ter um formulário com um campo file e outra vai receber e copiar o arquivo para a pasta foto!!
pagina01.php
Código:
<form action="pagina02.php" method="post" enctype="multipart/form-data" name="frm_ins" id="frm_ins">
<input type="file" name="foto" id="foto">
<input type="submit" name="btn" id="btn" value="Enviar" />
</form>
Crie uma pasta chamada fotos!
pagina02.php
Código:
<?php
copy($_FILES['foto']['tmp_name'],"fotos/".$_FILES['foto']['name']);
?>
O bom dessa variável que você pode jogadinhas com a variável..tipo assim:
pagina02.php
Código:
<?php
if($_FILES['foto']['name'] == 'image/gif') {
copy($_FILES['foto']['tmp_name'],"fotos/".$_FILES['foto']['name']);
} else {
echo "Extensão não permitida!";
exit;
}
?>
Se vocês analisarem bem o código..vai ver q ele só vai aceitar arquivos .gif!!
Agora vamos restringir o tamanho:
pagina02.php
Código:
<?php
IF($_FILES['foto']['name'] == 'image/gif') {
if($_FILES['foto']['size'] < 100000) {
copy($_FILES['foto']['tmp_name'],"fotos/".$_FILES['foto']['name']);
} else {
echo "Tamanho não permitido!";
exit;
}
} else {
echo "Extensão não permitida!";
exit;
}
?>
Com isso ele vai bloqueiar tamanhos acima de 100kb!
Ai fica mais uma variável!!
Tem mais duas variáveis que para mim são importantes..que no caso é a cookie e a outra é a session!
Mas vou deixar para estudar isso no tópico: Utilizando Session!
Caso queira saber mais (fora o site que indiquei lá em cima)..basta acessar:
http://imasters.uol.com.br/artigo/1057/php/_files/
esse vai falar muito também sobre files!!
Globais
As variáveis globais, de um jeito mais grosseiro vai transformar as outras variáveis em simples variáveis...como?
Muahahaha!
Você tem uma variável chamada pelo $_GET..por exemplo:
Código:
<?php
$var = $_GET['var'];
Mas ai o que acontece...vc ta de saco cheio de chamar $_GET...toda vez?
Ai você vai no php.ini (aquele que a gente usou pra instalar o php)...pesquisar por:
Register_globals = off
Você vai mudar para on!
E vai reiniciar o apache...com isso..você vai ter agora um código assim:
Código:
<?php
//em vez disso:
#$var = $_GET['var'];
//isso:
$var = $var;
//ficou redundante..mas foi para mostrar o que a de cima fez!
Eu não aconselho a fazer isso..pois você pode ter algumas variáveis declaradas como $var e a global vai substituir ela!!
Eu mesmo nunca usei globals!!
Funções!
Bom...a definição de classes e funções em um modo muito grosseiro é a utilização das mesmas para a não repetição do código....hãn?
Bom..você tem um código que muda a data de um formato dd/mm/YYYY para YYYY-mm-dd...ai você usa ele em todo o seu site umas 4x...como você não quer repetir todos os passos toda vez..é só criar uma função ou classe para isso!!
Vamos criar essa função?
Código:
<?php
function data($data) {
$dt = explode("/",$data);
$dt = $dt[2].'-'.$dt[1].'-'.$dt[0];
return $dt;
}
echo data(date("d/m/Y"));
echo data("20/04/1999");
?>
Bom..ai você me diz..mas qual a diferença de classe e função?
Segundo a discussão abaixo..é somente a questão de organização:
http://forum.imasters.uol.com.br/ind...1&#entry421851
bom...vamos supor que você agora quer em vez de passar somente para YYYY-mm-dd, você também quer o contrário..para isso vamos fazer uma classe!
Código:
<?php
class data_formata {
var $dt_o;
var $dt_n;
function ymd($dt_o) {
$this->dt_o = $dt_o;
$this->dt_n = explode("/", $dt_o);
$this->dt_n = $this->dt_n[2].'-'.$this->dt_n[1].'-'.$this->dt_n[0];
return $this->dt_n;
}
function dmy($dt_o) {
$this->dt_o = $dt_o;
$this->dt_n = explode("/", $dt_o);
$this->dt_n = $this->dt_n[0].'-'.$this->dt_n[1].'-'.$this->dt_n[2];
return $this->dt_n;
}
}
?>
Ai você fala: PUTAQUEOPARIU!! Fiquei perdidaço nessa joça!!
Vamos às explicações....caso você queira usar alguma variável da classe fora da classe..você tem q defini-la antes..ou seja..usa-se o var!!
Depois da classe...temos uma curiosidade..podemos usar a função dentro dela..já a função..não se pode usar classe dentro da mesma!
Bom..essas funções são iguais a primeira..a diferença está em uma linha:
Função 1:
$this->dt_n = $this->dt_n[2].'-'.$this->dt_n[1].'-'.$this->dt_n[0];
Função 2:
$this->dt_n = $this->dt_n[0].'-'.$this->dt_n[1].'-'.$this->dt_n[2];
Ahh..esqueci de falar..estamos usando $this-> para indicar que a variável que estamos usando está setada na classe!!
Lembrando que $this->dt_n é diferente de $dt_n!!!
Você pode ver que a diferença foi só na hora de montar!!
Começamos com o ano, mês e dia em um..e depois dia, mês e ano na outra!!
Bom..queria que vocês, implementasse essa classe descrita acima...em vez de deixar somente o traço, quero que seja inserido (como a data) um separador à escolha..entendeu?
vou dar uma dica!!
na hora de chamar a classe antes era assim:
<?php
$dt = new data_formata();
echo $dt->ymd("20/03/2008");
?>
depois:
<?php
$dt = new data_formata();
$dt->ymd("20/03/2008","/");
?>
Até a próxima!!
ah....desculpa a demora por ter postado essa...além deu estar meio que super mega sem tempo...fiquei na esperança do still fazer a outra...
mas é isso ai...ket tá vivo ainda e um novo cabra me adicionou no msn falando q tá acompanhando as aulas!!