php login script
hier mijn code
(note: ik gebruik normaal een include om mijn database in te lezen maar hier heb ik even de variabelen gewoon ingevuld ;) )
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
session_start(); // Het mogelijk maken om sessions te kunnen gebruiken
$db_database_connect = mysql_select_db("...", mysql_connect("....be.mysql", "...", "..."));
// De verbinding met de database maken
$user = mysql_real_escape_string($_POST["user"]); // De waarde van het gebruikersnaam veld aankrijgen en beveiligen tegen MySQL Injection
$pass = mysql_real_escape_string($_POST["pass"]); // De waarde van het wachtwoord veld aankrijgen en beveiligen tegen MySQL Injection
$pass = md5($pass); // Het wachtwoord encrypten met md5
$pass = substr(md5($pass),0,16).$pass; // Vooraan het wachtwoord een encryptie van het geëncrypteerde wachtwoord toevoegen als salt van 16 tekens
// De query die gaat kijken of de gebruiker bestaat met het ingevulde wachtwoord en meteen ook het id en de level van de gebruiker terug geeft
$res = mysql_query("
SELECT id, level
FROM users
WHERE username='".$user."'
AND password='".$pass."'
");
if (mysql_num_rows($res) == 1) { // Als er maar 1 rij van gevonden is ( 1 gebruiker met deze naam en wachtwoord ) dan loggen we hem in
list($id, $level) = mysql_fetch_array($res);
$_SESSION['user'] = array( // Maak een array $_SESSION['user'] met de nodige informatie
"loggedIn" => true,
"id" => $id,
"level" => $level
);
echo 'logged in';
}
else {
echo 'not logged in'; // Ga na het inloggen naar de opgegeven locatie
}
?>
session_start(); // Het mogelijk maken om sessions te kunnen gebruiken
$db_database_connect = mysql_select_db("...", mysql_connect("....be.mysql", "...", "..."));
// De verbinding met de database maken
$user = mysql_real_escape_string($_POST["user"]); // De waarde van het gebruikersnaam veld aankrijgen en beveiligen tegen MySQL Injection
$pass = mysql_real_escape_string($_POST["pass"]); // De waarde van het wachtwoord veld aankrijgen en beveiligen tegen MySQL Injection
$pass = md5($pass); // Het wachtwoord encrypten met md5
$pass = substr(md5($pass),0,16).$pass; // Vooraan het wachtwoord een encryptie van het geëncrypteerde wachtwoord toevoegen als salt van 16 tekens
// De query die gaat kijken of de gebruiker bestaat met het ingevulde wachtwoord en meteen ook het id en de level van de gebruiker terug geeft
$res = mysql_query("
SELECT id, level
FROM users
WHERE username='".$user."'
AND password='".$pass."'
");
if (mysql_num_rows($res) == 1) { // Als er maar 1 rij van gevonden is ( 1 gebruiker met deze naam en wachtwoord ) dan loggen we hem in
list($id, $level) = mysql_fetch_array($res);
$_SESSION['user'] = array( // Maak een array $_SESSION['user'] met de nodige informatie
"loggedIn" => true,
"id" => $id,
"level" => $level
);
echo 'logged in';
}
else {
echo 'not logged in'; // Ga na het inloggen naar de opgegeven locatie
}
?>
de foutmeldingen die ik krijg zijn:
session_start(): Cannot send session cookie - headers already sent by (output started at ../login.php:1) in .../login.php on line 2
session_start(): Cannot send session cache limiter - headers already sent (output started at ../login.php:1) in ../login.php on line 2 not logged in
kan iemand mij helpen. heb na een tijd zoeken dit forum gezocht en dit leek me het meest actieve nederlandstalige forum.
Alvast bedankt voor de hulp.
Gewijzigd op 09/09/2011 12:35:50 door - SanThe -
ik gebruik een salt van 16 tekens dus ik md5 tot 16 tekens en md5 dan nog eens, dan moeten ze ook nog weten hoeveel letters deze salt bedraagt en dat vergt een hoop meer werk dacht ik dan.. of zit ik totaal verkeerd?
$pass = substr(md5($pass),0,16).$pass;
Je pakt de eerste 16 chars van de md5() en daar plak je de complete md5() aan vast. Dus je verlengt hem eigenlijk. Dat is stukken beter dan verkorten (wat ik in eerste instantie dacht te zien).
Toch hartelijk dank voor jouw reactie!
bom characters er uit.
Welke editor gebruik je? Copy je script eens in Kladblok en sla het dan opnieuw op. Zo haal je de eventuele Zeer hard bedankt voor de snelle reacties en instructies die u gegeven hebt!
Gewijzigd op 09/09/2011 14:07:24 door Arjan -
Bedankt
Toevoeging op 09/09/2011 19:10:45:
Login.php
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
session_start(); // Het mogelijk maken om sessions te kunnen gebruiken
$db_database_connect = mysql_select_db("...", mysql_connect("....be.mysql", "...", "..."));
// De verbinding met de database maken
$user = mysql_real_escape_string($_POST["user"]); // De waarde van het gebruikersnaam veld aankrijgen en beveiligen tegen MySQL Injection
$pass = mysql_real_escape_string($_POST["pass"]); // De waarde van het wachtwoord veld aankrijgen en beveiligen tegen MySQL Injection
$pass = md5($pass); // Het wachtwoord encrypten met md5
$pass = substr(md5($pass),0,16).$pass; // Vooraan het wachtwoord een encryptie van het geëncrypteerde wachtwoord toevoegen als salt van 16 tekens
// De query die gaat kijken of de gebruiker bestaat met het ingevulde wachtwoord en meteen ook het id en de level van de gebruiker terug geeft
$res = mysql_query("
SELECT id, level
FROM users
WHERE username='".$user."'
AND password='".$pass."'
");
if (mysql_num_rows($res) == 1) { // Als er maar 1 rij van gevonden is ( 1 gebruiker met deze naam en wachtwoord ) dan loggen we hem in
list($id, $level) = mysql_fetch_array($res);
$_SESSION['user'] = array( // Maak een array $_SESSION['user'] met de nodige informatie
"loggedIn" => true,
"id" => $id,
"level" => $level
);
echo 'logged in';
}
else {
echo 'not logged in'; // Ga na het inloggen naar de opgegeven locatie
}
?>
session_start(); // Het mogelijk maken om sessions te kunnen gebruiken
$db_database_connect = mysql_select_db("...", mysql_connect("....be.mysql", "...", "..."));
// De verbinding met de database maken
$user = mysql_real_escape_string($_POST["user"]); // De waarde van het gebruikersnaam veld aankrijgen en beveiligen tegen MySQL Injection
$pass = mysql_real_escape_string($_POST["pass"]); // De waarde van het wachtwoord veld aankrijgen en beveiligen tegen MySQL Injection
$pass = md5($pass); // Het wachtwoord encrypten met md5
$pass = substr(md5($pass),0,16).$pass; // Vooraan het wachtwoord een encryptie van het geëncrypteerde wachtwoord toevoegen als salt van 16 tekens
// De query die gaat kijken of de gebruiker bestaat met het ingevulde wachtwoord en meteen ook het id en de level van de gebruiker terug geeft
$res = mysql_query("
SELECT id, level
FROM users
WHERE username='".$user."'
AND password='".$pass."'
");
if (mysql_num_rows($res) == 1) { // Als er maar 1 rij van gevonden is ( 1 gebruiker met deze naam en wachtwoord ) dan loggen we hem in
list($id, $level) = mysql_fetch_array($res);
$_SESSION['user'] = array( // Maak een array $_SESSION['user'] met de nodige informatie
"loggedIn" => true,
"id" => $id,
"level" => $level
);
echo 'logged in';
}
else {
echo 'not logged in'; // Ga na het inloggen naar de opgegeven locatie
}
?>
Ik heb nu deze code op een andere pagina toegevoegd:
rank.php
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
session_start();
$location = "login.html";
if(!isset($_SESSION['user'])){
header('Location: ' .$location); } //indien deze niet bestaat doorverwijzen naar login.html
$level = array_search('level', $_SESSION['user']); //waarde uit array lezen die correspondeert met level
echo $level; //testen om te zien wat output is
?>
session_start();
$location = "login.html";
if(!isset($_SESSION['user'])){
header('Location: ' .$location); } //indien deze niet bestaat doorverwijzen naar login.html
$level = array_search('level', $_SESSION['user']); //waarde uit array lezen die correspondeert met level
echo $level; //testen om te zien wat output is
?>
De output die ik krijg is LoggedIn
Ik zou hier dus eigenlijk de waarde van $level van in index.html willen krijgen.
hoe kan ik dit opolossen: normaal moet ik toch array_search() gebruiken om deze waarde te vinden..
ik wil dit bovenaan elke beveiligde pagina includen om toegang te verstrekken indien het level dit toestaat.
Gewijzigd op 09/09/2011 19:15:20 door Jelle VdB