Tag: php

Você conhece o Symfony (PHP) Framework?

O Symfony é uma framework PHP que tem como foco a aceleração do desenvolvimento e manutenção de aplicações web, e a substituição de códigos corriqueiros. São poucos os pre-requisitos para sua instalação: Linux, FreeBSD, MacOS ou Windows e um servidor PHP 5. A versão atual (1.4) só suporta PHP 5.2.4 ou superior, mas versões anteriores podem rodar em servidores PHP 5.0 e 5.1. Infelizmente, como várias outras frameworks modernas, o Symfony não dá mais suporte ao PHP4, mas por outro lado, é compatível com quase todos os bancos de dados relacionais, como o MySQL, Postgresql etc.


A idéia por trás dele é bem parecida com a do Ruby on Rails: facilidade de uso, design simples e código legível. Com ela é possível desenvolver uma aplicação completa com bastante facilidade. O desenvolvedor pode se focar na lógica da aplicação sem ter que perder tempo editando arquivos XML “infinitos”. Podem ser desenvolvidas aplicação porte pequeno a “enterprise”, dando ao desenvolvedor total controle sobre configuração e customização. O Symfony usa arquitetura MVC (Model-View-Controller). Como se não bastasse, existe uma comunidade bastante ativa por trás disso tudo.

Entre os recursos oferecidos pela framework, estão:

  • Internacionalização
  • Desenvolvimento de templates por designers sem conhecimento do framework
  • Formulários gerados com validações automáticas
  • URL’s amigáveis
  • Facilidade para implemtentar Ajax
  • Ferramentas para geração de código
  • Framework para teste automatizado embutido
  • Ferramentas para log, dando aos administradores informações completas sobre as atividades da aplicação

O Symfony tem uma curva de aprendizagem um pouco maior que outras frameworks, e o tutorial “Getting Started” é uma boa forma de começar. Também é disponibilizada uma aplicação de exemplo chamada “Symfony sandbox“, que te dá uma idéia prática de como funciona. Basta baixar, descompactar, colocar no seu servidor e pronto. A aplicação vem configurada para utilizar o banco de dados SQLite, mas é bastante simples configurar para outro SGBD.


Passar uma string pela URL com PHP

As vezes você precisa passar uma frase com acentos, espaços e pontuação, mas não pode simplesmente colocar esses caracteres na URL, porque pode dar alguns erros em alguns navegadores (browsers).

No PHP existe uma função que faz essa conversão. Chama-se urlencode. E você pode usar dessa forma:

<?php echo urlencode("Este é o texto que você quer converter!"); ?>

Ele vai retornar o seguinte:

Este+%C3%A9+o+texto+que+voc%C3%AA+quer+converter%21

Dessa forma você pode passar a string pela URL sem problemas.

Se você precisar fazer o contrário (converter o texto codificado para o texto normal), você pode utilizar a função urldecode. Assim:


PHP corrompe imagem ao forçar download

Você faz o download utilizando a função header do PHP e todos seus atributos. Quando o arquivo chega, vem corrompido. A coisa fica mais confusa ainda porque a maioria dos formatos de arquivo funciona corretamente, mas os arquivos de imagem chegam corrompidos.

Tive esse problema e gostaria de compartilhar a solução encontrada:

Enviei um arquivo qualquer e comparei o tamanho. Vi que estava diferente (3 bytes a mais). Enviei um arquivo de texto e percebi que depois que abria utilizando o script, o arquivo de texto estava com uma linha a mais no início.

Procurei por todo o script e não achei nada. Quando fui em uma das includes encontrei o erro. No final da include, depois que fechava o PHP (?>), tinha uma linha a mais.

Pronto. Removi a linha e tudo funcionou perfeitamente :).

Isso acontece porque antes do comando header não pode ter um byte sequer. Ela indica o cabeçalho do arquivo, então deve ser a primeira coisa a ser carregada, ou então dá erro.


Gerar código aletório com a função uniqid do PHP

Uniqid é uma função simples que gera um código aleatório, que pode ser usado para diferentes coisas, como códigos de confirmação, nomes de arquivo, senhas etc.

O código gerado é baseado no na hora do servidor em micro-segundos.

Exemplo de uso:

<?php
echo uniqid();
?>

Enviando arquivos com o PHP

Aqui vou mostrar um script básico para enviar arquivos utilizado o PHP. Funciona dessa forma:

Você envia o arquivo através de um formulário comum, utilizando um campo tipo “file”. Lembre-se na tag form você deve incluir o atributo enctype=”multipart/form-data”.

Depois que o arquivo é enviado (no exemplo abaixo o arquivo foi enviado para a própria página, mas você pode colocar a parte de HTML em uma página, e a parte de PHP em outra sem problemas), ele é movido para a pasta final com a função move_uploaded_files do PHP. Lembre-se que é necessário dar um chmod 777 no diretório que irá receber o arquivo.

No programa que utilizo (Filezilla) e na maioria dos programas de FTP, basta clicar com o botão direito na pasta  ou arquivo e ir em “Permissões” para mudar o CHMOD.

A variável $_FILES[“arquivo”][“tmp_name”] é o nome temporário do arquivo. É o nome que o servidor dá ao arquivo assim que o recebe. $_FILES[“arquivo”][“name”] é o nome original do arquivo.

Veja o exemplo abaixo:

<?php
### SCRIPT PARA UPLOAD DE ARQUIVOS ####
### DESENVOLVIDO POR: TIAGO PASSOS ####
### VOXTIAGO ARROBA GMAIL PONTO COM ###

if ($_FILES["arquivo"]["tmp_name"]) {

   // ESSE EH O NOME TEMPORARIO DO ARQUIVO
   $tmp_name = $_FILES["arquivo"]["tmp_name"];

   // INFORME O DIRETORIO PARA ONDE O ARQUIVO SERA ENVIADO
   // LEMBRE-SE QUE É NECESSÁRIO DAR CHMOD 777 NESSE DIRETÓRIO
   $diretorio = "upload/";

   $nome_do_arquivo = $diretorio . $_FILES["arquivo"]["name"];

   if (move_uploaded_file($tmp_name, $nome_do_arquivo)) {

      ?><script type="text/javascript">alert("Arquivo enviado");</script><?php

   } else {

      ?><script type="text/javascript">alert("Arquivo não enviado");</script><?php

   }

}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Enviar arquivos com PHP</title>
</head>
<body>

<form id="envia_arquivo" method="post" enctype="multipart/form-data">
Foto:<br />
<input type="file" name="arquivo" id="arquivo" size="40" /><br />
<input type="submit" value="Enviar!" />
</form>

</body>
</html>

Função em PHP que converte de minúscula para maiúscula (e vice-versa) sem perder acentos

Essa função resolve o problema da função nativa do PHP, que remove os acentos das palavras.

<?php

// $term = a string propriamente dita
// $tp = tipo da conversão: 1 para maiúsculas e 0 para minúsculas

function convertem($term, $tp) {

if ($tp == "1")
$palavra = strtr(strtoupper($term),"àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ","ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß");

elseif ($tp == "0")
$palavra = strtr(strtolower($term),"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß","àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ");

return $palavra;

}

// Exemplo de Utilização - Maiúscula
$exemplo1 = "notícias";
echo convertem($exemplo1, 1);

// Exemplo de Utilização - Minúscula
$exemplo2 = "NOTÍCIAS";
echo convertem($exemplo2, 0);

?>

Conectar ao PostgreSQL com o PHP e escolher um banco de dados

Diferente do MySQL, todas as informações são passadas em uma única string. Substitua servidor, banco_de_dados, usuario e senha por seus dados.
Veja como fazer:

$conexao = pg_connect("host=servidor dbname=banco_de_dados user=usuario password=senha") 
or die (pg_last_error());

URL’s Amigáveis com o mod_rewrite e PHP

Se você não sabe do que se trata, URL’s Amigáveis são usadas basicamente para deixar o endereço de uma página mais atraente, e também para melhorar o posicionamento do site nas buscas, já que os sistemas de busca utilizam as palavras contindas na URL para facilitar a busca.

Exemplo de URL Amigável:
http://tiagopassos.com/noticias/37/Carvao_alimenta_boa_parte_da_nuvem_da_Internet_diz_Greenpeace.htm

Funciona da seguinte forma (considerando que seu servidor suporta o mod_rewrite. Pergunta ao ser servidor de hospedagem se o mod_rewrite está habilitado no Apache):

Crie um arquivo chamado .htaccess (sem nome. Ele tem só a extensão .htaccess. Cuidado para não criar .htaccess.txt) e dentro dele coloque o seguinte:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?cod=$1

Envie o arquivo para a raiz do servidor ou para o diretório.

A partir de agora, se não exisitir um arquivo ou diretório no endereço que você digitar, ele enviará para a index.php. Na index.php você irá receber esses dados através da variavel $_GET[“cod”].

Exemplo:

Se o site tiagopassos.com estiver com o mod_rewrite habilitado na raiz do diretório e você digitar o endereço http://tagopassos.com/index.php, ele vai entrar na index.php (considerando que o arquivo existe). Se você digitar http://tiagopassos.com/contato ele vai enviar a variável $_GET[“cod”] = “contato” para o index. A partir daí, através de “ifs” e “elses” você exibe o que quer exibir.


Enviando e-mails com o PHP

Enviar e-mails é um recurso importante, e eventualmente precisamos fazer isso. No PHP um e-mail pode ser enviado com a função mail. Abaixo vou demonstrar alguns exemplos de uso da função:

Exemplo 1 – E-mail simples (interessante para avisos ao webmaster):

<?php
mail('webmaster@meusite.com', 'Assunto do E-mail', 'Mensagem do E-mail');
?>

Exemplo 2 – E-mail com cabeçalhos

<?php
$para       = 'qualquer.email@gmail.com';
$assunto    = 'Assunto do E-mail';
$mensagem   = 'Mensagem do E-mail';
$cabecalhos = 'From: webmaster@meusite.com.br' . "\r\n" .
'Reply-To: webmaster@meusite.com.br' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($para, $assunto, $mensagem, $cabecalhos);
?>

Exemplo 3 – Email em HTML

<?php
// VÁRIOS E-MAILS
$para  = 'carlos@gmail.com,andre@gmail.com,'

// ASSUNTO
$assunto = 'Assunto do E-mail';

// MENSAGEM
$mensagem = '
<html>
<head>
<title>Aniversariantes de Abril</title>
</head>
<body>
<p>Esses são os aniversariantes de abril!</p>
<table>
<tr>
<th>Nome</th><th>Dia</th><th>Mês</th><th>Ano</th>
</tr>
<tr>
<td>João</td><td>3</td><td>Abril</td><td>1970</td>
</tr>
<tr>
<td>Sílvia</td><td>17</td><td>Abril</td><td>1973</td>
</tr>
</table>
</body>
</html>
';

// Para enviar um e-mail em HTML, o Content-type deve ser setado
$cabecalho  = 'MIME-Version: 1.0' . "\r\n";
$cabecalho .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Cabeçalhos adicionais
$cabecalho .= 'To: Antônio <antonio@gmail.com>, Maria <maria@gmail.com>' . "\r\n";
$cabecalho .= 'From: Lembrete de Aniversário <lembrete@meusite.com.br>' . "\r\n";
$cabecalho .= 'Cc: joana@gmail.com' . "\r\n"; // CÓPIA DO E-MAIL
$cabecalho .= 'Bcc: mariana@gmail.com' . "\r\n"; // CÓPIA OCULTA

// Enviando...
mail($para, $assunto, $mensagem, $cabecalho);
?>

Retirar espaços antes e depois de uma string usando o PHP

A função trim() retorna uma string com os espaços retirados do ínicio e do final de uma string.

Exemplo:

echo trim("   Teste da função trim    ");

  • Publicidade

  • Redes Sociais

    Facebook  Twitter
  • Estatísticas

    Page Views (desde março de 2010):

    Estatísticas detalhadas
  • Novidades por e-mail!

    Digite seu e-mail:


    Fique tranquilo. Seu e-mail não será usado para outros fins, e você poderá se descadastrar quando quizer.

    Eu!

    Tiago Passos
    Todo o conteúdo desse site esta licenciado sob a licença Creative Commons 3.0 (CC BY 3.0). Você pode copiar e modificar o conteúdo desde que cite o autor.
    iDream theme by Templates Next | Powered by WordPress