Arquivo da tag: PHP

Como fazer URLs amigaveis com .htaccess e php

Para quem não sabe o que é URL amigável vou explicar através de exemplo para evitar dúvidas.

URL Convencional: http://www.exemplodominio.com.br/noticia.php?id=1237
URL Amigável: http://www.exemplodominio.com.br/noticia/1237/

Viu a diferença? Além da vantagem de ficar mais elegante, facilita bastante a indexação dos mecanismos de buscas. Mas como fazer o controle de arquivos e identificadores? Então vamos aos códigos.

Primeiro você deve editar ou criar um arquivo .htaccess na raiz do seu site e inserir o código abaixo.

1
2
3
4
5
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(!.(\.gif|\.jpg|\.png|\.css|\.js|\.txt|\.php|\.htm|\.html)|.+[^/])$ /$1/ [L]
RewriteRule ^([^-]+)/$ /funcao.php?frase=$1&%{QUERY_STRING} [L]

A primeira linha linha é para ativar o módulo. A segunda e terceira linha é para ignorar arquivos e diretorios respectivamente. Na quarta linha ignora alguns tipos de arquivos. E finalmente na quinta linha, joga a string para um arquivo php qualquer, neste caso funcao.php.

1
2
3
4
5
$geturl = explode('/', $_SERVER['REQUEST_URI']);
if ($geturl[1] == 'noticia') {
    $id = $geturl[2];
    include noticia.php;
}

Interpretando rapidamente o código, a linha inicial captura a variavel gerada pela URL e usa a função explode para separar as palavras da URL.

Em seguida eu faço uma condicional IF para verificar se é noticia e setar o ID da mesma. Você pode incrementar como quiser o código e ter quantas palavras desejar na URL. Basta ter um pouco de criatividade.

Lembre-se, para funcionar o módulo apache Rewrite deve estar ativo no servidor Apache. Para maiores informações, procure a empresa de hospedagem do seu site.

PHP: Manipular variável com uma data entre formato brasileiro / internacional

Esta é uma função que converte a data no formato brasileiro (ex: 25/02/2009) para o formato internacional para banco de dados (ex: 2009-02-25) ou vice-versa. É possivel tambem escolher entre os separadores da data entre hifen ou barra.

Confira no código abaixo:

1
2
3
4
5
6
7
8
function formatadata($data, $tipo = 1) {
$data = str_replace('-', '/', $data);
$dividir = explode("/", $data);
$parte1 = $dividir[0]; $parte2 = $dividir[1]; $parte3 = $dividir[2];
$data = "$parte3-$parte2-$parte1";
if ($tipo == 1) $data = str_replace('-', '/', $data);
return $data;
}

bom… o uso é bem facil, vamos a um exemplo prático:

1
2
$data = '12/01/2008';
echo formatadata($data, 2);

o resultado seria:

1
2008-01-12

Bom, analisando a função é simples ver o que ela faz. Primeiramente ela pega a data e separa em três partes, e depois inverte a ordem das mesmas. O segundo paremetro da função define qual o separador da data, 1 para barra ou 2 para o hífen.

Este post foi especialmente para o bisonho do Hugo, meu colega noob da faculdade que desde que conheceu o PHP apaixonou e tenta domestica-lo desde então. Só tenta, ok?

PHP: Sorteio da mega-sena

O código abaixo sorteia os seis números da mega-sena e ordena os mesmos se você desejar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function megasena($ordena = 0){
    $sorteio = array();
    for ($i=1; $i<7; $i++) {
        for ($a=1;;$a++) {
        $bola = rand(1,60);
        if (in_array($bola, $sorteio) === FALSE) break;
        }
    $sorteio[$i] = $bola;
    }
if ($ordena == 1) asort($sorteio);
foreach($sorteio as $numeros)  echo $numeros . "<br />";
echo "<hr/>";
}

megasena(1); // Sorteia a os 6 números da mega-sena, se passar 1 como parametro, ele ordena as bolas.
// use apenas o comando a seguir para apenas sortear os números sem ordenar -> megasena();

Bom, código bem tranqüilo e fácil, estou postando para galera da faculdade. Como sempre, não precisa agradecer, eu sou bonzinho mesmo.

PHP: Função para procurar várias palavras em uma string

Bom, deu pra entender? ou entendeu sem dar? ;)

O meu problema era o seguinte, tenho um sistema de cadastro público mas alguns engraçadinhos gostavam de postar coisas bobas do tipo odeio fulano, ciclano é chato, etc. Então tinha que filtrar essa string, so que a função do PHP strpos só nos dá a opção de encontrar apenas uma palavra. Solução? Criei uma array, depurei chegando cada uma e pronto, se encontrar umas das palavras da array ele me retorna 1, não encontrou retorna 0.

Bom, a função esta abaixo para quem quiser:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Função para procura várias palavras em uma string
function procpalavras ($frase, $palavras, $resultado = 0) {
      foreach ( $palavras as $key => $value ) {
      $pos = strpos($frase, $value);
      if ($pos !== false) { $resultado = 1; break; }
      }
  return $resultado;
}

// Exemplo 1 - Nenhuma palavra encontrada, retorna zero
$frase = "eu tenho uma galinha que se chamava merilu";
$palavras = array ("coelho","cavalo","formiga","cachorro","gato");
echo "Resultado: " . procpalavras($frase, $palavras) . "<br />";

// Exemplo 2 - Uma ou mais palavra encontrada, retorna um
$frase = "eu tenho um coelho que se chamava zé";
$palavras = array ("coelho","cavalo","formiga","cachorro","gato");
echo "Resultado: " . procpalavras($frase, $palavras) . "<br />";

Gostou? Comenta… Não gostou? Comenta também…

Instalando WampServer (Apache 2, PHP5, Mysql)

image_menu_wamp.gif Não sei se todos sabem, mas faço Sistemas de Informação na Facomp. Estou no 6º periodo e cursando a matéria Tecnologias de Internet, na qual serão apresentadas duas tecnologias ja bastantes conhecidas por mim: Php, Mysql. Contudo grande parte da sala não tem conhecimento sobre elas, então resolvi criar um passo-a-passo da instalação do WampServer, um instalador que reune os seguintes softwares:

  • Apache 2.2.6
  • PHP 5.2.5 + PECL
  • MySQL 5.0.45
  • Phpmyadmin
  • SQLitemanager

… a versão que utilizei foi a atual (CURRENT), WampServer 2.0 (November 21 2007).

1º passo – Você deve fazer download do software em:
http://www.wampserver.com/dl.php

2º passo – execute o arquivo que você baixou, ele vai perguntar se você deseja continuar a instalação, clique em SIM.

3º passo
– será exibido a tela de apresentação, clique em NEXT, logo apos leia o Termos de Uso e clique novamente em NEXT.

4º passo – escolha onde será instalado o software, é altamente recomendavel deixar o c:\wamp como padrão, pois nomes com espaços ou maiores que 8 digitos poderão ser problemas no futuro, na hora de configuração dos servidores. ahh.. clique em NEXT, duas vezes.

5º passo – Adivinha? Sim, aperte INSTALL.

6º passo
– Você deve informar o programa, qual o seu navegador padrão. Se você deseja utilizar o Internet Explorer 7, você deve ir no caminho C:\Arquivos de programas\Internet Explorer e escolher o arquivo iexplore.exe, mas caso você seja mais esperto e já possui o Firefox em seu computador, escolha o caminho C:\Arquivos de programas\Mozilla Firefox e selecione o arquivo firefox.exe … depois de escolher uma dessas opções, clique em OK.

7º passo – Você deve informar o servidor SMTP (servidor de e-mail), mas como estamos instalando para fins educativos inicialmente deixaremos esta opção como padrão, apenas clique em NEXT.

8º passo – Instalação concluida! Clique em FINISH para executar o WampServer.

9º passo – O WS esta rodando em seu sistema, para utiliza-lo você deverá encontrar um icone (como este da figura no inicio do post) ao lado do seu relógio (do Windows), clique sobre o botão direito, vá até LANGUAGE e selecione PORTUGUES.

10º passo – Agora clique uma vez com o botão esquerdo sobre o mesmo icone e verá todas as opções do programa, como parar, reiniciar e iniciar os serviços (php, mysql, apache).

Os serviços já estão ativos no seu sistema. Por padrão você tem as seguintes configurações:

Acesso ao servidor web local se dará pelo http://localhost/
Diretório dos seus arquivos públicos será o C:\wamp\www
Gerenciador Mysql – Phpmyadmin (recomendo!): http://localhost/phpmyadmin/
Gerenciador Mysql – SQLiteManager: http://localhost/phpmyadmin/
Informações sobre o seu servidor: http://localhost/?phpinfo=1

Bom galerinha, basicamente é isso. Qualquer dúvida que tiverem, so postar ae nos comentários que tentarei ajudar a todos, grande abraço! =)