Sessie random kwijt
ik heb nu
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$sql = "SELECT * FROM users WHERE email='" . mysql_real_escape_string($email) . "' " . "AND password='" . mysql_real_escape_string($password) . "' AND activated='1'";
$result = mysql_query($sql, $thecode) or die ('Kan gebruikersnaam niet controleren...<br />Misschien is er een probleem met de database...');
if($remember_me == '1'){
setcookie("email", $email, $hour);
setcookie("password", $password, $hour);
}
$_SESSION['id'] = $row['users_id'];
$_SESSION['email'] = $row['email'];
$_SESSION['password'] = $row['password'];
$_SESSION['logged_in'] = 'true';
$users_sql = "SELECT * FROM users WHERE email = '" . mysql_real_escape_string($_SESSION['email']) . "'";
$getUser = mysql_query($users_sql, $thecode) or die ('Cannot lookup content...<br />Maybe there is a problem with the database');
$rowUser = mysql_fetch_array($getUser);
$success = 'true';
$success_login = 'true';
}
else{
$error_wrong_data = 'true';
$error = 'true';
}
$result = mysql_query($sql, $thecode) or die ('Kan gebruikersnaam niet controleren...<br />Misschien is er een probleem met de database...');
if($remember_me == '1'){
setcookie("email", $email, $hour);
setcookie("password", $password, $hour);
}
$_SESSION['id'] = $row['users_id'];
$_SESSION['email'] = $row['email'];
$_SESSION['password'] = $row['password'];
$_SESSION['logged_in'] = 'true';
$users_sql = "SELECT * FROM users WHERE email = '" . mysql_real_escape_string($_SESSION['email']) . "'";
$getUser = mysql_query($users_sql, $thecode) or die ('Cannot lookup content...<br />Maybe there is a problem with the database');
$rowUser = mysql_fetch_array($getUser);
$success = 'true';
$success_login = 'true';
}
else{
$error_wrong_data = 'true';
$error = 'true';
}
Me query klopt wel als ik die echo, maar hij komt niet in die if, hoe kan dat?
Dennis Kallansee op 10/01/2011 16:59:08:
Me query klopt wel als ik die echo, maar hij komt niet in die if, hoe kan dat?
Dan zal dit dus niet waar zijn.
if($remember_me == '1')
Getallen horen niet tussen quotes.
Toevoeging op 10/01/2011 17:04:51:
- SanThe - op 10/01/2011 16:26:41:
Zet dit bovenin.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
//rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
//rest
?>
Klopt ik had het probleem al gevonden ik moest mn wachtwoord nog converteren naar md5. Bedankt voor alle feedback trouwens hopelijk wordt het toch nog wat :P
Ach ja je moet ergens beginnen met leren.
$_SESSION['id'] = $row['users_id'];
$_SESSION['email'] = $row['email'];
$_SESSION['password'] = $row['password'];
Gebruik mysql_fetch_assoc ipv array.
Gebruik geen OR DIE .
Gebruik of engels of nederlands en niet gemengd.
Ik krijg deze error
Code (php)
1
2
3
2
3
Notice: Undefined index: edit in /customers/xliberty.nl/xliberty.nl/httpd.www/site/thecode/includes/application_top.php on line 31
Notice: Undefined index: do in /customers/xliberty.nl/xliberty.nl/httpd.www/site/thecode/includes/application_top.php on line 58
Notice: Undefined index: do in /customers/xliberty.nl/xliberty.nl/httpd.www/site/thecode/includes/application_top.php on line 58
en deze
Code (php)
1
2
2
Undefined variable: error in /customers/xliberty.nl/xliberty.nl/httpd.www/site/thecode/includes/errors.php on line 2
Notice: Undefined variable: success in /customers/xliberty.nl/xliberty.nl/httpd.www/site/thecode/includes/errors.php on line 28
Notice: Undefined variable: success in /customers/xliberty.nl/xliberty.nl/httpd.www/site/thecode/includes/errors.php on line 28
Waarom zou ik een melding op die sessie moet krijgen?
Dennis Kallansee op 10/01/2011 17:22:37:
Waarom zou ik een melding op die sessie moet krijgen?
Niet op de session maar op $row, die bestaat niet.
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
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
#Inloggen
case "verification":
# Als er niet vanuit een POST gestuurd wordt dan error geven
if($_SERVER['REQUEST_METHOD'] != 'POST'){
$error_no_form = 'true';
$error = 'true';
}
else{
# Omzetten naar variabelen, de meesten vinden het overbodig ik vind het fijner werken
$email = mysql_real_escape_string($_POST['email']);
$password = mysql_real_escape_string($_POST['password']);
$remember_me = mysql_real_escape_string($_POST['rememberme']);
$hour = time()+60*60*24*365;
# Als mail en wachtwoord leeg zijn error geven
if(empty($email) || empty($password)){
$error_user_pass = 'true';
$error = 'true';
}
else{
# Gegevens uit database ophalen.
$sql = "SELECT * FROM users WHERE email='" . $email . "' " . "AND password='" . md5($password) . "' AND activated='1'";
$result = mysql_query($sql, $thecode) or die ('Cannot lookup content...<br />Maybe there is a problem with the database');
# Als er een resultaat is dan het onderstaande uitvoeren
if(mysql_num_rows($result) > 0){
$row = mysql_fetch_assoc($result);
# als onthoud mij aangevinkt is dan een cookie plaatsen
if($remember_me == '1'){
setcookie("email", $email, $hour);
setcookie("password", $password, $hour);
}
# Sessie zetten
$_SESSION['id'] = $row['users_id'];
$_SESSION['email'] = $row['email'];
$_SESSION['password'] = $row['password'];
$_SESSION['logged_in'] = 'true';
# Zorgt voor de ik ben ingelogd als .... zonder de pagina te verversen.
$users_sql = "SELECT * FROM users WHERE email = '" . $_SESSION['email'] . "'";
$getUser = mysql_query($users_sql, $thecode) or die ('Cannot lookup content...<br />Maybe there is a problem with the database');
$rowUser = mysql_fetch_array($getUser);
# Success melding weergeven
$success = 'true';
$success_login = 'true';
}
else{
$error_wrong_data = 'true';
$error = 'true';
}
}
}
break;
case "verification":
# Als er niet vanuit een POST gestuurd wordt dan error geven
if($_SERVER['REQUEST_METHOD'] != 'POST'){
$error_no_form = 'true';
$error = 'true';
}
else{
# Omzetten naar variabelen, de meesten vinden het overbodig ik vind het fijner werken
$email = mysql_real_escape_string($_POST['email']);
$password = mysql_real_escape_string($_POST['password']);
$remember_me = mysql_real_escape_string($_POST['rememberme']);
$hour = time()+60*60*24*365;
# Als mail en wachtwoord leeg zijn error geven
if(empty($email) || empty($password)){
$error_user_pass = 'true';
$error = 'true';
}
else{
# Gegevens uit database ophalen.
$sql = "SELECT * FROM users WHERE email='" . $email . "' " . "AND password='" . md5($password) . "' AND activated='1'";
$result = mysql_query($sql, $thecode) or die ('Cannot lookup content...<br />Maybe there is a problem with the database');
# Als er een resultaat is dan het onderstaande uitvoeren
if(mysql_num_rows($result) > 0){
$row = mysql_fetch_assoc($result);
# als onthoud mij aangevinkt is dan een cookie plaatsen
if($remember_me == '1'){
setcookie("email", $email, $hour);
setcookie("password", $password, $hour);
}
# Sessie zetten
$_SESSION['id'] = $row['users_id'];
$_SESSION['email'] = $row['email'];
$_SESSION['password'] = $row['password'];
$_SESSION['logged_in'] = 'true';
# Zorgt voor de ik ben ingelogd als .... zonder de pagina te verversen.
$users_sql = "SELECT * FROM users WHERE email = '" . $_SESSION['email'] . "'";
$getUser = mysql_query($users_sql, $thecode) or die ('Cannot lookup content...<br />Maybe there is a problem with the database');
$rowUser = mysql_fetch_array($getUser);
# Success melding weergeven
$success = 'true';
$success_login = 'true';
}
else{
$error_wrong_data = 'true';
$error = 'true';
}
}
}
break;
Dit is al beter toch?
Je zet het ongecodeerde password in een cookie. Dat is een veiligheidslek.
Waarom gebruik je steeds de tekst 'true' en niet de boolean true?
Gewijzigd op 10/01/2011 17:38:53 door - SanThe -
Klopt die moet ik nog even md5 converteren. Dat boolean verhaal heb ik nooit zo bij nagedacht gewoon altijd zo gedaan. Die regrl 45 zorgt ervoor dat je meteen kan zien als wie je ingelogd bent voordat de pagina refresht. Anders zie je ingelogd als.... dan refresh en dan pas ingelogd als dennis@xxx
Passwords horen niet in een cookie. De regels 45 enz. kunnen weg omdat je een paar regels daarboven precies dezelfde query uitvoert. Die info is dus exact hetzelfde.
Hoe doe je dan een cookie login? je moet toch ergens op controleren?
cookie gesnift word een MD5 van het wachtwoord nog vrij makkelijk te decoderen is of met een MD5 database is te vergelijken. Een genereerde MD5 uit meerdere velden lijkt me lastiger.
Toch weet ik niet zeker of mijn manier ook helemaal 100% dicht is dus laat het open voor commentaar / kritiek. Ook gebruik zelf liever SHA1 omdat die iets moeilijker te kraken is.
Wat ik meestal deed is een userid in de cookie opslaan en een cookiehash aanmaken. Deze hash was een combinatie van het wachtwoord + username + id. Op deze manier kun je bij het ophalen in de database de MD5 on the fly genereren en controleren of deze overeenkomt. Dit lijkt me al beter als het wachtwoord in MD5 opslaan in een cookie omdat als een Toch weet ik niet zeker of mijn manier ook helemaal 100% dicht is dus laat het open voor commentaar / kritiek. Ook gebruik zelf liever SHA1 omdat die iets moeilijker te kraken is.
Ik genereer een nieuwe hash voor de cookie. Bij elke request word deze gecontroleerd en vervolgens veranderd. (als ik het me goed herinner, tenminste. Het is al een tijd geleden)