Jump to content

Recommended Posts

Posted

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:

Posted

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.

Posted

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'];
                        }
?>

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Posted

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.

Posted

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?

  • 2 weeks later...
Posted

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.

Posted

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.

Posted

devin o que significa esta parte:

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

envia as informações por Post?

...

Posted

é 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ê.  ?

Posted

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?

...

Posted

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. 🙂

I intend to live forever. So far so good.

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
×
×
  • 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.