Variáveis externas ao PHP
Formulários HTML (GET and POST)
Quando um formulário é submetido para um script PHP, qualquer variável do formulário será automaticamente disponÃvel para o script. Há várias maneiras de acessar estas informações, por exemplo:
Example#1 Um formulário HTML simples
<form action="foo.php" method="post"> Nome: <input type="text" name="username" /><br /> Email: <input type="text" name="email" /><br /> <input type="submit" name="submit" value="Me aperte!" /> </form>
Dependendo da configuração local e suas preferencias pessoais, essas são as vias pela qual você pode acessar os dados de seus formulários:
Example#2 Acessando dados de um formulário HTML via POST
<?php // DisponÃvel desde o PHP 4.1.0 echo $_POST['username']; echo $_REQUEST['username']; import_request_variables('p', 'p_'); echo $p_username; // Disponivel desde o PHP 3. A partir do PHP 5.0.0, essas grandes // variaveis pre-definidas podem ser desabilitadas pela diretiva register_long_arrays. echo $HTTP_POST_VARS['username']; // DisponÃvel se a diretiva register_globals = on. // Desde o PHP 4.2.0 o valor default de register_globals é off // Usar/manter esse método é preferÃvel. echo $username; ?>
Utilizar um formulário GET é similar, exceto que você use a variável GET pré-definida. O metodo GET obtem os dados da QUERY_STRING (a informação depois do '?' numa URL). Então, por exemplo, https://www.example.com/test.php?id=3 contém os dados GET que serão acessÃveis com $_GET['id']. Veja também $_REQUEST e import_request_variables().
Nota: Arrays superglobais, como $_POST e $_GET, estão disponÃveis desde o PHP 4.1.0.
Como explicado, antes do PHP 4.2.0 o valor default de register_globals era on. E no PHP ele era sempre on. A comunidade PHP está encorajando todos a não alterarem essa diretiva, assumindo-a sempre como off e codificando em conformidade com isso.
Nota: A diretiva de configuração magic_quotes_gpc afeta os valores de GET, POST e Cookies. Se estiver ativada, o valor (It's "PHP!") se tornará automaticamente (It\'s \"PHP!\"). Escaping é necessário para inserção em bancos de dados. Veja também addslashes(), stripslashes() e magic_quotes_sybase.
O PHP entende arrays no contexto de variáveis de formulários (veja o FAQ relacionado). Você pode, por exemplo, agrupar variáveis relacionadas juntas, ou usar esse recurso para receber valores de um campo de seleção múltipla. Por exemplo, podemos ter um formulario que manda informações para si mesmo até um comando submetido para mostrar todos os dados.
Example#3 Variáveis de formulários mais complexos
<?php
if ($_POST) {
echo '<pre>';
echo htmlspecialchars(print_r($_POST, true));
echo '</pre>';
} else {
?>
<form action="" method="post">
Nome: <input type="text" name="personal[name]" /><br />
Email: <input type="text" name="personal[email]" /><br />
Cerveja: <br />
<select multiple name="beer[]">
<option value="antartica">Antartica</option>
<option value="brahma">Brahma</option>
<option value="skol">Skol</option>
</select><br />
<input type="submit" value="Enviar dados!" />
</form>
No PHP 3, os arrays variáveis de formulários eram limitados a uma dimensão. No PHP 4, essa restrição não existe mais.
Nomes de variáveis SUBMIT IMAGE
Quando submetendo um formulário, é possÃvel de se utilizar imagens ao invés do botão de submit padrão com uma tag do tipo:
<input type="image" src="image.gif" name="sub" />
Quando o usuário clica em algum lugar da imagem, o formulário que o acompanha é transmitido para o servidor com duas variáveis adicionais, sub_x e sub_y. Eles contém a coordenadas do clique do usuário na imagem. Os mais experientes percebem que os atuais nomes dessas variáveis enviados pelo browser contém um ponto ao invés de um sublinhado, mas o PHP converte o ponto para um sublinhado automaticamente.
Pontos em nomes de variáveis postadas
Normalmente o PHP não altera o nome de variáveis quando elas são passadas para o script. Entretanto, é necessário notar que o ponto (ponto final) não é um caracter válido no nomes de variáveis do PHP. Para ilustrar, veja o seguinte exemplo:
<?php
$varname.ext; /* nome de variável inválido */
?>
Nessa situação, é importante saber que o PHP automaticamente substituirá qualquer ponto nos nomes de variáveis recebidas com sublinhados.
Determinando o tipo das variáveis
Porque o PHP determina os tipos de variáveis e faz conversões (geralmente) quando necessárias, nem sempre é óbvio o tipo de uma variável tem em todos os momentos. O PHP incluà várias funções que permitem determinar qual o tipo de uma variável, por exemplo: gettype(), is_array(), is_float(), is_int(), is_object(), e is_string(). Veja também o capÃtulo Tipos.