Inlogscript werkt niet
Dit is mijn code:
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
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
<?php
// de sessie aan het begin van het script starten
session_start();
// bestand importeren die verbinding met de database maakt
include('includes/connect_db.php');
// bestand importeren die nagaat of de gebruiker al is ingelogd
include('includes/checkloggedin.php');
$message = "";
// Het php script dat er voor kan zorgen dat je kan inloggen
if($_SERVER['REQUEST_METHOD'] == "POST"){
//post variabelen
$username = mysqli_real_escape_string($connect_db , $_POST['username']);
$password = mysqli_real_escape_string($connect_db , $_POST['password']);
$cryptedpassword = crypt($password);
//sql variabelen
$users_query = mysqli_query($connect_db, "SELECT * FROM users WHERE username = '".$username."' LIMIT 1") or die(mysqli_error($connect_db));
$users_array = mysqli_fetch_array( $users_query ) or die(mysqli_error($connect_db));
if(crypt($password,$users_array['password']) != $users_array['password'] || mysqli_num_rows($users_query) != 1){
$message = "De inloggegevens kloppen niet";
}else{
//gebruiker is ingelogd
//$_SESSION['user'] = $username;
$message = "Je bent ingelogd";
// header("Location: player.php");
}
}
?>
// de sessie aan het begin van het script starten
session_start();
// bestand importeren die verbinding met de database maakt
include('includes/connect_db.php');
// bestand importeren die nagaat of de gebruiker al is ingelogd
include('includes/checkloggedin.php');
$message = "";
// Het php script dat er voor kan zorgen dat je kan inloggen
if($_SERVER['REQUEST_METHOD'] == "POST"){
//post variabelen
$username = mysqli_real_escape_string($connect_db , $_POST['username']);
$password = mysqli_real_escape_string($connect_db , $_POST['password']);
$cryptedpassword = crypt($password);
//sql variabelen
$users_query = mysqli_query($connect_db, "SELECT * FROM users WHERE username = '".$username."' LIMIT 1") or die(mysqli_error($connect_db));
$users_array = mysqli_fetch_array( $users_query ) or die(mysqli_error($connect_db));
if(crypt($password,$users_array['password']) != $users_array['password'] || mysqli_num_rows($users_query) != 1){
$message = "De inloggegevens kloppen niet";
}else{
//gebruiker is ingelogd
//$_SESSION['user'] = $username;
$message = "Je bent ingelogd";
// header("Location: player.php");
}
}
?>
Ik zie geen echo die de $message variabele zal moeten tonen.
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
// De sessie starten
session_start();
// Bestanden importeren
include('includes/connect_db.php'); // database verbinding
include('includes/checkloggedin.php');// bestandje dat nagaat of de gebruiker al is ingelogd
$message = ""; // de variabele voor als er een error plaatsvindt
if($_SERVER['REQUEST_METHOD'] == "POST"){
// registreer functies importeren
include('functions/registerfunctions.php');
// code generator importeren
include('includes/codegenerator.php');
// postvariabelen aanmaken
$username = mysqli_real_escape_string($connect_db,$_POST['username']);
$password = mysqli_real_escape_string($connect_db,$_POST['password']);
$passwordrepeat = mysqli_real_escape_string($connect_db,$_POST['passwordrepeat']);
$email = mysqli_real_escape_string($connect_db,$_POST['email']);
// variabelen maken voor de sql query
$cryptedpassword = crypt($password);// het wachtwoord coderen in een hashcode
$users_query_checkusername = mysqli_query($connect_db , "SELECT * FROM users WHERE username = '".$username."' LIMIT 1");
$users_query_checkemail = mysqli_query($connect_db , "SELECT * FROM users WHERE email = '".$email."' LIMIT 1");
$users_querycontent_insert = "INSERT INTO users (username,password,email,activationcode) VALUES ('".$username."','".$cryptedpassword."','".$email."','".$actcode."')";
// bepaalde voorwaarden nagaan
if(empty($username) || empty($password) /*|| empty($passwordrepeat) || empty($email)*/){
$message = "Niet alle gegevens zijn ingevuld";
}else{
if(valusername($username) == false){
$message = "De gebruikersnaam moet tussen 3 en 14 tekens bestaan en mag geen speciale karakters bevatten";
}else{
if(strlen($password) < 6 || strlen($password) > 15){
$message = "Het wachtwoord moet tussen 6 en 25 tekens bestaan";
}else{
if($passwordrepeat != $password){
$message = "De wachtwoorden moeten met elkaar overeenkomen";
}else{
if(valemail($email) == false){
$message = "Het E-mail adres is niet correct";
}else{
if(mysqli_num_rows($users_query_checkusername) == 1){
$message = "De gebruikersnaam is al in gebruik";
}else{
if(mysqli_num_rows($users_query_checkemail) == 1){
$message = "Het E-mail adres is al in gebruik";
}else{
// gebruiker is geregistreerd en voldoet aan alle voorwaarden
mysqli_query($connect_db , $users_querycontent_insert) or die(mysqli_error($connect_db));
$message = "Je bent geregistreerd";
}
}
}
}
}
}
}
}
?>
<html>
<head>
<title>Conquer - Registreren</title>
<link rel="stylesheet" type="text/css" href="styles/mainstyle.css"/>
</head>
<body>
<div id="headermenu">
</div>
<div id="loginscreen">
<form name="registreren" action="registreren.php" method="post">
<table name="registreren">
<tr>
<td>Gebruikersnaam: </td><td><input type="text" name="username"/></td>
</tr>
<tr>
<td>Wachtwoord: </td><td><input type="password" name="password"/></td>
</tr>
<tr>
<td>Wachtwoord herhalen: </td><td><input type="password" name="passwordrepeat"/></td>
</tr>
<tr>
<td>E-mail: </td><td><input type="text" name="email"/></td>
</tr>
<tr>
<td><input type="submit" value="registreren"/></td><td>• <a href="index.php">Terug</a></td>
</tr>
<tr>
<td colspan=3><font color="red"><?php echo($message); ?></font></td>
</tr>
</table>
</form>
</div>
</body>
</html>
// De sessie starten
session_start();
// Bestanden importeren
include('includes/connect_db.php'); // database verbinding
include('includes/checkloggedin.php');// bestandje dat nagaat of de gebruiker al is ingelogd
$message = ""; // de variabele voor als er een error plaatsvindt
if($_SERVER['REQUEST_METHOD'] == "POST"){
// registreer functies importeren
include('functions/registerfunctions.php');
// code generator importeren
include('includes/codegenerator.php');
// postvariabelen aanmaken
$username = mysqli_real_escape_string($connect_db,$_POST['username']);
$password = mysqli_real_escape_string($connect_db,$_POST['password']);
$passwordrepeat = mysqli_real_escape_string($connect_db,$_POST['passwordrepeat']);
$email = mysqli_real_escape_string($connect_db,$_POST['email']);
// variabelen maken voor de sql query
$cryptedpassword = crypt($password);// het wachtwoord coderen in een hashcode
$users_query_checkusername = mysqli_query($connect_db , "SELECT * FROM users WHERE username = '".$username."' LIMIT 1");
$users_query_checkemail = mysqli_query($connect_db , "SELECT * FROM users WHERE email = '".$email."' LIMIT 1");
$users_querycontent_insert = "INSERT INTO users (username,password,email,activationcode) VALUES ('".$username."','".$cryptedpassword."','".$email."','".$actcode."')";
// bepaalde voorwaarden nagaan
if(empty($username) || empty($password) /*|| empty($passwordrepeat) || empty($email)*/){
$message = "Niet alle gegevens zijn ingevuld";
}else{
if(valusername($username) == false){
$message = "De gebruikersnaam moet tussen 3 en 14 tekens bestaan en mag geen speciale karakters bevatten";
}else{
if(strlen($password) < 6 || strlen($password) > 15){
$message = "Het wachtwoord moet tussen 6 en 25 tekens bestaan";
}else{
if($passwordrepeat != $password){
$message = "De wachtwoorden moeten met elkaar overeenkomen";
}else{
if(valemail($email) == false){
$message = "Het E-mail adres is niet correct";
}else{
if(mysqli_num_rows($users_query_checkusername) == 1){
$message = "De gebruikersnaam is al in gebruik";
}else{
if(mysqli_num_rows($users_query_checkemail) == 1){
$message = "Het E-mail adres is al in gebruik";
}else{
// gebruiker is geregistreerd en voldoet aan alle voorwaarden
mysqli_query($connect_db , $users_querycontent_insert) or die(mysqli_error($connect_db));
$message = "Je bent geregistreerd";
}
}
}
}
}
}
}
}
?>
<html>
<head>
<title>Conquer - Registreren</title>
<link rel="stylesheet" type="text/css" href="styles/mainstyle.css"/>
</head>
<body>
<div id="headermenu">
</div>
<div id="loginscreen">
<form name="registreren" action="registreren.php" method="post">
<table name="registreren">
<tr>
<td>Gebruikersnaam: </td><td><input type="text" name="username"/></td>
</tr>
<tr>
<td>Wachtwoord: </td><td><input type="password" name="password"/></td>
</tr>
<tr>
<td>Wachtwoord herhalen: </td><td><input type="password" name="passwordrepeat"/></td>
</tr>
<tr>
<td>E-mail: </td><td><input type="text" name="email"/></td>
</tr>
<tr>
<td><input type="submit" value="registreren"/></td><td>• <a href="index.php">Terug</a></td>
</tr>
<tr>
<td colspan=3><font color="red"><?php echo($message); ?></font></td>
</tr>
</table>
</form>
</div>
</body>
</html>
Toevoeging op 15/12/2013 12:47:58:
Maar de tekstvakjes enzo zie ik ook niet. Alles is gewoon weg als ik een foutieve inlognaam opgeef en het goede wachtwoord.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$users_array = mysqli_fetch_array( $users_query ) or die(mysqli_error($connect_db));
$users_array = mysqli_fetch_array( $users_query ) or die(mysqli_error($connect_db));
if(crypt($password,$users_array['password']) != $users_array['password'] || mysqli_num_rows($users_query) != 1){
$message = "De inloggegevens kloppen niet";
}else{
//gebruiker is ingelogd
//$_SESSION['user'] = $username;
$message = "Je bent ingelogd";
// header("Location: player.php");
}
}
?>
$users_array = mysqli_fetch_array( $users_query ) or die(mysqli_error($connect_db));
$users_array = mysqli_fetch_array( $users_query ) or die(mysqli_error($connect_db));
if(crypt($password,$users_array['password']) != $users_array['password'] || mysqli_num_rows($users_query) != 1){
$message = "De inloggegevens kloppen niet";
}else{
//gebruiker is ingelogd
//$_SESSION['user'] = $username;
$message = "Je bent ingelogd";
// header("Location: player.php");
}
}
?>
kun je veranderen in:
Code (php)
ik heb het niet getest maar het zou wel moeten werken denk ik...
Toevoeging op 15/12/2013 13:21:15:
ik heb dit stuk er niet inverwerkt:
crypt($password,$users_array['password']) != $users_array['password'] ||
maar is dat eigelijk voornodig?
Om het wachtwoord te coderen. Het werkt nogsteeds niet :(
Zet je foutmeldingen eens aan en dan zal je zien dat je script struikelt op regel 24. Als er namelijk een foutieve username wordt ingevoerd, dan krijg je een lege resultset terug uit je query en dus kan je ook die hele check niet doen op regel 24. $users_array['password'] bestaat dan namelijk niet.
Toevoeging op 15/12/2013 14:59:09:
Maar ik heb nog een klein vraagje. Als de gebruiker is ingelogd dan gebruik ik dit:
En die sessies gebruik ik in querys zoals:
Code (php)
1
mysqli_query($connect_db, "SELECT * FROM users WHERE username = '".$_SESSION['user']."' LIMIT 1");
Maar is dit wel veilig. Kunnen ze de sessions zelf aanpassen?
Ik zou trouwens je query veranderen:
mysqli_query($connect_db, "SELECT * FROM users WHERE username = '".$_SESSION['userid']."' LIMIT 1");
Gegevens ophalen met user id ipv name :0
oke, bedankt :D
Alleen dan niet je user_id proberen te matchen met een username natuurlijk.... En als je user_id een integer is (zoals te verwachten valt), dan ook geen quotes om je waarde in de query plaatsen. Om een integer heb je geen quotes nodig.