terça-feira, 26 de agosto de 2008

Variáveis Predefinidas



As variáveis predefinidas são variáveis criadas automaticamente pelo interpretador do PHP. Elas são utilizadas vastamente no desenvolvimento de aplicações, pois, provém diversas informações de interação da aplicação, sendo acessíveis em qualquer parte do código.

Com tais variáveis é possível recuperar informações de formulários, de cookies, do servidor e do visitante do site.
Pretendo resumir as variáveis utilizadas com mais frequência.


- Variável predefinida $_SERVER

A variável predefinida $_SERVER é um array que armazena informações repassadas pelo servidor web relacionadas a página que está sendo executada.

Como o PHP roda em diversos servidores, que por sua vez são desenvolvidos com propósitos diferentes, pode ocorrer de nem todas as variáveis aqui citadas estarem preenchidas com o valor esperado. Pode acontecer também de haver outras variáveis não documentadas.

Descobrindo qual página foi solicitada pelo usuário: utilize $_SERVER['PHP_SELF'];


<?php
    
echo $_SERVER['PHP_SELF'];
?>



Se você salvar o código acima na pasta htdocs do seu apache e acessar como: http://localhost/minhapagina.php, irá aparecer '/minhapagina.php'.
Se ela estiver dentro de um subdiretório, o subdiretório também será listado.

Descobrindo qual o servidor que está instalado: utilize $_SERVER['SERVER_NAME'];

<?php
    
echo $_SERVER['SERVER_NAME'];
?>



Se você estiver rodando o script em sua casa, será exibido 'localhost'.

Recuperando os parâmetros de uma URL: utilize $_SERVER['QUERY_STRING'];

<?php
    
echo $_SERVER['QUERY_STRING'];
?>



A variável $_SERVER['QUERY_STRING'] conterá os parâmetros passados em uma URL. Esses parâmetros são todos os caracteres existentes na url após o ponto de interrogação (?). Para testar o script acima, após o endereço da página acrescente: ?site=manjaphp.blogspot.com&teste=true
Tudo que estiver após o ? será exibido.

Obs: Esse não é o melhor método para recuperar parâmetros de uma URL, porém, é muito valioso para debugar aplicações.

Descobrindo onde são armazenados os arquivos de um servidor web: utilize echo $_SERVER['DOCUMENT_ROOT'];

<?php
    
echo $_SERVER['DOCUMENT_ROOT'];
?>



Essa variável exibe o diretório padrão de armazenagem dos arquivos do servidor web, se for o apache, muito provavelmente será a pasta htdocs.

Descobrindo o browser (navegador) e o sistema operacional do usuário: utilize echo $_SERVER['HTTP_USER_AGENT'];

<?php
    
echo $_SERVER['HTTP_USER_AGENT'];
?>


Essa informação é passada pelo browser do usuário, e pode ser facilmente modificada, sendo assim, impossível de confiar em tal informação.

Descobrindo o IP do usuário: utilize $_SERVER['REMOTE_ADDR'];

<?php
    
echo $_SERVER['REMOTE_ADDR'];
?>



Descobrindo o caminho físico do arquivo: utilize:

<?php
    
echo $_SERVER['SCRIPT_FILENAME'];
?>




- Variável predefinida $_ENV


Com a variável $_ENV é possível recuperar variáveis de ambiente do sistema operacional. As variáveis de ambiente são particulares a cada sistema e a cada usuário.

Um exemplo, no Windows, existe a variável PATH, que diz ao sistema operacional onde procurar por um programa que for solicitado. Portanto, quando você digita somente o nome de um programa na ciaxa de comando Executar, do menu Iniciar do Windows, o Windos procura o programa em cada diretório que está armazenado na variável PATH.

E com o PHP, também podemos acessar essas variáveis do ambiente do servidor. Veja como acessar a variável PATH do ambiente:

<?php
    
echo $_ENV['PATH'];
?>


Irá imprimir uma lista de diretórios, separados por ;


- Variável predefinida $_COOKIE


Com a variável $_COOKIE é possível recuperar informações armazenadas em cookie do navegador do usuário. Muito útil, comumente utilizadas nas diversas aplicações web, como por exemplo, webmail, comércio eletrônico, sites de relacionamentos, etc.

Essa variável vai ser melhor explicada em um próximo post aqui no manjaphp.blogspot.com

- Variável predefinida $_GET

A variável $_GET é um array, disponível em todo código PHP, que serve para recuperar os parâmetros passado na url, separadamente.
Exemplo:


<?php
    
echo 'Site: ' $_GET['site'];
?>



O código acima, se acessado da seguinte maneira 'http://localhost/pagina.php?site=manjaphp.blogspot.com' exibirá a seguinte saída:
Site: manjaphp.blogspot.com

- Variável predefinida $_POST

Com a variável $_POST é possível recuperar informações enviadas pelo usuário utilizando um formulário.
Essa variável vai ser melhor explicada em um próximo post aqui no manjaphp.blogspot.com

- Variável predefinida $_FILES

Com a variável $_POST é possível recuperar arquivos enviados (upload) pelo usuário utilizando um formulário.
Essa variável vai ser melhor explicada em um próximo post aqui no manjaphp.blogspot.com

- Variável predefinida $_REQUEST

A variável $_REQUEST reúne os valores das variáveis $_GET, $_POST e $_COOKIES. Ou seja, se voc não tem certeza se a variável vai ser informada na URL ou em um formulário ou em um cookie, você pode utilizar $_REQUEST, que tem todas essas variávels ($_GET, $_POST e $_COOKIES).

<?php
    
echo 'Site: ' $_REQUEST['site'];
?>


Obs: Tome muito cuidado ao utilizá-la. Não saber de onde vem, pode ser uma falha de segurança.

- Variável predefinida $_SESSION

A variável $_SESSION pode armazenar varáveis durante uma sessão do usuário. Entende-se por sessão o tempo de navegação do usuário por diversas páginas do seu site, sendo possíve passar variáveis de uma página para outra, até que a sessão termine, o que pode acontecer por expirar o tempo, ou pelo execução do código de encerramento de sessão, ou pelo fechamento do navegador do usuário.
Essa variável vai ser melhor explicada em um próximo post aqui no manjaphp.blogspot.com

- Variável predefinida $GLOBALS

A variável $GLOBALS define as variáveis que podem ser acessíveis de qualquer parte do código.
Esse recurso, pode ser utilizado, com cautela, para tornar variáveis de configurações, ou outro valor, disponíveis para as funções que o usuário pode criar.

Esse foi um breve resumo das variáveis predefinidas pelo PHP. O uso correto de cada uma vai ser exposto nesse blog, mais adiante.

Leia Mais…

terça-feira, 19 de agosto de 2008

Arrays - Parte II (Matrizes Multidimensionais)



Digite aqui o resumo do post

No post passado, sobre arrays unidimensionais, foi explicado os conceitos básicos sobre arrays. E até agora, v]os vimos apenas com uma dimensão, para melhor ilustrar, podemos falar que vimos um array como uma lista ou fila única. Mas as matrizes são muito úteis.


Relembrando, para criar um array unidimensional podemos fazer:



<?php
    $lista 
= array('Maria''Carlos''Edgar');
    for (
$i 0$i 3$i++) {
        echo 
'Posição: ' $i ' Nome: ' $lista[$i] . '<br />';
    }
?>


O código acima irá exibir uma listagem de nomes bem simples.

Imagine um cenário onde além do nome, gostaria de exibir a idade referente as pessoas. Já que os nomes estão armazenados em um array, não seria interessante armazenar a idade em um array também?

<?php
    $lista 
= array('Maria''Carlos''Edgar');
    
$idade = array(506023);
    for (
$i 0$i 3$i++) {
        echo 
'Posição: ' $i ' Nome: ' $lista[$i] . ' Idade: ' $idade[$i] .'<br />';
    }
?>



Bom, ficou bem claro que as idades estão diretamente ligadas aos nomes. Porém ainda estamos utilizando dois arrays unidimensionais.

Uma forma de entender facilmente o que são arrays multimensonais é pensar como uma tabela, com linhas e colunas. Na primeira linha de nosso array, teremos vários nomes, na segunda linha teremos várias idades referentes aos nomes, portanto podemos fazer assim:


<?php
    
/**
     * Inicialização da variável $lista indicando que �� um array, por��m, unidimensional
     */
    
$lista = array(); 
    
    
/**
     * Na primeira linha, vários nomes, o que exige guardar como um array
     */
    
$lista[] = array('Maria''Carlos''Edgar');
    
    
/**
     * Na segunda linha, várias idades, o que exige guardar como um array
     */
    
$lista[] = array(506023);
    
    echo 
$lista[0][0]; //imprimindo a primeira linha e a primeira coluna
    
echo '<br />';
    
    echo 
$lista[0][1]; //imprimindo a primeira linha e a segunda coluna
    
echo '<br />';
    
    echo 
$lista[0][3]; //imprimindo a primeira linha e a terceira coluna
    
echo '<br />';

    echo 
$lista[1][0]; //imprimindo a segunda linha e a primeira coluna
    
echo '<br />';
    
    echo 
$lista[1][1]; //imprimindo a segunda linha e a segunda coluna
    
echo '<br />';
    
    echo 
$lista[1][3]; //imprimindo a segunda linha e a terceira coluna
    
echo '<br />';

?>



Leia com atenção o código acima. Foi criado um array, e cada linha recebeu outro array. Isso pode ser pensado como uma tabela, pois só tem duas dimensões.

Não existe limite para as dimensões de um array, porém, a medida em que se aumente as dimensões de um array, fica mais difícil de representá-la graficamente.

Existem várias formas de se criar um array multidimensionais, dinamicamente, como feito anteriormente, ou seja, montando linha a linha, ou, na declaração da variável.


<?php
    $lista 
= array( array('Maria''Carlos''Edgar'), array(506023) );
    echo 
$lista[0][0]; //imprimindo a primeira linha e a primeira coluna
    
echo '<br />';
    
    echo 
$lista[0][1]; //imprimindo a primeira linha e a segunda coluna
    
echo '<br />';
    
    echo 
$lista[0][3]; //imprimindo a primeira linha e a terceira coluna
    
echo '<br />';

    echo 
$lista[1][0]; //imprimindo a segunda linha e a primeira coluna
    
echo '<br />';
    
    echo 
$lista[1][1]; //imprimindo a segunda linha e a segunda coluna
    
echo '<br />';
    
    echo 
$lista[1][3]; //imprimindo a segunda linha e a terceira coluna
    
echo '<br />';
?>


O resultado é o mesmo, um array de array. Porém, mais curto.


<?php
    $cubo 
= array('Edgar' => array( 'ontem' => array(101112),
                                    
'hoje'  => array(151617)),
                  
'Carlos' => array( 'ontem' => array(212255),
                                     
'hoje'  => array(253511)),
                  
'José' => array( 'ontem' => array(998275),
                                   
'hoje'  => array(441507)));

    
//imprimindo a segunda dezena do José de ontem.
    
echo $cubo['José']['ontem'][1];
    
    
//mudando a 3 dezena de hoje do Carlos
    
$cubo['Carlos']['hoje'][2] = 28;
?>



O código acima ilustra o cenário onde três pessoas (Edgar, Carlos e José) que em dois dias (ontem e hoje) escolheram 3 dezenas.

Perceba também que você pode usar strings como indicadores de posição nos arrays multidimensionais.

O próximo post será sobre manipuplação e movimentação de array.

Leia Mais…

quarta-feira, 18 de junho de 2008

PHP: Arrays (Matrizes



Esse blog está sendo desativado, e todo o seu conteúdo estará disponível em:

http://www.manjaphp.com.br

Leia Mais…

terça-feira, 17 de junho de 2008

PHP: Looping Eterno

Esse blog está sendo desativado, e todo o seu conteúdo estará disponível em:

http://www.manjaphp.com.br

Leia Mais…

segunda-feira, 16 de junho de 2008

PHP: Estrutura de Repetição do..while

Esse blog está sendo desativado, e todo o seu conteúdo estará disponível em:

http://www.manjaphp.com.br

Leia Mais…

sexta-feira, 13 de junho de 2008

PHP: Estruturas de Repetição - while

Esse blog está sendo desativado, e todo o seu conteúdo estará disponível em:

http://www.manjaphp.com.br

Leia Mais…

quinta-feira, 12 de junho de 2008

PHP: Estruturas de repetição for

Esse blog está sendo desativado, e todo o seu conteúdo estará disponível em:

http://www.manjaphp.com.br

Leia Mais…