Eu tenho alguma lógica PHP de login estático simples e estou tentando salvar o nome de usuário em um cookie. Infelizmente, ele não salva nada e também não retorna erros, então não tenho certeza do que está errado. Talvez você possa identificar algo errado no código que estou fazendo.
$users = array('allan'=>'allanpass');
$username = $_POST["username"];
$enterpass = $_POST["password"];
if(isset($_POST["username"])) {
if (array_key_exists($username, $users)) {
$pass = $users["allanpass"];
if($enterpass == $pass) {
setcookie("heyhey", 'user2', time() + 60 * 60 * 24 * 7, '/');
echo "Welcome back! <br />";
echo '<a href="login.php?link=link1">Link1</a><br />';
echo '<a href="login.php?link=link2">Link2</a><br />';
echo '<a href="login.php?link=link3">Link3</a><br />';
} else {
echo "pass does not exist";
}
} else {
array_push($users, $username);
echo "hello new user <br />";
echo '<a href="#">Link1</a><br />';
echo '<a href="#">Link2</a><br />';
echo '<a href="#">Link3</a><br />';
}
} else {
echo "Please fill in the form";
};
EDITAR: Não tenho cookies anteriores salvos. Tudo está destruído.
Obrigado a todos por suas contribuições, mas o problema era outra coisa. Era que eu estava configurando um cookie depois que meus cabeçalhos foram enviados. Agora, isso não significa que eu tive que definir um cookie no topo do meu arquivo, mas eu tinha alguns comentários e espaços no topo do meu arquivo e removê-los eliminou os cabeçalhos enviados por erro. Se a remoção de espaços não corrigir o erro de cabeçalhos, tente usar ob_start()
antes de definir seu cookie e ob_end_flush();
depois. Mas essa não é a melhor prática.
Eu também estava recebendo um aviso de índices indefinidos onde tinha minhas variáveis definidas. Verificar se os valores estão definidos antes de atribuí-los às variáveis que uso na instrução if também ajudou.
$username = isset($_POST['username']) ? $_POST['username'] : '';
$enterpass = isset($_POST['password']) ? $_POST['password'] : '';
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras