Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

oce@n

[Resolvido] Php Sessions ?!?!

Recommended Posts

oi estou a tentar passar a validação do registo de um usuário através das sessões.

basta clicar num link e perco a sessão. ou seja, perco o login.

 

o index.php

tem

.....

CODE

 

echo "começa ->".session_start();

echo '$_SESSION-maxi ->'.$_SESSION['MAXI'].'<br>';

if(isset($_SESSION['MAXI'])){

echo "$MAXI preenchido ->".$MAXI;

echo '<br>MAXI-on = '.$_SESSION['MAXI'];

}

else

{

echo "$MAXI VAZIO ->inicia";

echo '<br>MAXI-off = '.$_SESSION['MAXI'];

}

.....

//e carregar tb a página do login.php

include ("login.php");

..............

 

 

o login.php tem

 

CODE

<?php

/////////////////////////////////////////

function logout(){

echo $_SERVER[’PHP_SELF’];

unset($_SESSION['SESS_MEMBER_ID']);

session_destroy();

}

//////////////////////////////////////////

//Sanitize the value received from login field

//to prevent SQL Injection

if(!get_magic_quotes_gpc()) {

$login=mysql_real_escape_string($_POST['login']);

}else {

$login=$_POST['login'];

}

 

//Create query

$qry="SELECT * FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";

$result=mysql_query($qry);

//Check whether the query was successful or not

if($result) {

if(mysql_num_rows($result)>0) {

//Login Successful

$member=mysql_fetch_assoc($result);

$_SESSION['SESS_MEMBER_ID']=$member['member_id'];

echo '<br>bem-vindo <a class="titulos">'.$member['firstname'].'</a><br>';

///////////////////////////////////////

echo "<br>qq coisa ->".$MAXI = $member['firstname']."<br>";

session_register("MAXI");

echo '<br>MAXI-despois = '.$_SESSION['MAXI'];

//////////////////////////////////////

echo '<br><a href="'.logout().'" class="titulos"> LOGOUT </a>';

}else {

//Login failed

echo '<br><a class="titulos"> LOGIN </a><br>';

?>

<!-- $_SERVER['REQUEST_URI']; -->

<form id="loginForm" name="loginForm" method="post" action="<?php echo $_SERVER['PHPSELF']; ?>" >

<a class="titulos">Utilizador: </a><input name="login" type="text" class="textfield" id="login" size="10"/><br>

<a class="titulos">Password: </a><input name="password" type="password" class="textfield" id="password" size="10"/><br>

<input type="submit" name="Submit" value="Login" />

</form>

<?php

}

}else {

die("Query failed");

}

?>

 

 

alguém consegue 1 luz nisto?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

acredito q sim, mas possivelmente não...

 

de qq forma todas as páginas entram na base pela index.php

 

com o código

 

CODE

session_start();

if(isset($_SESSION['MAXI']) {

echo "olá ->".$_SESSION['MAXI'];

}

else

{

echo "vazio";

}

 

a página de login.php

 

CODE

...

echo '<br>bem-vindo <a class="titulos">'.$_SESSION['MAXI'].'</a><br>';

// q funciona após login válido

...

 

valido e entro.

recebo a confirmação no ecran do utilizador com a nota de boavinda (no espaço onde está o include do login.php)

 

o index.php deveria assumir logo a sessão. -> o q não funciona

e assim aparecer tb logo no inicio o "olá ->".$_SESSION['MAXI'];"

mas nada....é perfeitamente ignorado...

 

 

 

 

ai durezaaa....

Compartilhar este post


Link para o post
Compartilhar em outros sites

todas as paginas q você tiver variaveis de sessions você tem de ter o session_start(), se nao nao funfa...

Não é bem assim, apenas as que forem separadas, as que forem inclusas com um include em uma página, apenas á que receberá deverá ter o session_start(); caso contrário irá gerar um erro de header. Em fim, depende da situação.

 

Mais esse página de login me parece trabalhar indiidualmente, porém você deve colocar no início, antes de qualquer tag eceto a do php, o

session_start();

Compartilhar este post


Link para o post
Compartilhar em outros sites

é.. faz um outro php separado e coloca a session_start(); logo no começo antes de qualquer linha php.. depois faz um include no começo da página!

não vi muito seu código.. mais no que deu pra ver não tinha o session_start(); no login

testa ai http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

é.. faz um outro php separado e coloca a session_start(); logo no começo antes de qualquer linha php.. depois faz um include no começo da página!

não vi muito seu código.. mais no que deu pra ver não tinha o session_start();

testa ai http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Já disse, as páginas que trabalharem individualmente para ele colocar o session...

Compartilhar este post


Link para o post
Compartilhar em outros sites

xi... acho q já descobri a asneira....

 

o problema era fazer um botão de logout.

 

os valores eram apagados no abrir da página. conclusão...

 

 

entrava

criava a sessão

destroia a sessão

...

 

 

CODE

echo '<br><a href="'.session_destroy().'" class="titulos"> LOGOUT </a>';

 

como devo criar este logout sem comprometer a sessão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça assim na página que terá o logout:

 

<?php
echo "<a href='?acao=sair'>SAIR</a>";
if(isset($_GET['acao'])){
session_destroy();
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa !

o link de saida é isso mesmo :D

 

obrigado Alaerte!

 

parece-me q o q falta agora é so mesmo a linha de funcionamento.

 

abre a pagina-> se passa o sair =destroi a sessao anterior

 

se são tem "sair" escreve o formulario de login

 

 

por outro lado se tem session [maxi] - dá as boas vindas ao utilizador

se não tem a sessão

 

mete o formulario de login...

 

será q é isto??

 

CODE

<?php

if(isset($_GET['accao'])){

session_destroy();

}

 

if(isset($_SESSION['MAXI'])) {

echo '<br>bem-vindo <a class="titulos">'.$_SESSION['MAXI'].'</a><br>';

echo "<a href='?accao=sair' class='titulos'> SAIR </a>";

}

else {

//////////////////////////////////////////////////////////

//Create query

$qry="SELECT * FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";

$result=mysql_query($qry);

//Check whether the query was successful or not

if($result) {

if(mysql_num_rows($result)>0) {

//Login Successful

$member=mysql_fetch_assoc($result);

$_SESSION['MAXI'] = $member['firstname'];

}

else {

//Login failed

echo '<br><a class="titulos"> LOGIN </a><br>';

?>

<!-- $_SERVER['REQUEST_URI']; -->

<form id="loginForm" name="loginForm" method="post" action="<?php echo $_SERVER['PHPSELF']; ?>" >

 

<div style="width: 70px; float:left;">

<a class="titulos">Utilizador: </a>

</div>

 

<div style="width: 70px; float:left;">

<input name="login" type="text" class="textfield" id="login" size="10"/><br>

</div>

 

<div style="width: 70px; float:left;">

<a class="titulos">Password: </a>

</div>

 

<div style="width: 70px; float:left;">

<input name="password" type="password" class="textfield" id="password" size="10"/><br>

</div>

 

<div style="width: 100px; float:right; margin-top: 5px;">

<input type="submit" name="Submit" value=" entrar " class="textfield" />

</div>

 

</form>

 

<?php

 

}

}

else { die("Query failed");

}

}

?>

 

 

alguma ideia para meter isto a bombar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehe não.

 

tenho visto como se faz e estou a tentar.

o problema é os erros são constantes e nunca tinha trabalhado com sessoes...dai a asneira.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quer o link de como fazer um sistema de login ? trabalha com session... é uma vídeo aula.

 

Só lembrando, se for colocar mais de um link com a variavel " acao " terá que efetuar uma troca em seu script de logout.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o video é mt bom.

 

o problema é q, tal como tudo o q encontrei até agora faz a validação do utilizador e reencaminha para outra página.

 

no meu caso pretendo q o login sirva unicamente para revelar preços de produtos q já estão visiveis.

 

ou seja:

 

faz login e vê os preços.

não faz login, vê os produtos sem preços.

 

nos produtos é simples aparecer ou não. basta q exista a sessão.

o problema é fugir das header...

dureza?

 

eis o código todo do login segundo o video + algumas alterações...

CODE

<?php

 

//////adptado//////

if(isset($_GET['accao'])){

if (isset($_GET['accao']) == "logoff"){

session_unset();

session_destroy();

}

}

////adaptado ///////

 

if (isset($_GET['accao'])){

if ($_GET['accao'] =="login"){

if (isset($_POST['login'])){

if (empty($_POST['login'])){

$erro[] = "Informe o seu login.";

 

}

} else {

$erro[] = "Informe o seu Login";

}

if (isset($_POST['senha'])){

if (empty($_POST['senha'])){

$erro[] = "Informe a sua senha.";

}

} else {

$erro[] ="Informe a sua senha";

}

if (!isset($erro)){

$login = addslashes(htmlentities($_POST['login']));

$senha = addslashes(htmlentities($_POST['senha']));

 

$sql_login ="SELECT * FROM users WHERE login = '$login' AND senha = '$senha'";

$exe_login = mysql_query($sql_login, $connect) or die ("erro ao executar sql");

$num_login = mysql_num_rows($exe_login);

if ($num_login > 0){

$reg_login = mysql_fetch_array($exe_login, MYSQL_ASSOC);

if(isset($_GET['accao'])){

if ($_GET['accao'] == "logoff"){

session_unset();

session_destroy();

}

}

 

$_SESSION['maxi'] = $reg_login['nome'];

$_SESSION['login'] = $reg_login['login'];

$_SESSION['senha'] = $reg_login['senha'];

echo '<br><br>bem-vindo <a class="titulos">'.$_SESSION['maxi'].'</a><br>';

echo "<br><br><a href='?accao=logoff' class='titulos'> SAIR </a>";

 

} else {

$erro[] = "Usuário e/ou senha invalido(s),";

}

 

}

}

}

?>

 

<?php

if (isset($erro)){

for ($i=0; $i<count($erro);$i++){

echo $erro[$i]."<br>";

}

}

 

 

?>

<form method="post" action="<?php $_SERVER['PHPSELF']?>?accao=login" >

 

<div style="width: 70px; float:left;">

<a class="titulos">Utilizador: </a>

</div>

 

<div style="width: 70px; float:left;">

<input name="login" type="text" class="textfield" id="login" size="10"/><br>

</div>

 

<div style="width: 70px; float:left;">

<a class="titulos">Password: </a>

</div>

 

<div style="width: 70px; float:left;">

<input name="senha" type="password" class="textfield" id="senha" size="10"/><br>

</div>

 

<div style="width: 100px; float:right; margin-top: 5px;">

<input type="submit" name="Submit" value=" entrar " class="textfield" />

</div>

 

</form>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora basta dar um session_start nas paginas seguintes e coloca isso

 

$select = "seuselect para o usuario ver os produtos";

 

 

if(isset($_SESSION['secao'])){

echo $select['preco'];

}

 

 

prontin

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.