SQL Query geeft geen resultaat
Maar ik kom er niet uit, de databaseresultaten krijg ik niet uitgelezen, ze geven allemaal ' '...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
session_start();
include('../connection.php');
if(isset($_POST['username'],$_POST['password'])) {
// Bouw query op om gegevens te testen
$query = sprintf("SELECT `username`,`email`,`ingame_name`,`am_money`,`am_coins`,`premium`,`premium_ends` FROM `users` WHERE `username` = '%s' AND `password` = '%s' LIMIT 1", $_POST['username'], sha1($_POST['password']));
// Maak verbinding met de database en voer de query uit
$connection = mysql_pconnect($connection_host,$connection_user,$connection_pass);
$database = mysql_select_db($connection_db);
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
$num_rows = mysql_num_rows($result);
// Controleer of er een match is gevonden voor combinatie gebruikersnaam/wachtwoord, stuur anders terug
if($num_rows =! 1) {
header("Location: ".$_SERVER['HTTP_REFERER']);
exit;
} else {
// Start een sessie en geef user vars mee
unset($_SESSION['userinfo']);
$_SESSION['userinfo'] = array();
$_SESSION['userinfo']['username'] = $row['username'];
$_SESSION['userinfo']['email'] = $row['email'];
$_SESSION['userinfo']['ingamename'] = $row['ingame_name'];
$_SESSION['userinfo']['money'] = $row['am_money'];
$_SESSION['userinfo']['coins'] = $row['coins'];
$_SESSION['userinfo']['premium'] = $row['premium'];
$_SESSION['userinfo']['premium_ends'] = $row['premium_ends'];
$_SESSION['userinfo']['loggedin'] = date("Y m d H:i");
$_SESSION['login'] == true;
echo '<script type="text/javascript">window.alert(\'Gebruikersnaam: '.$row['username'].' // Ingame-naam: '.$row['ingame_name'].'\');</script>';
// Stel een cookie in om automatisch naar de loginpagina te gaan
if((isset($_POST['gotologinpage'])) && (!empty($_POST['gotologinpage'])) && ($_POST['gotologinpage'] == 1)) {
setcookie("autologinpage",true,time()+(86400 * 365),'/');
} else {
setcookie("autologinpage",false,0,'/');
}
// Stuur door naar spel
header("Location: ./");
}
mysql_close($connection);
mysql_free_result($result);
} else {
header("Location: ".$_SERVER['HTTP_REFERER']);
}
?>
session_start();
include('../connection.php');
if(isset($_POST['username'],$_POST['password'])) {
// Bouw query op om gegevens te testen
$query = sprintf("SELECT `username`,`email`,`ingame_name`,`am_money`,`am_coins`,`premium`,`premium_ends` FROM `users` WHERE `username` = '%s' AND `password` = '%s' LIMIT 1", $_POST['username'], sha1($_POST['password']));
// Maak verbinding met de database en voer de query uit
$connection = mysql_pconnect($connection_host,$connection_user,$connection_pass);
$database = mysql_select_db($connection_db);
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
$num_rows = mysql_num_rows($result);
// Controleer of er een match is gevonden voor combinatie gebruikersnaam/wachtwoord, stuur anders terug
if($num_rows =! 1) {
header("Location: ".$_SERVER['HTTP_REFERER']);
exit;
} else {
// Start een sessie en geef user vars mee
unset($_SESSION['userinfo']);
$_SESSION['userinfo'] = array();
$_SESSION['userinfo']['username'] = $row['username'];
$_SESSION['userinfo']['email'] = $row['email'];
$_SESSION['userinfo']['ingamename'] = $row['ingame_name'];
$_SESSION['userinfo']['money'] = $row['am_money'];
$_SESSION['userinfo']['coins'] = $row['coins'];
$_SESSION['userinfo']['premium'] = $row['premium'];
$_SESSION['userinfo']['premium_ends'] = $row['premium_ends'];
$_SESSION['userinfo']['loggedin'] = date("Y m d H:i");
$_SESSION['login'] == true;
echo '<script type="text/javascript">window.alert(\'Gebruikersnaam: '.$row['username'].' // Ingame-naam: '.$row['ingame_name'].'\');</script>';
// Stel een cookie in om automatisch naar de loginpagina te gaan
if((isset($_POST['gotologinpage'])) && (!empty($_POST['gotologinpage'])) && ($_POST['gotologinpage'] == 1)) {
setcookie("autologinpage",true,time()+(86400 * 365),'/');
} else {
setcookie("autologinpage",false,0,'/');
}
// Stuur door naar spel
header("Location: ./");
}
mysql_close($connection);
mysql_free_result($result);
} else {
header("Location: ".$_SERVER['HTTP_REFERER']);
}
?>
Op dit moment is het zo dat als ik hier de sha1 functie weghaal, en in de database de hash vervang door de waarde die hij moet vertegenwoordigen, werkt het wel
Gewijzigd op 01/01/1970 01:00:00 door Jan-Jelle Kester
En ja, de database is gevuld !
Zet dit bovenin je script.
Ik krijg geen errors... Alleen dat de headers al verzonden zijn (door de echo om te kijken of er resultaat is). Verder geen extra info....
SanThe schreef op 05.10.2009 19:34:
Gebruik geen backtics en maak eens een nette foutafhandeling.
Verder klopt regel 23 niet en regel 42 is nutteloos.
En waarom geen backtics gebruiken?
Ze zorgen toch enkel maar voor problemen...
Het moet wel veilig ;) en het is niet de bedoeling dat ik iemands wachtwoord kan zien, veel mensen zijn nog zo gek overal hetzelfde ww voor te gebruiken.
Dan zal je databaseveld wel te klein zijn voor de sha(). Minimaal 40 characters.
hij is 40 lang... ik maak hem ff 41 miss helpt dat
in ieder geval bedankt!
JJ schreef op 05.10.2009 20:08:
hij is 40 lang... ik maak hem ff 41 miss helpt dat
Maak het om te testen dan even 'echt' groter. 200 of zoiets. Er bestaan ook sha()'s van 80 en 160. Standaard is het in php naar mijn weten altijd 40.
bij mij wel, en met 41 werkt het wel!
Je kunt een VARCHAR gerust 255 lang maken. MySQL pakt precies zoveel geheugen als nodig is om een veld te vullen.
Oke, fijn om te weten! Doe ik dat voortaan. PHP controleert toch of de lengte niet te lang (onpraktisch) is, en SQL injection natuurlijk. (in dit script nog in te bouwen, is 1 functie)