[PHP/MySQL] weer eens een inlogscript

Pagina: 1
Acties:
  • 27 views sinds 30-01-2008

  • degroot
  • Registratie: December 2003
  • Niet online
Ik ben bezig een php inlog script te maken met MySQL.
Het is echt nog een heel erg simpel script maar je moet ergens beginnen toch? :+

Alleen na het invoeren van het juiste wachtwoord en username word ik steeds verkeerd door geredirect.
ik word steeds terug naar index.php gestuurd(i.p.v index2.php), terwijl deze juist aangeroepen moet worden als er foutief ingelogd moet worden.

het gaat om dit script dat inlogt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include ("connect.php");
$query = "select username from tbl_gebruikers where username='$username'";
$result = mysql_query($query) or die("kan de query niet uitvoeren");
$num = mysql_num_rows($result); 
if ($num == 1) 
{
$sql = "SELECT username FROM tbl_gebruikers WHERE username='$username' AND password=password('$password')";
$result2 = mysql_query($sql) or die("Couldn&#8217;t execute query 2"); 
$num2 = mysql_num_rows($result2);
}
if ($num2>0) 
{
header("Location: index2.php"); 
}
else
{
header("Location: index.php");
}
?>

ben ook al echt een hele middag bezig met een oplossing zoeken maar nu is het me echt ten einde raad geworden :'(
Hopelijk zit iemand wat ik verkeerd gedaan heb

alvast bedankt

www.degroot-it.nl


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • degroot
  • Registratie: December 2003
  • Niet online
Ik denk zelf dat het daar niet aan ligt.
Ik heb al best veel op internet rond gezocht(php.net, phphulp, phpfreakz de search)
maar persoonlijk denk ik dat de fout meer hier inligt
code:
1
2
3
4
5
6
$sql = "SELECT username FROM tbl_gebruikers WHERE username='$username' AND password=password('$password')";
$result2 = mysql_query($sql) or die("Couldn&#8217;t execute query 2"); 
$num2 = mysql_num_rows($result2);
}
if ($num2>0) 
{

en dan met name op die if functie, alleen ik zou echt niet weten wat :S

www.degroot-it.nl


Verwijderd

Waar komen die $username en $password vandaan dan?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

degroot schreef op vrijdag 13 mei 2005 @ 18:58:
Ik denk zelf dat het daar niet aan ligt.
En ik weet wel zeker dat het daar wel aan ligt, als bovenstaande code tenminste je hele script is..

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • degroot
  • Registratie: December 2003
  • Niet online
Onderstaande code geeft ook gelijk aan waar de $username en $password vandaan komen
Dat zijn de namen van de inputvelden in mijn inlogform.

vanuit deze pagina logt men in, daarna doet login.php een check of de gebruiker bestaat, en bestaat die dan word deze naar index2.php geredirect.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<title>
Inloggen
</title>
</head>
<body>
<P align="left">Site Administrators kunnen hier inloggen</P>
<form action="login.php" name="login" method="post">
<P>Username:<input type="text" name="username">
<p>Password:<input type ="password" name="password">
<P><input type="submit" name="submit"value="Inloggen">
<input type="reset"name="reset" value="reset">
<br>
</body>
</html>


Ik heb de fout gevonden
het zit hem hierin:

Het was:
$sql = "SELECT username FROM tbl_gebruikers WHERE username='$username' AND password=password('$password')";

Het moet zijn:
$sql = "SELECT username FROM tbl_gebruikers WHERE username='$username' AND password='$password'";

had van password dus een soort functie gemaakt
sorry dat ik jullie hiermee lastig heb gevallen :o

toch bedankt voor de moeite

[ Voor 126% gewijzigd door degroot op 13-05-2005 19:15 ]

www.degroot-it.nl


Verwijderd

Bespaar je de moeite. Echo de queries in plaats van ze uit te voeren, en kijk wat er gebeurt. Kopieer desnoods de queries en kijk in phpMyAdmin wat het resultaat is. Ik gok, net als NMe, dat je queries uitvoert met lege strings. Zet eens error_reporting ( E_ALL ); bovenaan je script.

[edit]
Ok, het is dus wel wat NMe zegt. Je moet niet denken dat iets niet werkt als je er niks van weet. Je moet het gewoon proberen. Leer een beetje debuggen, daar bespaar je jezelf (en anderen) een hoop gedoe mee.

[ Voor 29% gewijzigd door Verwijderd op 13-05-2005 19:11 ]


Verwijderd

Mijn wachtwoord is: ' OR 1=1 OR 'a' = '

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ok, probleem opgelost, waarvan de oplossing letterlijk in de FAQ te vinden was. Volgende keer even beter kijken. ;)

En waar Cheatah op doelt heet SQL injection, daar zou ik ook maar even op zoeken als ik jou was. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.