oce@n 0 Denunciar post Postado Abril 21, 2008 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
José Enésio 4 Denunciar post Postado Abril 21, 2008 Tá botando o session_start() certinho em todas as páginas? Compartilhar este post Link para o post Compartilhar em outros sites
oce@n 0 Denunciar post Postado Abril 21, 2008 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
visitante_php 0 Denunciar post Postado Abril 21, 2008 todas as paginas q você tiver variaveis de sessions você tem de ter o session_start(), se nao nao funfa... Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 21, 2008 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
Rails 3 Denunciar post Postado Abril 21, 2008 é.. 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
Alaerte Gabriel 662 Denunciar post Postado Abril 21, 2008 é.. 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
oce@n 0 Denunciar post Postado Abril 21, 2008 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
Alaerte Gabriel 662 Denunciar post Postado Abril 21, 2008 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
oce@n 0 Denunciar post Postado Abril 21, 2008 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
Alaerte Gabriel 662 Denunciar post Postado Abril 21, 2008 Não estou nem te entendendo mais... explica direito, tu pegou esse código pronto não é ? Compartilhar este post Link para o post Compartilhar em outros sites
oce@n 0 Denunciar post Postado Abril 21, 2008 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
Alaerte Gabriel 662 Denunciar post Postado Abril 21, 2008 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
oce@n 0 Denunciar post Postado Abril 21, 2008 ok.manda o link da video aula, pf. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 21, 2008 Certo. http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://www.videotutoriais.net/videos/siste...tema_login.html Compartilhar este post Link para o post Compartilhar em outros sites
oce@n 0 Denunciar post Postado Abril 22, 2008 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
visitante_php 0 Denunciar post Postado Abril 22, 2008 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
oce@n 0 Denunciar post Postado Abril 22, 2008 oi! já alterei o código novamente :D MT bom esta corrida!!! já funciona certinho. obrigado... Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 22, 2008 [Resolvido] Compartilhar este post Link para o post Compartilhar em outros sites