Portal Chamar Táxi

Workshop de PHP

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Estilos CSS diferentes a uma página com PHP e cookies



Fazemos uma página PHP onde o usuário pode escolher o estilo e o salvamos em uma cookie para memorizá-lo nos seguintes acessos.
Por Miguel Angel Alvarez - Tradução de JML





Apresentamos um workshop de PHP e cookies no qual vamos ilustrar com um exemplo o uso de Cookies em PHP. É um exemplo simples, porque PHP proporciona umas ferramentas para o controle de cookies muito simples de usar.

Neste workshop criaremos uma página que pode se configurar com distintos estilos CSS. O usuário é quem decide que aspecto deseja que tenha a página, por meio de um formulário. Logo, a página é capaz de lembrar, entre os distintos acessos que realize o usuário, o aspecto que havia escolhido para mostrar a web.

Antes de começar, vamos relembrar algumas coisas das cookies em PHP. As cookies são pequenas informações de texto que se podem armazenar no navegador do visitante, sempre que este tiver configurado o browser para aceitá-las. As cookies, portanto, só podem armazenar caracteres, porém ainda assim são de vital importância para lembrar estados, ou variáveis de uma visita a outra do usuário.

Se quisermos saber conceitualmente mais sobre as cookies temos um artigo específico para aprender: O que são as cookies



Se tivermos lido os artigos anteriores ou já soubermos algo sobre cookies e PHP não teremos problema em entender este workshop. Podemos então passar diretamente a ver o exemplo que vamos criar neste exercício de PHP. Porém antes, deixamos o link para que se possa ver em funcionamento e assim ter mais claro qual é o objetivo buscado.

O formulário HTML para selecionar o estilo:

<form action="taller-cookies-php.php" method="post">
Aqui você poderá selecionar o estilo que preferir na página:
<br>
<select name="estilo">
<option value="verde">Verde
<option value="rosa">Rosa
<option value="preto">Preto
</select>
<input type="submit" value="Atualizar o estilo">
</form>

É um formulário simples, com um select para escolher entre os distintos estilos css disponíveis para a página.

Receber o formulário e criar a cookie:

Se recebermos um valor do formulário teríamos que criar uma cookie para lembrar que estilo deseja o usuário para visualizar a página.

//Vejo se recebo dados do formulario
if(isset($_POST["estilo"])){
//é que estou recebendo um estilo novo, tenho que colocá-los nas cookies
$estilo = $_POST["estilo"];
//coloco o estilo em uma cookie
setcookie("estilo", $estilo, time() + (60 * 60 * 24 * 90));
}

Neste exemplo, salvaremos a cookie com o nome "estilo" e com o valor captado do formulário. Ainda assim, há que destacar que configuramos a cookie para que permaneça no computador do usuário por 90 dias.

Agora, se a página não tiver recebido por post o estilo com o que se deve mostrar, teremos que acessar ao array $_COOKIE para ver se está criada a correspondente "bolachinha" e saber o estilo que o visitante havia configurado em anteriores acessos.

}else{
//se não tiver recebido o estilo que deseja o usuário na página, vejo se há uma cookie criada
if (isset($_COOKIE["estilo"])){
//é que tenho a cookie
$estilo = $_COOKIE["estilo"];
}
}

Para acessar à cookie fazemos com $_COOKIE["estilo"].

Em qualquer caso, salvamos o estilo em uma variável global ao script PHP $estilo, que vamos utilizar para criar o link com a folha de estilos CSS desejada.

if (isset($estilo)){
echo '<link rel="STYLESHEET" type="text/css" href="' . $estilo . '.css">';
}

Se houver um estilo definido em $estilo, pois fazemos a inclusão do mesmo com a correspondente etiqueta HTML.

É muito simples o exemplo, como se pode ver. Só resta mostrar o código PHP completo:

<?
//Vejo se recebo dados do formulário
if(isset($_POST["estilo"])){
//é que estou recebendo um estilo novo, tenho que colocá-lo nas cookies
$estilo = $_POST["estilo"];
//coloco o estilo em uma cookie
setcookie("estilo", $estilo, time() + (60 * 60 * 24 * 90));
}else{
//se não recebi o estilo que deseja o usuário na página, vejo se há uma cookie criada
if (isset($_COOKIE["estilo"])){
//é que tenho a cookie
$estilo = $_COOKIE["estilo"];
}
}
?>
<html>
<head>
<title>Cookies em PHP</title>
<?
//vejo se tive um estilo definido, porque então tenho que carregar a correspondente folha de estilos
if (isset($estilo)){
echo '<link rel="STYLESHEET" type="text/css" href="' . $estilo . '.css">';
}
?>
</head>

<body>
Exemplo de uso de cookies em PHP para armazenar a folha de estilos css que queremos utilizar para definir o aspecto da página.
<p>
<form action="taller-cookies-php.php" method="post">
Aqui você poderá selecionar o estilo que preferir na página:
<br>
<select name="estilo">
<option value="verde">Verde
<option value="rosa">Rosa
<option value="preto">Preto
</select>
<input type="submit" value="Atualizar o estilo">
</form>

</body>
</html>

 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Canonizar as URL de um domínio com PHP, escolher utilizar ou não as www.




Como canonizar os nomes de domínios, para obrigar que sempre se visite um site com as 3w www…, fazendo redirecionamento com PHP.
Por Miguel Angel Alvarez - Tradução de JML




Recentemente se tornou conhecido que motores de buscas como Google penalizam web sites com conteúdos duplicado. Isto já falamos no manual de Posicionamento em buscadores, no artigo Sitie com conteúdos duplicado podem ser penalizados em Google.

Neste artigo comentamos vários conselhos para não ser penalizados por ter conteúdo duplicado em nosso site.

Um dos conselhos é que nosso site não se possa acessar através de URLs distintas, com ou sem os 3 w. Por exemplo:

http://www.meusitedeexemplo.com
http://meusitedeexemplo.com

Se ambos endereços tiverem o mesmo conteúdo, Google pode pensar que você está duplicando informação em seu domínio e pode cair a classificação em buscadores de seu website.

Criamos então um código em PHP que apresentamos neste artigo para canonizar os endereços URL de seu domínio (escolher qual preferimos que seja utilizado e indexado em Google, a URL com os 3w ou sem eles), criando um domínio principal e redirecionando as URLs dos domínios secundários ao principal. Neste caso preferimos que o domínio principal seja o que tem os 3w e que o acesso ao domínio sem os www se redirecione ao domínio com eles.

Na realidade o código é muito simples. Só há que conhecer algumas variáveis do array de variáveis superglobais $_SERVER, que contém informação sobre o servidor, a URL a que se está acessando, o domínio, etc.

Referência: Para saber mais das variáveis de $_SERVER em PHP podemos acessar a estas informações:
•Variáveis de sistema em PHP
•FAQ Variáveis $_SERVER em PHP
Vejamos o código PHP comentado deste artigo:

//pedaço de código para que sempre se visite o domínio com os 3w
if (substr($_SERVER["SERVER_NAME"],0,4) != "www."){
//se o domínio ao que tentamos acessar está sem os 3w
//o redireciono ao domínio com os 3w
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www." . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]);
}

Em nosso código fazemos o seguinte: Detectamos no nome do servidor ao que se acessa, ou seja, o nome do domínio da URL que estamos acessando. Se não começa por "www." é que não se está acessando ao domínio como queremos, ou seja, com os 3 w.

Nesse caso, simplesmente fazemos um redirecionamento 301 (movido permanentemente) ao endereço com os www. Para saber o servidor ao que estamos acessando utilizamos a variável $_SERVER["SERVER_NAME"] e para saber a página concreta a qual temos que dirigir dentro do domínio utilizamos a variável $_SERVER["REQUEST_URI"]).

Este script PHP serve para qualquer domínio onde o colocarmos e qualquer página desse domínio, pois está parametrizado através de $_SERVER tanto o nome do domínio como o nome da página ao qual redirecionar o navegador.

Com isto conseguiremos não ter duplicado o conteúdo da web em dois domínios distintos, com e sem os www, com o que nosso website PHP estará um pouco mais otimizado para buscadores.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Formato de números em PHP




Explicações e exemplos sobre formato de números em PHP. Aprendemos a formatar números em PHP com pontos entre os milhares e comas em decimais.
Por Miguel Angel Alvarez - Tradução de JML




Quando mostramos um número em uma página web podemos querer que tenha um formato específico. Por exemplo, que tenha só dois decimais, ou que utilize vírgulas -ou pontos- para separar decimais, assim como as unidades de milhar. Típicos formatos de número poderiam ser:

1.000.505,56
5003.60
5,000.00


Apresentar os números com um ou outro formato é simples, já que em PHP existe uma função específica para dar formato aos números, que dependendo dos parâmetros recebidos os formatará de uma maneira ou outra. Neste artigo vamos conhecer tal função, assim como suas possibilidades de configuração e ver vários exemplos.

Função number_format()

Realizaremos a formatação dos números com a função de PHP number_format(). Esta função recebe um, dois ou quatro parâmetros. Ou seja, temos estas restrições:
•Há um único parâmetro obrigado (o número que queremos formatar).
•O segundo parâmetro é opcional, tal como o terceiro e o quarto.
•Porém, se especificarmos o terceiro parâmetro, estamos obrigados a especificar também o quarto.
Vejamos com detalhe os parâmetros da função de formatação de números de PHP, com diversos exemplos.

Parâmetro 1, o número:
O primeiro parâmetro é o número a formatar. Tal como dissemos, embora seja óbvio, é um parâmetro sempre necessário.

$numero = 15200.67;
number_format($numero);
//devolve 15,201

Neste caso, a formatação do número nos dará o número sem decimais e com uma vírgula como separador de milhares. Este formato é o que se utiliza em inglês (as pessoas de fala inglesa separam os milhares com vírgula ao escrever os números), que certaente não servirá aos desenvolvedores que trabalham em português.

Cabe observer que a função number_format() realizou também um arredondamento dos decimais que não está mostrando. Podemos ver bem este arredondamento no seguinte exemplo:

$numero = 999999999.99;
number_format($numero);
//devolve 1,000,000,000

Parâmetro 2, os decimais:
Com o segundo parâmetro, que é opcional, indicamos o número de decimais que queremos que apareçam no número formatado.

$numero = 15200.67;
number_format($numero,2);
//devolve 15,201.67

Como vemos, neste caso se incorporaram os decimais ao formato do número. Utiliza vírgulas para separar os milhares e um ponto para separar as unidades de milhar. Como vemos, continua utilizando a notação inglesa para formatar números.

Outro exemplo, no qual podemos apreciar que sempre se faz um arredondamento do número, se os decimais a mostrar forem menos que os que tiverem o número original.

$numero = 1885200.89;
number_format($numero,1);
//devolve 1,885,200.9

Parâmetros 3 e 4, separadores de decimais e de unidades de milhar
Os últimos parâmetros, que devemos utilizar sempre juntos, servem para especificar os separadores que queremos utilizar para os decimais e as unidades de milhar. Se quisermos formatar os números com a notação portuguesa teríamos que utilizar obrigatoriamente estes parâmetros.

Por exemplo, assim faríamos para formatar os números em português:
•Separar os decimais com vírgula
•Separar as unidades de milhar com um ponto.
$numero = 1002002.365;
number_format($numero, 2, ",", ".");
//devolve 1.002.002,37

Se, por exemplo, não separar os milhares, simplesmente passamos como separador de unidades de milhar (quarto parâmetro) a cadeia vazia:

$numero = 9540.2;
number_format($numero, 2, ",", "");
//devolve 9540,20

Conclusão sobre o formato de números com PHP

Isso é tudo o que temos que saber para formatar números em PHP. Como se pode ver é bem simples apresentar os números com os decimais que necessitemos e com os separadores corretos de decimais e milhares para o idioma português.
 
Topo