Jump to content


Photo

Sistema De Login


  • Faça o login para participar
4 replies to this topic

#1 frlouzada

frlouzada

    Normal

  • Usuários
  • 98 posts
  • Sexo:Não informado
  • Localidade:Vitória - ES

Posted 24/01/2007, 23:18

Fala galera,
logo abaixo vou colocar o código de fazer o login num sistema. O problema é o seguinte: Como estou usando query string, quando o login ou a senha são incorretos ele está mostrando a mensagem em uma página toda em branco.

Será que tem como, em vez da página ser totalmente recarregada para aparecer a mensagem, aparecer uma caixa de alerta com a mensagem, ou então aparecer os campos de login/senha novamente com uma pequena mensagem abaixo dizendo "login inválido!"
tipo:
Login [ ] Senha [ ] [Logar]
* Login/Senha inválidos

Espero que possam me ajudar! Aí vai o código:

<?php
include("config.php");
include("include.php");

session_start();

$query = mysql_query("Select * From users where login='$login_' and senha='$senha_'");
$valida = mysql_fetch_array($query);

$user = $valida["login"];
$pass = $valida["senha"];

if($login_ == '' || $senha_ == ''){
echo"
<HTML>
<title>$nsite</title>
<form action=\"login.php\" method=\"post\">
<table align=\"center\" width=\"90%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr><td height=\"25\">Bem vindo <b>visitante</b>!  <a href=\"cadastro.php\" target=\"_parent\">Cadastre-se</a> ou efetue login ao lado!</td>
<td height=\"25\">Login:  </td><td><input name=\"login_\" type=\"text\"></td>
<td height=\"25\">Senha:  </td><td><input name=\"senha_\" type=\"password\"></td>
<td height=\"25\"> </td><td><input name=\"logar\" type=\"submit\" value=\"Logar\"></td></tr>
</table>
</form>
</HTML>";
} elseif($login_ == $user && $senha_ == $pass){
setcookie("usuario", $login_);
setcookie("senha", $senha_);
header("Location: ".$_SESSION['local']);

} elseif($login_ != $valida["login"] || $senha_ != $valida["senha"]){
echo "<font face=\"$fonte\" size=\"$tfonte\">Usuário ou senha inválido.<br><a href=mailto:$admine>Contate o administrador</a> se você tem certeza de que os dados estão corretos.<br><br>
<a href=login.php>«« Voltar</a></font>";
}
?>


#2 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 24/01/2007, 23:47

Dá sim tranquilamente ... so tem um problema seu sistema de login está muito fraco e vulneravel ...
Eu refiz ele para ficar mais seguro olhe :)

<?php
session_start();

include("config.php");
include("include.php");

if ($_SERVER["QUERY_STRING"] == "invalido" || $_POST["login_"] == "" || $_POST["senha_"] == "") {
 if ($_SERVER["QUERY_STRING"] == "invalido") {
  $text = "<font face=\"$fonte\" size=\"$tfonte\">Usuário ou senha inválido.<br><a href=mailto:$admine>Contate o administrador</a> se você tem certeza de que os dados estão corretos.<br><br>";
 }

 echo <<<HTML
 <HTML>
 <title>$nsite</title>
 <form action="login.php" method="post">
 <table align="center" width="90%" border="0" cellpadding="0" cellspacing="0">
 <tr><td height="25">Bem vindo <b>visitante</b>! <a href="cadastro.php" target="_parent">Cadastre-se</a> ou efetue login ao lado!</td>
 <td height="25">Login: </td><td><input name="login_" type="text"></td>
 <td height="25">Senha: </td><td><input name="senha_" type="password"></td>
 <td height="25"> </td><td><input name="logar" type="submit" value="Logar"><br>$text</td></tr>
 </table>
 </form>
 </HTML>
 HTML;

} else {
 $query = mysql_query("Select * From users where login='" . $_POST["login_"] . "' and senha='" . $_POST["senha_"] . "' limit 1;");
 $valida = mysql_num_rows($query);
 if ($valida > 0) {
  setcookie("usuario", $login_);
  setcookie("senha", $senha_);
  header("Location: " . $_SESSION['local']);
 } else {
  header("Location: " . $_SERVER["PHP_SELF"] . "?invalido");
 }
}
?>


#3 frlouzada

frlouzada

    Normal

  • Usuários
  • 98 posts
  • Sexo:Não informado
  • Localidade:Vitória - ES

Posted 25/01/2007, 08:29

Cara... ficou show, mas tava só com um probleminha:

o header
  header("Location: " . $_SERVER["PHP_SELF"] . "?invalido");
tava redirecionando para uma nova pagina login.php?invalido, pq o login.php está num include dentro de index.php.

aí eu fiz o seguinte:
<?php
session_start();

include("config.php");
include("include.php");

if ($_SERVER["QUERY_STRING"] == "invalido" || $_POST["login_"] == "" || $_POST["senha_"] == "") {
if ($_SERVER["QUERY_STRING"] == "invalido") {
  $text = "<font face=\"$fonte\" size=\"$tfonte\">Usuário ou senha inválido. <a href=mailto:$admine>Contate o administrador</a> se você tem certeza de que os dados estão corretos.<br><br>";
}

echo <<<HTML
<HTML>
<title>$nsite</title>
<form action="login.php" method="post">
<table align="center" width="90%" border="0" cellpadding="0" cellspacing="0">
<tr><td height="25">Bem vindo <b>visitante</b>! <a href="cadastro.php" target="_parent">Cadastre-se</a> ou efetue login ao lado!</td>
<td height="25">Login: </td><td><input name="login_" type="text"></td>
<td height="25">Senha: </td><td><input name="senha_" type="password"></td>
<td height="25"> </td><td><input name="logar" type="submit" value="Logar"></td></tr>
<tr><td colspan="4">$text</td></tr>
</table>
</form>
</HTML>
HTML;

} else {
$query = mysql_query("Select * From users where login='" . $_POST["login_"] . "' and senha='" . $_POST["senha_"] . "' limit 1;");
$valida = mysql_num_rows($query);
if ($valida > 0) {
  setcookie("usuario", $login_);
  setcookie("senha", $senha_);
  header("Location: " . $_SESSION['local']);
} else {
  header("Location: index.php?invalido");
}
}
?>

E aí? Dá pra ficar melhor?! Tipo uma variável _SERVER para capturar o nome do arquivo de nivel maior do script em uso.

#4 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 25/01/2007, 18:37

Não sei examente o que ta abendo no seu script por que o PHP_SELF era para pegar o script superior ...
Mas o "$_SESSION['local']" não serve já que vc já fex isso ...

#5 frlouzada

frlouzada

    Normal

  • Usuários
  • 98 posts
  • Sexo:Não informado
  • Localidade:Vitória - ES

Posted 25/01/2007, 22:53

No php tem como remover uma substring de um string?

Se tiver como, acho que dá pra usar $_SESSION['local'].




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq