As variáveis $_GET e $_POST em PHP são usadas para recuperar informações de um formulário, como entrada do usuário.
Uma coisa importante a observar é que ao processar formulários HTML, o PHP pode disponibilizar automaticamente os elementos do formulário da página HTML para scripts PHP.
O exemplo abaixo contém um formulário HTML com dois campos de entrada e um botão de envio.
<html><head><metacharset="utf-8"><title>Rede de código-fonte (downcodes.com)</title></head><body> <formaction="welcome.php"method="post" > Nome: <inputtype="text"name="fname">Idade: <inputtype="text"name="age"><inputtype="submit"value="submit"></form> </body>< /html>
Quando o usuário preencher o formulário acima e clicar no botão enviar, os dados do formulário serão enviados para um arquivo PHP denominado "welcome.php":
Bem vindo<?phpecho$_POST["fname"]; ?>!<br>Sua idade é <?phpecho$_POST["age"];
Explicaremos as variáveis $_GET e $_POST em PHP no próximo capítulo.
No exemplo a seguir, definimos três opções para o menu suspenso. O formulário usa o método GET para obter dados. Se o valor do atributo action estiver vazio, significa que ele foi enviado ao script atual. no menu suspenso através do atributo name de select:
<?php$q= isset($_GET['q'])? htmlspecialchars($_GET['q']): '';if($q){ if($q=='CODERCTO'){ echo' Rede de código-fonte<br>http://www.downcodes.com' }elseif($q=='GOOGLE'){ echo'Google search<br>http://www.google.com'; }elseif($q=='TAOBAO'){ echo'Taobao<br>http://www.taobao.com'; q"> <optionvalue="">Selecione um site:</option> <optionvalue="CODERCTO">codercto</option> <optionvalue="GOOGLE">Google</option> <optionvalue="TAOBAO">Taobao</option> </select> <inputtype="submit"value="submit"> </form><?php}?>
Se o menu suspenso for de seleção múltipla (múltiplo = "múltiplo"), podemos obtê-lo definindo select name = "q[]" como uma matriz e enviá-lo usando POST. O código é o seguinte:
<?php$q= isset($_POST['q'])? $_POST['q']: '';if(is_array($q)){ $sites= array( 'CODERCTO'=> 'Código Fonte Rede: http://www.downcodes.com', 'GOOGLE'=> 'Pesquisa Google: http://www.google.com', 'TAOBAO'=> 'Taobao: http://www.taobao.com', ); foreach($qas$val){ //PHP_EOL é uma constante, usada para quebras de linha echo$sites[$val]. =" "method="post"> <selectmultiple="multiple"name="q[]"> <optionvalue="">Selecione um site:</option> <optionvalue="CODERCTO">codercto</option> <optionvalue="GOOGLE">Google</option> <optionvalue="TAOBAO">Taobao</option> </select> <inputtype="submit"value="Submit"> </form><?php}?>
Os valores do atributo name no formulário do botão de opção PHP são consistentes, mas os valores dos valores são diferentes.
<?php$q= isset($_GET['q'])? htmlspecialchars($_GET['q']): '';if($q){ if($q=='CODERCTO'){ echo' Rede de código-fonte<br>http://www.downcodes.com' }elseif($q=='GOOGLE'){ echo'Google search<br>http://www.google.com'; }elseif($q=='TAOBAO'){ echo'Taobao<br>http://www.taobao.com'; radio"name="q"value="CODERCTO"/>codercto <inputtype="radio"name="q"value="GOOGLE"/>Google <inputtype="radio"name="q"value="TAOBAO"/>Taobao <inputtype="submit"value="submit"></form><?php}?>
A caixa de seleção PHP pode selecionar vários valores:
<?php$q= isset($_POST['q'])? $_POST['q']: '';if(is_array($q)){ $sites= array( 'CODERCTO'=> 'Código Fonte Rede: http://www.downcodes.com', 'GOOGLE'=> 'Pesquisa Google: http://www.google.com', 'TAOBAO'=> 'Taobao: http://www.taobao.com', ); foreach($qas$val){ //PHP_EOL é uma constante, usada para quebras de linha echo$sites[$val]. =" "method="post"> <inputtype="checkbox"name="q[]"value="CODERCTO">codercto<br> <inputtype="checkbox"name="q[]"value="GOOGLE">Google<br> <inputtype="checkbox"name="q[]"value="TAOBAO">Taobao<br> <inputtype=" enviar"value="submit"></form><?php}?>
Devemos validar a entrada do usuário sempre que possível (por meio de scripts do lado do cliente). A validação do navegador é mais rápida e tira menos pressão do servidor.
Se a entrada do usuário precisar ser inserida em um banco de dados, considere usar a validação do servidor. Uma boa maneira de validar um formulário no servidor é passar os dados do formulário para a página atual (o envio assíncrono é melhor), em vez de pular para uma página diferente. Dessa forma, os usuários podem receber mensagens de erro na mesma página do formulário. Será mais fácil para os usuários encontrarem erros.