Depois de termos passado por vários artigos introdutórios ao PHP, e depois de lhe termos apresentado a primeira parte com Como passar informação entre páginas em PHP (Parte I) apresentamos neste artigo Como passar informação entre páginas em PHP (Parte II) onde iremos abordar os restantes métodos de passar informação entre páginas em PHP. Este processo é feito através de Arrays Superglobais. PHP oferece vários tipos de arrays superglobais para os desenvolvedores, cada um com uma finalidade diferente. Um array superglobal é uma variável especial que está sempre disponível nos scripts, dos quais figuram:

  • $GLOBALS: Variáveis disponívels globalmente (Já abordado na Parte I)
  • $_SERVER: Informação acerca do servidor (Já abordado na Parte I)
  • $_GET:  Dados utilizados durante o método HTTP GET (Já abordado na Parte I)
  • $_POST: Dados utilizados durante o método HTTP POST
  • $_REQUEST: Dados utilizados durante um pedido HTTP
  • $_FILES: Dados utilizados durante a introdução de um ficheiro HTML
  • $_SESSION: Dados relativos à sessão actual do utilizador
  • $_COOKIE: Dados guardados no navegador do utilizador como cookie

Não perca alguns dos nossos conteúdos relacionados com PHP:

php

$_POST

PHP fornece uma segunda opção para enviar dados, o POST. O envio de informação através de formulários web, como formulários de contacto ou de registo, necessita de utilizar o método POST para enviar a informação contida no formulário para ser processada. Em termos estruturais, o método POST é similar ao método GET, e os seus valores podem ser acedidos da mesma forma: utiliza-se a superglobal $_POST e define-se o nome da variável como uma chave do array. Na maioria das vezes, o valor do POST é enviado por um formulário web que é feito em HTML. Veja o exemplo abaixo e crie um documento HTML com o seguinte código:

<form action="teste.php" method="post">
    <input type="text" name"username" />
    <input type="text" name="email" />
    <input type="submit" value="Registar" />
</form>

O atributo “name” define a chave no array que poderá utilizar para aceder à informação lá guardada com a submissão do formulário. E título de exemplo, poderá utilizar $_POST['username'] para aceder ao nome de utilizador. De seguida crie o ficheiro teste.php e insira o seguinte código:

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST'){
	echo "Obrigado por se registar! <br />",
	"Utilizador: ", htmlentities($_POST['username']), "<br />",
	"Email: ", htmlentities($_POST['email']), "<br />";
}else{

?>
<form action="teste.php" method="post">
	<label for="username">Utilizador: </label>
    <input type="text" name"username" />
    <label for="email">Email: </label>
    <input type="text" name="email" />
    <input type="submit" value="Registar" />
</form>

<?php } ?>

Quando carregar o ficheiro teste.php o script irá verificar se já foram submetidos dados através do método POST. Se já tiverem sido submetidos dados, o script envia a mensagem de agradecimento pelo registo e mostra o nome de utilizador escolhido e o endereço de email. Se nada foi submetido, o script põe à disposição o formulário de registo novamente.

Como passar informação entre páginas em PHP (Parte II)

Como passar informação entre páginas em PHP (Parte II)

$_REQUEST

A superglobal $_REQUEST é um array que contém os conteúdos das superglobais $_GET, $_POST e $_COOKIE. Se modificar o seu formulário no ficheiro teste.php  para enviar para teste.php?submit=true com um nome de utilizador e um email, poderá aceder aos dados submetidos utilizando o código abaixo:

Primeiro altere o seu ficheiro html, adicionando ?submit=true ao action do seu formulário:

<form action="teste.php?submit=true" method="post">
    <input type="text" name="username" />
    <input type="text" name="email" />
    <input type="submit" value="Registar" />
</form>

De seguida altere o seu ficheiro teste.php:

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST'){
	foreach($_REQUEST as $chave => $val) {
		echo $chave, " : ",$val, "<br />";
	}
}else{

?>
<form action="teste.php" method="post">
	<label for="username">Utilizador: </label>
    <input type="text" name"username" />
    <label for="email">Email: </label>
    <input type="text" name="email" />
    <input type="submit" value="Registar" />
</form>

<?php } ?>

E o resultado será este:

Como passar informação entre páginas em PHP (Parte II)

Como passar informação entre páginas em PHP (Parte II)

$_FILES

Outra das funcionalidades dos formulários HTML tem a ver com a habilidade de permitir aos utilizadores o envio de ficheiros. Numa website como um blog, é necessário que você seja capaz de aceitar o envio de imagens para incluir com as entradas do blog. Para aceder a um ficheiro enviado, é necessário utilizar a superglobal $_FILES. Esta superglobal funciona de forma ligeiramente diferente quando comparada com o $_GET e o $_POST, em que cada ficheiro cria um array de elementos relacionados que fornecem informação acerca do ficheiro enviado. Essa informação inclui:

  • name – o nome do ficheiro.
  • type – o tipo do ficheiro (ex image/jpeg).
  • tmp_name – a localização temporária do ficheiro.
  • error – Um código de erro correspondente ao erro ocorrido no envio do ficheiro (0 se não forem encontrados erros).
  • size – Tamanho do ficheiro em bytes

Cada ficheiro é guardado como um array multidimensional na superglobal $_FILES, que é acedida usando primeiro o campo “name” como a chave do array seguido do nome do campo que deseja saber – ex $_FILES['envio1']['nome']. Para perceber como funciona o $_FILES vamos criar um envio de ficheiro no ficheiro teste.php. Siga o exemplo do código abaixo:

No ficheiro HTML insira o código:

<form action="teste.php" method="post"
	enctype="multipart/form-data">
	<label for="photo">Imagem: </label>
    <input type="file" name="photo" />
    <input type="submit" value="Enviar imagem" />
</form>

No ficheiro teste.php insira o código:

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST'){
	if(isset($_FILES['photo'])
	&& is_uploaded_file($_FILES['photo']['tmp_name'])
	&& $_FILES['photo']['error']==UPLOAD_ERR_OK) {
		foreach($_FILES['photo'] as $chave => $valor) {
			echo "$chave : $valor <br />";
		}
	}else{
		echo "O ficheiro não foi enviado";
}

}else{

?>
<form action="teste.php" method="post"
	enctype="multipart/form-data">
	<label for="photo">Imagem: </label>
    <input type="file" name="photo" />
    <input type="submit" value="Enviar imagem" />
</form>

<?php } ?>

E o resultado será o seguinte:

Como passar informação entre páginas em PHP (Parte II)

Como passar informação entre páginas em PHP (Parte II)

$_SESSION

Quando você necessitar de guardar um valor durante uma visita de um utilizador, a superglobal $_SESSION fornece uma solução fácil e prática. Quando uma variável $_SESSION é declarada, permanece na memória até que seja apagada de forma pretenciosa, o tempo de sessão acabe (o tempo de sessão por defeito é de 180 minutos) ou o navegador seja fechado. Um dos usos mais comuns para a superglobal $_SESSION é para guardar os dados de login de um utilizador. Desta forma você poderá criar o seu próprio formulário de login para um utilizador que já esteja registado. Durante o processo que irá concluir neste item, o seu script irá realizar as seguintes tarefas:

  • Apresentar um formulário de registo
  • Agradecer o registo do utilizador após o registo com sucesso
  • Informar o utilizador que ele já está registado quando necessário (ex. caso ele refresque a página de registo)

Primeiro altere o seu ficheiro HTML e insira o seguinte código:

<form action="teste.php" method="post">
	<label for="utilizador">Utilizador: </label>
    <input type="text" name="utilizador" />
    <label for="email">Email: </label>
    <input type="text" name="email" />
    <input type="submit" value="Registar" />
</form>

De seguida altere o seu ficheiro teste.php e insira o seguinte código:

<?php

session_start();

if(isset($_SESSION['utilizador'])){
	echo "Já está registado como $_SESSION[utilizador].";
}

else if($_SERVER['REQUEST_METHOD'] == 'POST'){
	$trimutilizador = trim($_POST['utilizador']);
	$trimemail = trim($_POST['email']);
	if(!empty($trimutilizador)
	&& !empty($trimemail)){
		$uname = htmlentities($_POST['utilizador']);
		$email = htmlentities($_POST['email']);

		$_SESSION['utilizador'] = $uname;

		echo "Obrigado por se registar! <br />",
			"Utilizador: $uname <br />",
			"Email: $email <br />";
	}
	else {
		echo "Por favor preencha ambos os campos! <br />";
	}

}else{

?>
<form action="teste.php" method="post">
	<label for="utilizador">Utilizador: </label>
    <input type="text" name="utilizador" />
    <label for="email">Email: </label>
    <input type="text" name="email" />
    <input type="submit" value="Registar" />
</form>

<?php } ?>

E o resultado será o seguinte:

Como passar informação entre páginas em PHP (Parte II)

Como passar informação entre páginas em PHP (Parte II)

$_COOKIE

Os Cookies comportam-se de forma similar à sessões, mas eles permite-lhe guardar informação no equipamento do utilizador durante um maior período de tempo. A informação guardada nos cookies permanecem disponíveis mesmo que o utilizador feche o navegador, isto se assumirmos que a duração do cookie está definida por um longo período de tempo. Pode utilizar os cookies para fazer com que as visitas dos utilizadores ao seu website sejam mais apelativas, ao manter informações pertinentes mas não vitais. Este tipo de informações podem incluir definições que personalizam a experiência do utilizador no seu website, realizar tarefas repetitivas de forma automática ou permitir que o utilizador permaneça com o login efectuado durante mais tempo, evitando que seja necessário efectuar o login todas as vezes que visita o seu website. Em PHP, a superglobal $_COOKIE é utilizada para aceder aos valores dos cookies. No entanto, definir um cookie necessita que você utilize a função setcookie(). Para aprender, nada melhor que praticar a partir de um exemplo.

Abra o seu ficheiro teste.php e insira o seguinte código:

<?php

if(isset($_COOKIE['utilizador'])){
	echo "Bem-Vindo Novamente, ",
		htmlentities($_COOKIE['utilizador']),
		"<br />";
}

else if($_SERVER['REQUEST_METHOD']=='POST'
	&& !empty($_POST['utilizador'])){
		$uname = htmlentities($_POST['utilizador']);

		$expires = time()+7*24*60*60;
		setcookie('utilizador', $uname, $expires, '/');

		echo "Obrigado pelo seu registo, $uname! <br />";
}else{

?>
<form method="post">
	<label for="utilizador">Utilizador: </label>
    <input type="text" name="utilizador" />
    <input type="submit" value="Registar" />
</form>

<?php } ?>

O resultado é o seguinte – Página de registo:

Como passar informação entre páginas em PHP (Parte II)

Registo efectuado com sucesso:

Como passar informação entre páginas em PHP (Parte II)

Se actualizar a página, irá receber a informação de que já está registado e como tal irá ver uma mensagem de boas vindas:

Como passar informação entre páginas em PHP (Parte II)

E concluímos assim os 8 métodos para passar informação entre páginas em PHP!

Abraço e até já!

 

Autor: Diogo Espinha

Blog do Autor | Artigos do Autor:

Workaholic e totalmente viciado em computadores, Internet e desporto motorizado. Adora praticar desporto, é um curioso da programação em PHP, CSS e HTML5 e não dispensa a companhia do seu Mac OSX 86 Snow Leopard!

  • Explorer - Factory Construction & Ship Building Joomla Theme
  • Justice - Attorney and Law Firm Joomla Template
  • OwnFolio - One Page Personal Portfolio / vCard / Resume / Showcase Joomla Template
  • Big Business - Responsive Template
  • Merab - Creative Multipurpose Drupal 8 Theme
  • Fitness Academy Joomla Template
  • Fruition - Business Joomla Template
  • Educate | Education & Courses, Kindergartens Joomla Template
  • Constructive - Contractors Multipurpose Joomla Landing Page Theme
  • Vina Bubox - VirtueMart Joomla Template for Online Stores
  • BizOne - One Page Parallax Drupal Theme
  • LawHouse - Responsive Lawyers Attorneys Joomla Template

Gostou deste artigo? Então torne-se fã do Blog no Facebook!



Comentários dos Alunos


  1. Jose
    27 de janeiro de 2012

    Bom artigo mas note que na aprte 1 existe um erro no primeiro código.



  2. Virneto
    21 de agosto de 2012

    Tenho sido um visitante cada vez mais frequente da escola criatividade. Diogo Espinha, Tenho aprendido imenso com seus tutoriais. Obrigado!!!



  3. Alexssandrolima
    28 de dezembro de 2012

    Obrigado pelas dicas, Muito bom seus comentários.



  4. R Bruno
    27 de julho de 2013

    Olá, não entenda como crítica, e sim como sugestão! Não estou bancando o Troll.
    Tente fazer mais explicado os códigos, exemplo o ‘htmlentilies’ vc poderia ter explicado o porque do uso.

    Mas tá ótimo me ajudou muito. Valeu e Obrigado.


RSS
Twitter
Facebook
Comentários
ASSINANTES
SEGUIDORES
FÃS
COMENTÁRIOS
7794

Subscrever Newsletter
Subscreva a Newsletter:



Aplicativos Android, iPhone e Muito Mais!




Assine a Escola Criatividade Assine a Newsletter da Escola Criatividade Escola Criatividade no Twitter Escola Criatividade no Facebook Escola Criatividade no Youtube Escola Criatividade no Google Buzz