Jump to content
NoOne

Php Login

Recommended Posts

NoOne

Eu preciso de um sistema de login seguro, ja procurei em alguns sitios ms n percebo mto bem dakilo se alguem puder ajudar :D

Share this post


Link to post
Share on other sites
MauDaFita

Boas.

Eu posso-te ajudar, mas preciso de saber como pretendes guardar os Usernames e as Pass's dos utilizadores, se numa BD MySQL, se em XML, etc...

Tenho alguns sistemas de Login em PHP, talvez um se encaixe no que pretendes. ;)

Share this post


Link to post
Share on other sites
ouvi_dizer

O Apache disponibiliza um sistema de login seguro.

Um dos senãos é que o ficheiro de users mantido manualmente.

Share this post


Link to post
Share on other sites
AriOps

eu desenvolvi à tempos um que não só pedia o user e a pass, pedia também um código binário de 10 dígitos para autenticação do utilizador. Em PHP/MySQL


Daniel Correia

Share this post


Link to post
Share on other sites
David Pintassilgo
eu desenvolvi à tempos um que não só pedia o user e a pass, pedia também um código binário de 10 dígitos para autenticação do utilizador. Em PHP/MySQL

Tens isso ai pra desponibilizar á malta? Eu por acaso ando á procura de uma cena em php simples. Só para introduzir um login/password e depois abrir uma pagina com link's.


cool stuffs to check.

http://blog.zxcoders.com//

Share this post


Link to post
Share on other sites
Warrior

Eu à uns tempos (quando começei a aprender PHP, a primeira coisa que alguem faz para testar ligação com bases de dados (PHP sem bases de dados nao é PHP..) é um sistema de logins..) fiz algo que, apesar de não ser fiável, estava a funcionar.

http://darkwarrior.no.sapo.pt/Login.rar

Não foi o que pediram no topic por certo, uma vez que isto não é uma forma segura, mas talvez alguem ache util.

Share this post


Link to post
Share on other sites
MauDaFita

Podes usar algo deste genero :

<?php
/*
==========================================
================ Variaveis =================
==========================================
*/
$redirURL = "pagina.php";
define('DB_NAME', 'nome_da_BD');
define('DB_HOST', 'servidor_da_BD');
define('DB_USER', 'user_da_BD');
define('DB_PASS', 'pass_da_BD');
/*
==========================================
*/
session_start();

$form_username = $_POST['username'];
$form_password = $_POST['password'];
$_SESSION['strBackToPage'] = "false";
$strErrorMsg = " ";

if ($_REQUEST['action'] == "Login"){

if (empty($form_username) || empty($form_password)){
	$strErrorMsg = "Dados incompletos.";
}
else if (ValidateLogin($form_username,$form_password)){
	$_SESSION['username'] = "$form_username";
	$_SESSION['useractive'] = "yes";
	$_SESSION['strBackToPage'] = "true";
	header("Location: $redirURL");
}
else{
	$strErrorMsg = "Dados incorrectos.";
}
}

if ($_SESSION['strBackToPage'] == "false") {

?>
<html>
<head>
<title>You need to Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
table {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 12px;
	color: #000000;
}
-->
</style>
</head>
<body bgcolor="#FFFFFF">
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCC99" align="center">
  <tr> 
	<td bgcolor="#CC9900"><br />
	  <strong><?php echo $strErrorMsg; ?></strong></td>
  </tr>
  <tr> 
	<td> <form method="post" action="<?php echo $strURL; ?>">
		<table width="100%" border="0">
			<tr>
			<td><strong>Username</strong>:</td>
			  <td><input name="username" size="20"></td>
			</tr>
			<tr>
			<td><strong>Password</strong>:</td>
			  <td><input type="password" name="password" size="20" /></td>
			</tr>
		</table>
		  <input type="submit" name="action" value="Login" />
		  </form>
		  </td>
  </tr>
</table>
</body>
</html>
<?php
}

/* ============================================================== */
/* ======= FUNCTION: VALIDATE USER & PASS BOOL VALUE ============ */
/* ============================================================== */
function ValidateLogin($validUser,$validPass) {
openConn();
global $dbServerConn;

$login_value = false;

$strSQL = "SELECT * FROM tabela 
			WHERE login = '$validUser' AND password = '$validPass' ";
$strSQL_result = mysql_query($strSQL,$dbServerConn) or die(mysql_error()); 
$rows = mysql_num_rows($strSQL_result);
//echo $strSQL_result;
if ($rows == 1) { 
	$login_value = true;
}
return $login_value;
}
/* ======= FUNCTION: VALIDATE USER & PASS BOOL VALUE ============ */
/* =========================== END ============================== */
function openConn(){
global $dbServerConn;
$dbServerConn = mysql_connect(DB_HOST,DB_USER,DB_PASS) or mysql_error($dbServerConn);   
$dbSel = mysql_select_db(DB_NAME, $dbServerConn) or mysql_error($dbSel); 
}

?>

Alteras as variaveis da ligação à BD no inicio, alteras o URL de redireccionamento e os dados relativos à tabela MySQL na função "ValidateLogin".

Share this post


Link to post
Share on other sites
MauDaFita

Ah... esqueci-me, depois usas no cabeçalho de todas as páginas isto :

session_start();
if ( @$_SESSION['useractive'] != "yes" ) {
header("Location: index.php" );
exit();
}

para ver se o utilizador está activo, senão redirecciona para a página de Login...

Share this post


Link to post
Share on other sites
pebat

esse ja e mto complicado :P a maneiras mais facil de fazer nao tem tanta segurança mas e mais simples ...

Share this post


Link to post
Share on other sites
ouvi_dizer

O que o Mau da Fita colocou não é só o acto de login, mas também uma garantia que quem acede às páginas em que o codigo que valida se o user está activo está efectivamente logado.

Isto é particularmente util em 2 tipos de situação:

a) alguem acede directamente a um link e/ou envia dados por post directamente para uma página onde não devia

b) há corrupção dos dados contidos na session

Algo que por vezes também se faz para evitar algum tipo de "roubo de sessão" é guardar o ip e o session id na primeira página e validar se o ip e session id são iguais em todas as páginas.

Mas em questões de login, quanto mais estranho melhor.

Share this post


Link to post
Share on other sites
David Pintassilgo
Eu à uns tempos (quando começei a aprender PHP, a primeira coisa que alguem faz para testar ligação com bases de dados (PHP sem bases de dados nao é PHP..) é um sistema de logins..) fiz algo que, apesar de não ser fiável, estava a funcionar.

http://darkwarrior.no.sapo.pt/Login.rar

Não foi o que pediram no topic por certo, uma vez que isto não é uma forma segura, mas talvez alguem ache util.

Boas, já testei isso mas dá-me um erro:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'DB_USERNAME'@'localhost' (using password: YES) in c:\wamp\www\login\login.php on line 12

Unable to select database

Que me falta, qual o problema?

(eu não precebo mesmo NADA disto, á que ter em conta este promenor! :oops: )


cool stuffs to check.

http://blog.zxcoders.com//

Share this post


Link to post
Share on other sites
Warrior

Isso é suposto funcionar como uma base de dados MySQL tambem instalada.

Tens que alterar no codigo de login o DB_USERNAME para o username da base de dados, e o DB_PASSWORD para aceder à passsword, depois tens que criar as tabelas com a mesma estrutura..

Eu agora não estou em casa, mas quando chegar dou-te a estrutura da tabela (se bem me lembro era simples, so um campo de username e um de password mesmo)

Uma pergunta:

existe alguma forma de se ver quais as variaveis actuais do $_SESSION, e de alterá-las de alguma forma client-side?

Porque se sim, todos os sistemas de login ja postados são facilmente hackados, basta ver as variaveis de $_SESSION e defini-las para o que queremos (o login do user com o qual queremos entrar)

A única forma de proteger contra isso, pelo menos que me lembre, seria guardar o login e a password em $_SESSION, e fazer-se a verificação com a base de dados no topo de cada página, o que tornaria o site ultra lento..

É possível ou não ver-se as variáveis de sessão?

Share this post


Link to post
Share on other sites
Akira
esse ja e mto complicado ;) a maneiras mais facil de fazer nao tem tanta segurança mas e mais simples ...

se queres comprometer a segurança das tuas aplicações é contigo.

Eu para além de estes sistemas uso bem mais como auth keys em imagens.

Não me passa pela cabeça fazer store de passwords e afins em ficheiros para download do people ou coisa do tipo.

Chama-me paranoico se quiseres, mas no dia em que tiveres um site defaced por causa de usares autenticações "mais simples" depois percebes.

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

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