Avatar billede gregblach Nybegynder
06. januar 2006 - 11:30 Der er 1 løsning

Fejl i MySQL validering af brugere.

Hej Experter,

Jeg har lidt problemer med at få nedenstående kode til at spille:

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="" />
<meta name="keywords" content="" />
</head>
<body>

<?php
session_start();
$errorMessage = '';
if (isset($_POST['txtUsername']) && isset($_POST['txtPassword']))
{
  include './include/opendb.php';

  $username = $_POST['txtUsername'];
  $password = $_POST['txtPassword'];

  // check if the username and password combination exist in database
  $sql = "SELECT username
          FROM users
          WHERE username = '$username'
                AND password = PASSWORD('$password')";

  $result = mysql_query($sql)
            or die('Query failed. ' . mysql_error());

  if (mysql_num_rows($result) == 1)
  {
      // the user id and password match,
      // set the session
      $_SESSION['db_is_logged_in'] = true;

      // after login we move to the main page
      header('Location: list.php');
      exit;
  } else
  {
      $errorMessage = 'Sorry, wrong username / password';
  }

  include './include/closedb.php';
}
?>

<form method="post" name="frmLogin" id="frmLogin">
<table width="400" border="1" align="center" cellpadding="2" cellspacing="2">
<tr>
<td width="150">Username</td>
<td><input name="txtUsername" type="text" id="txtUsername"></td>
</tr>
<tr>
<td width="150">Password</td>
<td><input name="txtPassword" type="password" id="txtPassword"></td>
</tr>
<tr>
<td width="150">&nbsp;</td>
<td><input type="submit" name="btnLogin" value="Login"></td>
</tr>
</table>
</form>

</body>
</html>

Når jeg avikler koden virker det som der ikke valideres, og jeg bliver ikke stillet over til list.php. Jeg kan også se at der ikke bliver oprettet nogen sessionsfil på serveren.

Sådan her er DB'en bygget op:

| users | CREATE TABLE `users` (
  `display_name` varchar(50) NOT NULL default '',
  `password` varchar(50) NOT NULL default '',
  `username` varchar(50) NOT NULL default '',
  `group_id` int(11) NOT NULL default '0',
  `user_id` int(11) NOT NULL auto_increment,
  PRIMARY KEY  (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |

/Greg
Avatar billede gregblach Nybegynder
06. januar 2006 - 12:06 #1
Fandt den selv!!

  $sql = "SELECT username
          FROM users
          WHERE username = '$username'
                AND password = PASSWORD('$password')";

Havde lige glemt at jeg havde gemt data i rent text. ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester