Archive for the ‘ PHP ’ Category

Tutorial – Sistema de Autenticação com PHP – Parte 2

Publicado em PHP setembro 29th, 2009 por: Lucas – Seja o primeiro a comentar!

php_code

Bem, ontem eu dei uma pequena explicação sobre como funcionam as sessions em php hoje vamos falar um pouquinho sobre o método require_once e como validar usuários com um simples arquivo de include.

1. Utilizando um simples require_once.

Lembram do arquivo a.php que utilizamos ontem ?! Eu modifiquei ele um pouquinho e agora vou chamá-lo de session_create.php. Veja o código abaixo:

image

Este arquivo irá criar uma sessão com os dados: user,id e um atributo chamado isvalid que é um booleano que vamos utilizar para definir se o usuário esta ou não autenticado em nosso sistema. Veja que eu ainda não expliquei para vocês como realmente autenticar um usuário, tudo que venho explicando até agora é sobre o mecanismo que iremos utilizar no futuro para validar se o usuário que esta acessando a página é um usuário que pode efetivamente acessa-la.

Digamos agora que seu site contenha um arquivo restrito, chamado restrito.php. Para que um usuário possa acessar este arquivo é necessário que ele tenha uma sessão válida.

Vejamos o arquivo restrito.php:

image

Entendendo o arquivo:

Linha 2: Faz a chamada do arquivo que contém o código de validação.
Linha 3: Imprime alguma coisa para testarmos se o usuário esta autenticado.

Neste momento você deve estar se perguntando sobre o conteúdo do arquivo valida.php, então aqui esta o mesmo.

image

Bem simples, antes de utilizarmos sessions sempre temos que chamar o método session_start(), depois disto validamos se o usuário é valido, caso contrário enviamos ele para uma página de login, falaremos sobre ela amanhã.

Você deve ter visto um método chamado header. Este método manipula os cabeçalhos enviados pelo servidor ao browser,mas é um muito importante lembrar que: Para utilizar o método header nenhuma saída pode ter sido enviada para o navegador!. Estarei detalhando sobre isto na última parte de nosso tutorial

Basicamente o que o require_once faz é chamar apenas uma vez o arquivo e injetá-lo dentro do interpretador do php, então os 2 arquivos acima são interpretados como se fossem um da seguinte forma:

image

Assim,  toda vez que alguém acessar a página restrito.php o php irá verificar se existe uma sessão válida caso contrario o usuário será redirecionado para uma página , a login.php.

Para criar esta sessão de testes tudo que você tem que fazer é acessar o arquivo create_session.php antes de tentar acessar o arquivo restrito.php.

A esta altura você deve estar se perguntando: E como eu faço logout deste sistema ?!

Bem utilizando isto:

image

O Método session_destroy(), destrói todas as sessões criadas para o servidor. Isto pode ser um problema em servidores shared, estarei explicando sobre este problema futuramente ,

No momento tudo que você tem a fazer é redirecionar seu browser para o arquivo logout.php e este realizará o “logout” do usuário no sistema.

Amanhã tem mais xD.

Tutorial – Sistema de Autenticação com PHP – Parte 1

Publicado em PHP setembro 29th, 2009 por: Lucas – Seja o primeiro a comentar!

php_code

Bem , esta semana estarei demonstrando como criar um sistema de autenticação simples com php e mysql. O recurso que utilizaremos para criar o controle de acesso é chamado de session(sessão).

Trabalhar com sessions em php é tão simples que me deixa até encabulado escrever esta primeira parte baseado em sessions.

1. Utilizando Sessions no PHP.

Imagine um tipo de variável que é armazenada no servidor e que persista. Assim são as sessions.Vamos imaginar 2 arquivos com os seguintes códigos php.

imageArquivo a.php

imageArquivo b.php

Quando o usuário acessar o “a.php”  a sessão será criada e o nome do usuário será salvo nela. Quando ele for para outra página neste site, digamos o arquivo “b.php” conseguirá recuperar o valor salvo em sessão e apresentar na tela.

Temos aqui 2 premissas para uso de sessions:

      1. Sempre chamar a função “session_start()” antes do uso de qualquer sessão.
      2. As variável salvas em sessão são guardadas dentro da váriavel $_SESSION[].
        Amanhã estarei falando sobre include e validação de autenticação.

Tutorial SQL – Parte 1

Publicado em PHP setembro 16th, 2009 por: Lucas – Seja o primeiro a comentar!

Eu sou leitor de vários fóruns e listas de discussão sobre PHP e notei que mais da metade das dúvidas na verdade estão relacionadas ao sql ( seja mysql,oracle,sqlite,etc…). Pensando nisto decidi alocar 30 minutos do meu horário de almoço para explicar para vocês como funciona SQL.Eu vou utilizar nos exemplos abaixo queries para Mysql  e Oracle a idéia detes tutorial não é ensinar mysql ou oracle e sim o conceito por trás da linguagem SQL.

  1. Introdução ao SQL.

Segundo a wikipedia “Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). “  Fonte : wikipedia

Falando assim parece complicado mas vamos olhar um exemplo simples:

Exemplo (1):
select * from tabela;

O que eu estou dizendo aqui é:

selecione *(todos os campos) da tabela;

Dentro do “statement” select o * (asterisco) é o coringa para trazer todos os campos e tabela é o nome da nossa tabela.

Mas eu acho que ainda esta meio vago né !? Então vamos entender melhor o conceito de uma tabela:

tabela

Exemplo de Tabela

Então bem , nosso “select * from tabela” irá trazer todas linhas e todas as colunas desta tabela, vale aqui um conceito importante:

Dentro de uma tabela cada linha representa um registro e cada coluna um campo.

Digamos então que você não queria todos os campos ( lembra do * asterisco ) então vamos tirar ele  e colocar em seu lugar o nome dos campos Ex:

Exemplo (2):
select campo1,campo2 from tabela;

Aqui vale a pena lembrar uma coisa no futuro quando começarmos a trabalhar com mais de uma tabela temos que tomar o cuidado de não nomear campos que possuem o mesmo nome nas duas tabelas. Para evitar este tipo de problema é aconselhável trabalharmos com a seguinte estrutura:

Exemplo (3):
select tabela.campo1,tabela.campo2 from tabela;

Mais a frente estarei falando sobre apelidos(alias,aliases) o que auxiliará na composição da query.

Alguns conceitos que eu não mencionei ainda, Database, tabelas,trigers,procedures e functions ,também serão abordados em próximos posts. Amanhã estarei postando sobre filtros com a instrução “where”.

Dica PHP – Evitando Sql Injection de forma simples xD

Publicado em Guia Nerd, PHP setembro 14th, 2009 por: Lucas – Seja o primeiro a comentar!

Hoje no trabalho encontramos uma pequena dificuldade com um sistema nosso feito em php e sql injection, utilizando array_walk e uma função simples podemos evitar este tipo de dor de cabeça. Veja abaixo:

A função:

function encodeString(&$item, $key, $prefix) {
    $item = addslashes ( utf8_decode ( $item ) );
}

Como utilizar:

array_walk($_REQUEST, 'encodeString'); //Coloque este codigo despois da função e antes de utilizar as variaveis do $_REQUEST

Utilizando o cUrl para postar dados em uma URL – Dica PHP

Publicado em Guia Nerd, Hacker, PHP agosto 25th, 2009 por: Lucas – 4 Commentarios

Esta classe serve para enviar dados via post para uma url. Ela utiliza o cUrl, portanto para utilizá-la verifique se seu host libera o uso da mesma para url´s externas .xD

A classe:

/**
 * Classe  para envio de dados via post
 * @author Lucas Nishimura
 */
class Post2Url {

	private $url = "";
	private $cUrl;
	private $reponse = "";
	private $timeout = 5;
	private $params = array();

	function __construct($url) {
		$this->setUrl ( $url );
		$this->initCurl();
	}

	public function getTimeout() {
		return $this->timeout;
	}

	public function setTimeout($timeout) {
		$this->timeout = $timeout;
	}

	private function initCurl() {
		$this->setCUrl ( curl_init () );
		curl_setopt ( $this->getCUrl (), CURLOPT_URL, $this->getUrl () );
		curl_setopt ( $this->getCUrl (), CURLOPT_RETURNTRANSFER, 1 );
		curl_setopt ( $this->getCUrl (), CURLOPT_CONNECTTIMEOUT, $this->getTimeout () );
	}

	public function getParams() {
		return $this->params;
	}

	public function addParam($paramName,$ParamValue){
		$this->params[$paramName] = $ParamValue;
	}

	public function sendData(){
		curl_setopt($this->getCUrl(), CURLOPT_POSTFIELDS, $this->params);
		return curl_exec($this->getCUrl());
	}

	public function getCUrl() {
		return $this->cUrl;
	}

	public function getReponse() {
		return $this->reponse;
	}

	public function getUrl() {
		return $this->url;
	}

	public function setCUrl($cUrl) {
		$this->cUrl = $cUrl;
	}

	public function setReponse($reponse) {
		$this->reponse = $reponse;
	}

	public function setUrl($url) {
		$this->url = $url;
	}

}

Um exemplo de como utilizar:

 //Include da classe
require_once 'Post2Url.php';
//Instância um novo objeto
$teste = new Post2Url("http://www.nishisan.com.br/code/testedump.php");
 //Adiciona o parâmetro login com valor lucas
$teste->addParam("login","lucas");
 //Adiciona o parâmetro pass com valor teste
$teste->addParam("pass","teste");
//Envia os dados xD
echo $teste->sendData();

O Caminho do exemplo acima existe e pode ser usado para testes ele retorna um dump do que você enviar para o servidor.Caso tenham dúvidas comentem.

Instalando Apache + Php +Mysql + phpMyadmin – php;)

Publicado em Guia Nerd, PHP agosto 19th, 2009 por: Lucas – 9 Commentarios

Tutorial Apache PHP MYSQLEu nunca gostei muito de coisas prontas( miojo, cup noodles,etc). Com o xampp não foi diferente por isso criei este screencast,nele vou mostrar para vocês como configurar um ambiente de desenvolvimento com o apache (2.2), php(5.3.0),mysql(5.1) e phpMyadmin sem utilizar pacotes prontos.

Do que a gente precisa ?!:

  • Conhecimento básico de informática.
  • Wndows ( qualquer um desde que seja 32bits,pode ser 64bits mas vocês vão ter que baixar os pacotes 64bits).
  • Espaço em disco ( 300Mb, to chutando alto o mysql é o mais gordinho).

Onde arrumo tudo isso !? :

Se precisarem dos pacotes 64bits Utilizem estes links :

O que vamos fazer neste screencast ?

  1. Instalar o Apache
  2. Instalar o php.
  3. Instalar o Mysql.
  4. Configurar senha para o usuário root do mysql.
  5. Instalar e configurar o phpMyAdmin.

O Video: xD (Se ficar pequeno deixem em tela cheia )

Comentem !!! ;)