• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

devin

Dúvida na utilização de um if

22 mensagens neste tópico

boas. mais uma dúvida, para variar pessoal.

é o seguinte, na minha index.php tenho um sistema de login que só quero que apareça se o utilizador ainda não estiver logado. se estiver, quero que em vez da form de login apresente uma mensagem com link para fazer logout.

:smoke:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

usa a global $_SESSION, quando faz login crias

depois usas

if(isset($_SESSION['tal'])) { 
//código para user com login feito
} else {
//código para user sem login
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

estou a fazer isso e ele limita-se a não aparecer. quer esteja user loged ou não.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens de usar session_start() em todas as paginas que queiras ir buscar a global session.

tens isto mais detalhado no php.net por exemplo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e estou a usar o session_start().

<script type="text/javascript">
function form_submit() {
  $("div#content").load("login-exec.php",{ username: $("txtUsername").val(), password: $("txtPassword").val()});
  return false;
}
</script>

<?php
if(!isset($_SESSION['SESS_MEMBRO_ID']) || (trim($_SESSION['SESS_MEMBRO_ID']) == '')) {
		echo '<h2>login</h2>';
		echo '<form id="loginForm" name="loginForm" method="post" onsubmit="form_submit()">';
		echo '<table width="232" border="0" align="center" cellpadding="2" cellspacing="0">';
		echo '<tr>';
		echo '<td width="77">utilizador</td>';
	        echo '<td width="215"><input name="txtUsername" type="text" id="s" /></td>';
		echo '</tr>';
		echo '<tr>';
		echo '<td>password</td>';
		echo '<td><input name="txtPassword" type="password" id="s" /></td>';
		echo '</tr>';
		echo '<tr>';
		echo '<td> </td>';
		echo '<td><input type="submit" name="Submit" id="x" value="Entrar" /></td>';
		echo '</tr>';
		echo '</table>';
		echo '</form>';
		}else{
			echo 'Welcome' && $_SESSION['SESS_NOME'];
		}
?>

está aqui o código que estou a user.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Faz isto.

<?php
session_start();
        if(!isset($_SESSION['SESS_MEMBRO_ID']) || (trim($_SESSION['SESS_MEMBRO_ID']) == '')) {
                        echo '<h2>login</h2>';
                        echo '<form id="loginForm" name="loginForm" method="post" onsubmit="form_submit()">';
                        echo '<table width="232" border="0" align="center" cellpadding="2" cellspacing="0">';
                        echo '<tr>';
                        echo '<td width="77">utilizador</td>';
                        echo '<td width="215"><input name="txtUsername" type="text" id="s" /></td>';
                        echo '</tr>';
                        echo '<tr>';
                        echo '<td>password</td>';
                        echo '<td><input name="txtPassword" type="password" id="s" /></td>';
                        echo '</tr>';
                        echo '<tr>';
                        echo '<td> </td>';
                        echo '<td><input type="submit" name="Submit" id="x" value="Entrar" /></td>';
                        echo '</tr>';
                        echo '</table>';
                        echo '</form>';
                        }else{
                                echo 'Welcome' && $_SESSION['SESS_NOME'];
                        }
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

parece que apenas desenha a form. não executa depois o script que está no onsubmit da form. eu faço entrar e fica na mesma. e quando meto dados errados tenho uma div em que aparece lá os erros e agora nem isso aparece.

EDIT: empanquei neste problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu usas o evento onsubmit para chamar a função, certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

em vez do onsubmit usa no botao o onclick="chamar_funcao()"

li algures que o onsubmit por vezes n funciona lá mt bem..? n custa nada testar outras opções  B)

mas ja agora outra coisa... onde é que estás a iniciar a sessao?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

continua na mesma. só desenha a form mas não executa o que quer que seja. eu inicio a sessão como está no código acima que o scorch alterou.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não te vejo a inicializar as variáveis de sessão (suponho que seja no login-exec.php).

Give us some code. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

aqui está o index

<?php
session_start();
?>
<script type="text/javascript">
function form_submit() {
  $("div#content").load("login-exec.php",{ username: $("txtUsername").val(), password: $("txtPassword").val()});
  return false;
}
</script>
<html>
<head>
<title>PCL</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrapper">
<!-- start header -->
<div id="logo">
<h1><a href="#">PCL </a></h1>
</div>
<div id="header">
<div id="menu">
	<ul>
		<li class="current_page_item"><a href="index.php">Inicio</a></li>
		<li><a href="#">Produtos</a></li>
		<li><a href="#">Área de Clientes</a></li>
		<li><a href="#">Downloads</a></li>
		<li class="last"><a href="#">Contacto</a></li>
	</ul>
</div>
</div>
<!-- end header -->
</div>
<!-- start page -->
<div id="page">
<!-- start content -->
<div id="content">
	<div class="post">
		<h1 class="title">bem vindo à  PCL </h1>
		<div class="entry">
			<p>This is Emporium, is a free template from <a href="http://freecsstemplates.org/">Free CSS Templates</a> released under a <a href="http://creativecommons.org/licenses/by/2.5/">Creative Commons Attribution 2.5 License</a>.  You're free to use this template for both commercial or personal use. I only ask that you link back to <a href="http://freecsstemplates.org/">my site</a> in some way. Enjoy </p>
			<p>Curabitur tellus. Phasellus tellus turpis, iaculis in, faucibus lobortis, posuere in, lorem. Donec a ante. Donec neque purus, adipiscing id, eleifend a, cursus vel, odio. Vivamus varius justo sit amet leo. Morbi sed libero. Vestibulum blandit augue at mi. Praesent fermentum lectus eget diam. Nam cursus, orci sit amet porttitor iaculis, ipsum massa aliquet nulla, non elementum mi elit a mauris. </p>
		</div>
		<div class="meta">
			<p class="links"><a href="#" class="more">Read full article</a> <b>|</b> <a href="#" class="comments">Comments (32)</a></p>
		</div>
	</div>
	<div class="post">
		<h2 class="title">Lorem Ipsum Dolor Volutpat</h2>
		<div class="entry">
			<p>Curabitur tellus. Phasellus tellus turpis, iaculis in, faucibus lobortis, posuere in, lorem. Donec a ante. Donec neque purus, adipiscing id, eleifend a, cursus vel, odio. Vivamus varius justo sit amet leo. Morbi sed libero. Vestibulum blandit augue at mi. Praesent fermentum lectus eget diam. Nam cursus, orci sit amet porttitor iaculis, ipsum massa aliquet nulla, non elementum mi elit a mauris. In hac habitasse platea.</p>
			<p>Vestibulum blandit augue at mi. Praesent fermentum lectus eget diam. Nam cursus, orci sit amet porttitor iaculis, ipsum massa aliquet nulla, non elementum mi elit a mauris. </p>
		</div>
		<div class="meta">
			<p class="links"><a href="#" class="more">Read full article</a> <b>|</b> <a href="#" class="comments">Comments (32)</a></p>
		</div>
	</div>
</div>
<!-- end content -->
<!-- start sidebar -->
  <div id="sidebar">
	<ul>
		<li id="search">
			<h2>Procurar</h2>
			<form method="get" action="">
				<fieldset>
				<input type="text" id="s" name="s" value="" />
				<input type="submit" id="x" value="Procurar" />
				</fieldset>
			</form>
	    </li>
	    <li>
      </li>
	    <div class="log">
                  <?php
				if(isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >0 ) {
					echo '<ul class="err">Erro:<br>';
				foreach($_SESSION['ERRMSG_ARR'] as $msg) {
					echo '',$msg,'<br>'; 
				}
					echo '</ul>';
					unset($_SESSION['ERRMSG_ARR']);
				}
			  ?>
             </div>
	    <li>
			<?php
			if(!isset($_SESSION['SESS_MEMBRO_ID']) || (trim($_SESSION['SESS_MEMBRO_ID']) == '')) {
				echo '<h2>login</h2>';
				echo '<form id="loginForm" name="loginForm" method="post" onsubmit="form_submit()">';
				echo '<table width="232" border="0" align="center" cellpadding="2" cellspacing="0">';
				echo '<tr>';
				echo '<td width="77">utilizador</td>';
				echo '<td width="215"><input name="txtUsername" type="text" id="s" /></td>';
				echo '</tr>';
				echo '<tr>';
				echo '<td>password</td>';
				echo '<td><input name="txtPassword" type="password" id="s" /></td>';
				echo '</tr>';
				echo '<tr>';
				echo '<td> </td>';
				echo '<td><input type="submit" name="Submit" id="x" value="Entrar" /></td>';
				echo '</tr>';
				echo '</table>';
				echo '</form>';
			}else{
				echo 'Welcome' && $_SESSION['SESS_NOME'];
			}
			?>
	      <br>
          <br>
      </li>
      <li>
		  <h2>Lorem Ipsum</h2>
		  <ul>
			  <li><a href="#">Fusce dui neque fringilla</a></li>
			  <li><a href="#">Eget tempor eget nonummy</a></li>
			  <li><a href="#">Magna lacus bibendum mauris</a></li>
			  <li><a href="#">Nec metus sed donec</a></li>
			  <li><a href="#">Magna lacus bibendum mauris</a></li>
			  <li><a href="#">Velit semper nisi molestie</a></li>
			  <li><a href="#">Eget tempor eget nonummy</a></li>
		  </ul>
		</li>
		<li>
			<h2>Volutpat Dolore</h2>
			<ul>
				<li><a href="#">Nec metus sed donec</a></li>
				<li><a href="#">Magna lacus bibendum mauris</a></li>
				<li><a href="#">Velit semper nisi molestie</a></li>
				<li><a href="#">Eget tempor eget nonummy</a></li>
				<li><a href="#">Nec metus sed donec</a></li>
				<li><a href="#">Magna lacus bibendum mauris</a></li>
				<li><a href="#">Velit semper nisi molestie</a></li>
			</ul>
		</li>
	</ul>
</div>
<!-- end sidebar -->
<div style="clear: both;"> </div>
</div>
<!-- end page -->
<!-- start footer -->
<div id="footer">
<p id="legal">© 2009. Direitos Reservados.</p>
</div>
<!-- end footer -->
</body>
</html>

e aqui tenho o login-exec

<?php
//Iniciar sessão
session_start();

//Incluir os detalhes da base de dados
require_once('config.php');

//Array para guardar os erros de validação
$errmsg_arr = array();

//Flag de erro de validação
$errflag = false;

//Ligação ao servidor mysql
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) {
	die('Falha na ligação ao servidor: ' . mysql_error());
}

//Seleccionar a base de dados
$db = mysql_select_db(DB_DATABASE);
if(!$db) {
	die("Não foi possível seleccionar a base de dados.");
}

//Prevenir SQL injection
function clean($str) {
	$str = @trim($str);
	if(get_magic_quotes_gpc()) {
		$str = stripslashes($str);
	}
	return mysql_real_escape_string($str);
}

//Limpar
$login = clean($_POST['login']);
$password = clean($_POST['password']);

//Validações input
if($login == '') {
	$errmsg_arr[] = 'Falta o utilizador';
	$errflag = true;
}
if($password == '') {
	$errmsg_arr[] = 'Falta a password';
	$errflag = true;
}

//Se ocurrer falha na validação, redirecionar para a página de login
if($errflag) {
	$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
	session_write_close();
	header("location: index.php");
	exit();
}

//Criar query
$qry="SELECT * FROM membros WHERE utilizador='$login' AND password='".md5($_POST['password'])."'";
$result=mysql_query($qry);

//Verificar se a query foi feita com sucesso
if($result) {
	if(mysql_num_rows($result) == 1) {
		//Login Successful
		session_regenerate_id();
		$member = mysql_fetch_assoc($result);
		$_SESSION['SESS_MEMBRO_ID'] = $member['membro_id'];
		$_SESSION['SESS_NOME'] = $member['nome'];
		$_SESSION['SESS_MORADA'] = $member['morada'];
		$_SESSION['SESS_CONTACTO'] = $member['contacto'];
		session_write_close();
		header("location: member-index.php");
		exit();
	}else {
		//Login failed
		header("location: login-failed.php");
		exit();
	}
}else {
	die("Query falhou");
}
?>

é que não estou conseguir detectar o erro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

Tens a certeza que é isso? $_POST['login'] está mesmo a ser passado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

penso que me enganei nessa parte. mas já troquei pelo que a funcção define o user e a pass e mesmo assim não dá nada. aposto que é um erro estúpido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

devin o que significa esta parte:

 $("div#content").load("login-exec.php",{ username: $("txtUsername").val(), password: $("txtPassword").val()});

envia as informações por Post?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é para utilizar outro php (login-exec.php) sem sair do index.php . só que por algum motivo não está a funcionar e não estou a entender porquê.  :shocking:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim isso já tinha percebido.. mas o que queria saber era de que forma? $_POST[]? mas olha acho que ja sei o que poderá ser.. é estares a alterar a a SESSION através desse código.. já exprimentas-te correr mesmo a outra pagina com as informações de login separadamente e depois ver se isso funcionava?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o login-exec está a funcar bem, o erro deve estar na maneira como defino os valores para usar no login-exec.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Os valores são mesmo enviados por POST? Não sei o que estás a usar (parece-me jQuery mas abstenho-me de afirmações por ignorância), mas não me parece que os valores sejam mesmo enviados por POST. Faz dump dos valores de $_POST para verificar-se isto. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o jquery load por defeito executa um post ou um get? n tenho a certeza mas é melhor confirmares

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

estou a usar jQuery só que também não estou a conseguir descobrir se aquilo é por POST ou GET.  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora