URL Amigável – PHP e arquivo .htaccess

5 Comments

Simples mas bem eficiente, exemplo pratico de como usar url amigável em seu site!!…..

Crie um arquivo “.hatccess” no diretório raiz de seu site!.


<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php
</IfModule>

Toda e qualquer URL digitada, será direcionada para o seu arquivo “index.php”. Então agora, é só você tratar os parâmetros.

Se você usa uma URL do tipo:

www.site.com.br/index.php?pag=catalogo&id=1

Você pode deixar ela amigável:

www.site.com.br/catalogo/1

Para você pegar esses parâmentros da url amigável, pode se usar expressões regulares. No inicio de seu arquivo “index.php” coloque o código:


$aux = substr( $_SERVER['REQUEST_URI'], strlen('/'));
if( substr( $aux, -1) == '/'){
 $aux=substr( $aux, 0, -1);
}
$urlARRAY___ =explode( '/', $aux);

O que acontece aqui ?, Você está pegando sua url e separando dentro de um array, pela string de separaçao “/” (barra).

Se tiver (catalogo/1) então ele separa, “catalogo” e “1“, porque a / (barra) está definida como separador.

A sua url é: www.site.com.br/catalogo/1 . Então por causa do htaccess, ele será direcionado para o arquivo “index.php” e depois a url será recortada levando em consideração a / (barra) como separador:

$urlARRAY___[1] vai receber o valor “catalogo”

$urlARRAY___[2] vai receber o valor “1″

Pronto feito isso! é só vc trabalhar com os seus parâmentro…

Uma observação importante:

Usando esse exemplo de URL, você deve chamar arquivos de imagens, css, video, flash etc..com o caminho completo:

Se antes você usava:


<link rel="stylesheet" type="text/css" media="all" href="css/stylo.css" />

Agora você deve usar:


<link rel="stylesheet" type="text/css" media="all" href="http://www.site.com.br/css/stylo.css" />

Por causa do arquivo .htaccess em ação, você precisa arrumar esses caminhos para sua aplicação achar os arquivos corretamente.

Expressões Regulares (compatíveis com o padrão POSIX) parte 1

2 Comments

Vamos falar um pouco sobre, expressões regulares no php.

São usadas para manipulações complexas de strings no PHP.

As funções suportas são:

  • ereg()
  • ereg_replace()
  • eregi()
  • eregi_replace()
  • split()
  • spliti()

Não precisa de nenhuma biblioteca externa. PHP usa expressões regulares compatíveis com o padrão POSIX.

Vou dividir esse artigo, em pequenas partes, nessa primeira vamos falar sobre 1 função:

(ereg()). Mas antes, alguns conceitos básicos.

Padrões individuais

.

Casa qualquer caractere, o ponto é tratado como um literal. Por exemplo.
a.c casa “abc” e assim por diante.

[]

Lista de caracteres. Casa uma ocorrência de qualquer caractere contido na lista.

Por exemplo. [abc] casa “a”,”b” ou “c”.

Podemos definir intervalos de caracteres: [a-z] casa qualquer caractere de “a” a ”z”,  e [0123456789] é igual a [0-9].

[^ ]

Lista negada de caracteres. Casa uma ocorrência de qualquer caractere não contido na lista. Por exemplo. [^abc] casa qualquer caractere que não seja “a”, “b” ou “c”, [^a-z] casa qualquer caractere que não esteja em caixa baixa.

Vamos à função:

ereg() – Casando expressões regulares.

Descrição:

ereg(string expressão, string variável, [array registros])

Verifica se a ‘variável’ casa com a expressão regular definida em “expressão” em modo (casa sensitive).
So for passado o terceiro parâmetro “registros”, a execução guardara os elementos resultantes na matriz “registros”.

Exemplo 1:


<?php
 //data no padrão ISO
 $data = "2010-04-18";
 ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $data, $registros);
echo $registros[3]."/".$registros[2]."/".$registros[1];
?>

Resultado na tela: 18/04/2010

Exemplo 2:


<?php
 $data = "18/04/2010";
 ereg ("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})", $data, $registros);
 echo $registros[1]."-".$registros[2]."-".$registros[3];
?>

Resultado na tela: 2010-04-18

Você pode usar essa função para validar imagens que vem de um formulário.

Exemplo 3:

Temos um formulário simples, apontando para “acao.php” onde, vai pegar os dados do formulário com o método “post”.

gravar.php


<form name="form" id="form" method="post" action="acao.php?acao=gravar" enctype="multipart/form-data">
 Arquivo:
<input type="file" name="img" id="img"><br>
 <input id="limpar" type="reset" id="Entrar" value="limpar">
 <input id="gravar" type="submit" id="gravar" value="gravar">
</form>

acao.php


<?php
 if($_GET['acao'] == "gravar"):
 //PEGANDO A IMAGEM

 $string = $_FILES['img']['name'];

 ereg ("(.*)\.([^.]+)$", $string, $partes);

 echo "nome da imagem: ".$partes[1];
 echo "<br>";
 if($partes[2] == "jpg")echo "imagem do tipo jpg";
 if($partes[2] == "jpeg")echo "imagem do tipo jpeg";
 if($partes[2] == "png")echo "imagem do tipo png";
 if($partes[2] == "gif")echo "imagem do tipo gif";
 if($partes[2] == "bmp")echo "imagem do tipo bmp";
 endif;
?>

Ele pega a string , e separa as partes, baseando no caractere “.” ponto.
Exe:

“$string = imagem.jpg”
ereg ("(.*)\.([^.]+)$", $string, $partes);
$partes[1] = imagem
$partes[2] = jpg

Na próxima parte do artigo, vou explicar mais detalhadamente esse ultimo exemplo e colocar mais alguns. E vou falar das outras funções também.

Você pode ler mais: http://br.php.net/ereg

Valeu!