Senhores, boa tarde!
Eu estou trabalhando com cookies e tenho uma dificuldade.
Minha aplicação vem crescendo conforme o desenvolvimento do curso. Eu estou realizado varias transferencias de dados atráves do comando header location.
A questão é que devido o volume de paginas eu tenho que setar o cookie em todas elas, segue um exemplo:
Index.php
<form action="usuario/login.php" method="post">
<div>
<label for="email">Email</label>
<input type="text" name="email" id="email">
<label for="senha">Senha</label>
<input type="password" name="senha" id="senha">
<button type="submit">Acessar</button>
</div>
<a href="usuario/form.php">Novo Usuário</a>
</form>
Nesse trecho eu envio o usuário para menu.php através do header location.
<?php
include("../banco/conecta.php");
include("banco.php");
$conexao = conexao();
$usuarioDisponivel = buscaUsuario($conexao, $_POST['email'], $_POST['senha']);
if(isset($usuarioDisponivel)) {
$usuario = $usuarioDisponivel['email'];
header("Location: ../menu/menu.php?login=true?user=$usuario");
die();
}else{
echo "Usuário não possui cadastro ou senha incorreta."."<br>";
}
?>
No menu.php eu estou gravando o cookie. E faço o envio para o formulário de cadastro de form.php.
function pega_usuario($url){
$usuario = substr($url, 10, strlen($url));
return $usuario;
}
if(array_key_exists("login", $_GET)) {
$usuario = pega_usuario($_GET['login']);
setcookie("usuarioLogado", $usuario, time() + 600);
vaParaMenu($usuario);
}else if(isset($_COOKIE['usuarioLogado'])) {
setcookie("usuarioLogado", $_COOKIE['usuarioLogado'], time() + 600);
vaParaMenu($_COOKIE['usuarioLogado']);
}else{
echo "Sua sessão expirou!";
}
?>
<?php
function vaParaMenu($usuario) { ?>
<nav>
<ul>
<li>
<form action="../marca/form.php" method="post">
<input type="hidden" name="usuario" value=<?= $usuario?> id="usuario">
<a href="../marca/form.php"><button type="submit">Marca</button></a>
</form>
</li>
</ul>
</nav>
<?php }
Este é o formulario citado anteriormente
<?php
$usuario = "";
function pegaUsuario($usuario){
return substr($usuario, 10, strlen($usuario));
}
if(isset($_POST['usuario']) != null) {
$usuario = $_POST['usuario'];
setcookie("usuarioLogado", $usuario, time() + 600);
}else if(array_key_exists("return", $_GET)){
$usuario = pegaUsuario($_GET['return']);
setcookie("usuarioLogado", $usuario);
echo "Marca cadastrada com sucesso!";
}
?>
Como você pode observar para cada página eu tenho que gravar o cookie, eu observei que quando uso o header location se eu não enviar o usuário via header location eu não tenho como efetuar a gravação do cookie na resquest seguinte.
Eu gostaria de gravar o cookie apenas uma unica vez em uma variavel global e movimenta-lo somente se necessário.
Obrigado.