[PHP] Como detectar o tipo de navegador

PHP é uma linguagem de programação web muito versátil que permite  um servidor web servir conteúdos dinâmicos aos visitantes. PHP pode identificar e detectar  o tipo e a versão do navegador que o visitante está a utilizar.

A variável global do PHP $_SERVER fornece várias informações sobre o servidor e o ambiente de execução,  incluindo elemento HTTP_USER_AGENT que contem informações sobre o navegador, que podem ser usadas para identificar o navegador que está sendo usando para aceder a uma determinada página. Um típico User Agent, parece o seguinte:

Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0

Cada string de utilizador tem um identificador único que permite mostra qual navegador está fazendo requisitando uma página web. Assim, é possível detectar e destacar um navegador específico, comparando o valor retornado pela variável $_SERVER["HTTP_USER_AGENT"] por User Agent de um navegador específico.

Aqui deixo um exemplo, que pode ser utilizado em PHP para detectar e retornar o tipo de navegador.


<?php
$user_agent = $_SERVER['HTTP_USER_AGENT'];

if (preg_match('/MSIE/i', $user_agent)) {
echo "Este navegador é: Internet Explorer";
} else {
echo "Este navegador não é: Internet Explorer";
}
?>

O script acima irá  apenas detectar se o visitante está a utilizar o navegador IE (Internet Explorer).  Para que o código seja expandido, ou seja, para que seja necessário detectar navegadores adicionais, podemos adicionar o bloco “else if”. Para verificar, basta substituir o MSIE pelo nome de user agent de outros navegadores. Alguns navegadores navegadores populares podem ser detectados com os seguintes textos:

Internet Explorer: MSIE
Mozilla Firefox: Firefox
Google Chrome: Chrome
Apple Safari: Safari
Opera: Opera
Netscape Navigator: Netscape
Flock: Flock
Lynx: Lynx

.

Categories: PHP Tags: ,

Enviando E-mail com o PHPMailer

O PHPMaileré uma biblioteca de classes desenvolvida em PHP, cuja finalidade é agilizar o processo de criação e envio de E-mails.

Neste post irei descrever de forma breve como implementar um formulário de contacto básico utilizando a classe PHPMailer.

Para o nosso exemplo, criaremos um formulário em HTML com os seguintes campos: Nome, E-mail e Mensagem.


<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="UTF-8" />
<title>Enviando E-mail com PHPMailer</title>
</head>
<body>
<form method="post">
<p><label for="nome">Nome:</label> <input type="text" name="nome" /></p>
<p><label for="email">E-mail:</label> <input type="text" name="email" /></p>
<p><label for="assunto">Assunto:</label> <input type="text" name="assunto" /></p>
<p><label for="mensagem">Mensagem:</label> <textarea name="mensagem"></textarea></p>

<p><input type="submit" name="enviar" value="Enviar Mensagem" /></p>
</form>
</body>
</html>

Uma vez criado o fomulário, adicionamos o codigo PHP necessário para processar os dados e envia-los por E-mail usando um objecto da classe PHPMailer.

Para podermos utilizar o PHPMailer, teremos de baixar (link no final do post) o pacote de classes e descompacta-lo na raiz da página em que estamos a programar o formulário. No exemplo a seguir, o pacote foi descompactado dentro da pasta “classes”.

Nota: O código abaixo deverá ser inserida logo após a tag de abertura do corpo HTML (<body>).


<?php
$isEnviar = (isset($_POST['enviar']));
$isEnviado = false;
$strErro = "";

if ($isEnviar)
{
require_once('classes/PHPMailer_5.2.1/class.phpmailer.php');

$msgPara = "angodev@gmail.com";
$nome = $_POST['nome'];
$emailDe = $_POST['email'];
$assunto = "[Utilizando PHPMailer] - " . $_POST['assunto'];
$mensagem = $_POST['mensagem'];

$corpo = "Acabou de receber uma mensagem enviada utilizando o PHPMailer.\n\nNome: $nome \n\nE-mail: $emailDe\n\nMensagem:\n $mensagem";

try {
$email = new PHPMailer();

$email->CharSet = 'UTF-8';        // Suporte a caracteres especiais...
$email->IsMail();
$email->AddAddress($msgPara);    // Endereço de E-mail do Remetente
$email->Subject = $assunto;        // Assunto da Mensagem
$email->From = $emailDe;        // Endereço de E-mail do Destinatário
$email->FromName = $nome;        // Nome do Destinatário
$email->Body = $corpo;

$isEnviado = $email->Send();

if (!$isEnviado){
$strResultado = "Ocorreu um erro: " . $email->ErrorInfo;
} else {
$strResultado = "Mensagem enviada com sucesso!".
}
} catch (phpmailerException $ex){
$strResultado  = $strResultado = "Ocorreu um erro: " . $ex->errorMessage();
}
}
?>

Vou tentar explicar de forma breve e por partes o código acima.

Inicializamos algumas variáveis que serão utilizadas para determinar se o formulário foi submetido ou não e mostrar uma mensagem informando se o email foi enviado ou não.


$isEnviar = (isset($_POST['enviar']));
$isEnviado = false;
$strErro = "";

Verificamos se o formulário foi submetido, incluímos a classe PHPMailer e criamos a instância da mesma (classe PHPMailer):


if ($isEnviar)
{
require_once('classes/PHPMailer_5.2.1/class.phpmailer.php');
$email = new PHPMailer();

// ...

Armazenados as informações enviadas através do formulário nas variáveis que utilizaremos para configurar o corpo da mensagem e algumas propriedades do objecto PHPMailer:


$msgPara = "angodev@gmail.com";
$nome = $_POST['nome'];
$emailDe = $_POST['email'];
$assunto = "[Utilizando PHPMailer] - " . $_POST['assunto'];
$mensagem = $_POST['mensagem'];

$corpo = "Acabou de receber uma mensagem enviada utilizando o PHPMailer.\n\nNome: $nome \n\nE-mail:  $emailDe\n\nMensagem:\n $mensagem";

Utilizamos o bloco “try-catch” para instanciar o objecto PHPMailer e realizar o envio do E-mail , de forma que possa controlar qualquer erro inesperado que venha acontecer.

Dentro do bloco configuramos as propriedades da mensagem.


try {
$email = new PHPMailer();

$email->CharSet = 'UTF-8';        // Suporte a caracteres especiais...
$email->IsMail();
$email->AddAddress($msgPara);    // Endereço de E-mail do Remetente
$email->Subject = $assunto;        // Assunto da Mensagem
$email->From = $emailDe;        // Endereço de E-mail do Destinatário
$email->FromName = $nome;        // Nome do Destinatário
$email->Body = $corpo;

$isEnviado = $email->Send();

if (!$isEnviado){
$strResultado = "Ocorreu um erro: " . $email->ErrorInfo;
} else {
$strResultado = "Mensagem enviada com sucesso!".
}
} catch (phpmailerException $ex){
$strResultado  = $strResultado = "Ocorreu um erro: " . $ex->errorMessage();
}

O download a Classe pode ser feita aqui: http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list

O Código completo pode ser encontrado Aqui: http://pastebin.com/wa8KtSHt

Categories: PHP Tags: , , ,

Google lança serviço de armazenamento na nuvem

Google Drive é  novo serviço da Google que lhe permite enviar arquivos (fotos, vídeos, documentos, apresentações… ) para a nuvem e acessá-los a partir de vários dispositivos, como computadores MAC ou PC, tabletes e telefones moveis Android. Além disso, segundo a empresa numa nota de imprensa, estão a trabalhar no desenvolvimento de uma aplicação para dispositivos iOS, que deverá estar na lista nas próximas semanas.

Google DriveO serviço oferece 5 GB de armazenamento gratuito que pode se ampliando para 25 GB (2,49 USD), 100 GB (4,99 USD) ou1 TB (49,99 USD) mediante pagamento mensal.

Drive deverá concorrer com serviços como DropBox e SkyDrive.

Por outro lado, Google Docs está integrado com Google Drive, o que permite trabalhar em colaboração com outras pessoas em tempo real em documentos, folhas de cálculos e apresentações, uma opção que já existe nos outros serviços como SkyDrive. Além disso, a Google, aproveitando-se da sua larga experiência em matérias de busca, irá incluir no Drive um motor de buscas avançando capaz de reconhecer imagens incluindo caracteres de um texto escaneado.

A ferramenta está preparada, como não poderia ser de outro jeito, para interagir com outros serviços como GMail e Google+.

Google Drive

CodeIgniter: Como remover “index.php” da URL

Se estás a utilizar o CodeIgniter deves ter percebido que por padrão o “index.php” e incluído da URL, ficando algo como:

http://meu_projecto_codeigniter.com/index.php/controlador/funcao

Mas com muita facilidade, o “index.php” pode ser removido da URL do CodeIgniter para que o link acima possa parecer como abaixo:

http://meu_projecto_codeigniter.com/controlador/funcao

Para tal, basta seguir os passos que se seguem:

1º Abrir o ficheiro “config.php” que se enconntra na pasta “system/application/config” and substituir $config['index_page'] = “index.php” por $config['index_page'] = ” “

2º Crie um ficheiro “.htaccess” na pasta root do seu projecto (onde reside o pasta system); abre o ficheiro utilizando o seu editor preferido  e escreva (não se esqueça de salvar ;-) ) o seguinte código:


RewriteEngine on
RewriteCond $1 !^(index\.php|css|js|img|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

3º Em alguns casos a configuração padrão para uri_protocol não funciona correctamente. Para corrigir este problema substitua simplesmente $config['uri_protocol'] = “AUTO” por $config['uri_protocol'] = “REQUEST_URI” que se encontra no arquivo /system/application/config/config.php

 

Categories: CodeIgniter, Dicas, PHP Tags: ,

Programação Orientada a Objectos – Parte 2

Dando prosseguimento a nossa série de artigos sobre POO, hoje vamos falar um pouco sobre as classes e interfaces.

As Classes e Estruturas

Como temos vindo a referir, nas linguagens orientadas a objectos, existe o conceito de classes. Quando falamos de classes, podemos também estende-las a estruturas. De facto, para os programadores de C++ classe não é mais do que uma estrutura que se comporta de forma diferente.

Uma classe é um pedaço de código onde podemos definir um conjunto de dados e ao mesmo tempo alguns métodos (funções ou procedimentos) que nos permitirão aceder esses dados.

Quando definimos uma classe, o que estamos a fazer é criar um modelo, a partir do qual podemos criar objectos na memória. Portanto, a classe é o modelo com o qual podemos criar novos objectos. Para criar algo “palpável” a partir de uma classe, devemos criar (instanciar) na memória um novo objecto do tipo da classe, ou seja, instanciámos um novo objecto da classe. A partir deste momento teremos algo real com que podemos trabalhar: uma instância da classe, quer dizer que, a definição feita na classe converteu-se em objecto que podemos acessa-lo e começar a utiliza-lo, dando novos valores aos dados que o mesmo manipula e utilizando as funções que nos permitem manipular tais dados.

Ler mais…

Categories: POO Tags: , , ,

Programação Orientada a Objectos – Parte 1

Introdução

A programação orientada a objectos (POO) permite-nos escrever códigos menos propenso à falhas além de nos permitir a reutilização do código de maneira mais conveniente.

Nesta série de artigos sobre POO veremos as características da Programação Orientada a Objectos (POO) utilizando os conceitos das linguagens .NET e como utilizar os diferentes elementos que nos permitirão criar código que seja mais fácil de escrever e gerir (manter).

A Programação Orientada a Objectos

Em toda programação existe uma secção denominada Caderno de Principiantes onde se estuda o algoritmo e estrutura de dados a nível de iniciação. Está planeado que se estude o nível teórico da programação orientado a objectos, principalmente para aqueles que não têm noção alguma sobre a POO .

Os Pilares da POO

Recordemos são três as principais características de uma linguagem orientada a objectos, ou seja, uma linguagem é considerada orientada a objectos se é capaz de prover estas três características:

Ler mais…