Jump to content
Sign in to follow this  
wba

Problema <a href= Vs <form action=

Recommended Posts

wba

Ora viva, como sou novato aqui vim pedir ajuda.

Já agora se me souberem dizer de bons foruns de PHP em Pt agradecia.

Ora estou a tentar fazer o meu 1º site com login/logout, sessões... e deparei-me com a seguinte situação.

Tenho uma pagina inicial que tem um formulario para user e pass e botão para Entrar ou Sair dependendo se está logado ou não.

Isto é: se não está logado aparece o botão Entrar e se já está logado aparece o botão Sair, recorri a uns IF's e ao estado das

variaveis de sessão.

No botão 'Sair' estou a usar o seguinte codigo:

<form action="logout.php" method="post" ><input type="submit" value="Sair" /></form>

que chama a pagina logout.php que está assim:

<?php
include 'core/init.php';
session_start();
$_SESSION = array();
session_destroy(); 
session_unset('NOME');
if (empty($_SESSION['NOME'])) {
header("Location: index.php");
exit(); }
?>

Portanto termina a sessão e devolve o curso do programa à pagina inicial(index.php).

O problema surge quando já estou logado e carrego no botão Sair, que deveria então desaparecer sendo substituído pelo botão 'Entrar'

tal como outros menus, que estão na pagina inicial que dependem do estado da sessão.

Ou seja o botão Sair não tem qualquer efeito, mesmo se fizer refresh à pagina incial nada acontece.

Entretanto depois de muito "escavar" deu-me para substituir toda linha de código que tenho acima referente ao form por:

<a href="logout.php" >Sair</a>

e tudo corre na perfeição, ou seja 'Sair' desaparece e é substiuido por 'Entrar' e os menus dependentes de variveis de sessão são substituidos de acordo com o esperado.

Alguem sabe então a que se deve este comportamento diferente entre usar o '<a href=... ' ou o '<form action=...'

desde já o meu obrigado

Edited by brunoais
tags code + geshi

Share this post


Link to post
Share on other sites
taviroquai

Os elementos a (anchor) ou form fazem pedidos à URL indicada; No caso de a indicas a URL no atributo href. No caso de form indicas a URL no atributo action.

A diferença é que o elemento form permite fazer pedidos POST e GET, já os elementos a apenas fazem pedidos GET.

É claro que com javascript podes mudar este comportamento que indiquei...

Para o caso que indicaste acima, basta fazer um pedido GET, por isso podes fazê-lo tanto com form ou a, mas no teu caso não se justifica que o faças com um formulário... O propósito de um formulário é enviar um conjunto de dados para o servidor e neste caso não precisas de enviar dados.

Edited by taviroquai

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.