Login Script Revisited id meesturen
Ik heb even een klein vraagje over het login script van Jan Koehoorn. http://www.phphulp.nl/php/tutorials/10/415/920/
Ik zal even kort uitleggen waar ik het login script voor gebruik. Ik ben bezig met een klantenbeheersysteem. Daar kan ik als admin gebruikers aan toevoegen, medewerkers toevoegen en problemen toevoegen. Als de klant inlogt moet hij/zij ook een probleem kunnen toevoegen. en op dat punt gaat het mis! Ik wil namelijk er voor zorgen dat de klant alleen zichzelf kan selecteren bij het toevoegen van een klacht en niet alle klanten die in de database staan. Hieronder staat het stukje code dat ik gebruik om de klanten te selecteren. Ik wil er voor zorgen dat ik een klantID meestuur naar dit stuk zodat alleen de juiste klant geselecteerd word.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<tr>
<td>
<I>Selecteer Klant:</I><BR>
<BR>
<select name="klant">
<option SIZE="30" value=""> Selecteer uw naam </option>
<?php
$klanten = "SELECT KlantID, Klantnaam FROM klanten WHERE Klantid = '".$_GET['id']."';";
$klant = MYSQL_QUERY($klanten);
while($klantnaam = MYSQL_FETCH_ARRAY($klant))
{
?>
<option SIZE="30" value="<?php echo $klantnaam['KlantID']; ?>"><?php echo $klantnaam['Klantnaam']; ?></option>
<?
}
?>
</select>
</td>
</tr>
<td>
<I>Selecteer Klant:</I><BR>
<BR>
<select name="klant">
<option SIZE="30" value=""> Selecteer uw naam </option>
<?php
$klanten = "SELECT KlantID, Klantnaam FROM klanten WHERE Klantid = '".$_GET['id']."';";
$klant = MYSQL_QUERY($klanten);
while($klantnaam = MYSQL_FETCH_ARRAY($klant))
{
?>
<option SIZE="30" value="<?php echo $klantnaam['KlantID']; ?>"><?php echo $klantnaam['Klantnaam']; ?></option>
<?
}
?>
</select>
</td>
</tr>
Dat KlantID wil ik meesturen vanaf de hoofdpage.php waar een link staat naar de klachttoevoegen.php pagina. Dit ziet er als volgt uit:
Code (php)
Maar op een of andere manier pakt ie dat KlantID nog niet. Ik dacht/denk zelf persoonlijk dat ik die wel uit authenticatie.php kon pakken omdat ik hem in de hoofdpage.php require.
De authenticatie.php pagina ziet er als volgt uit:
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
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
<?php
session_start ();
// de gegevens voor de DB connectie
require 'connect2.php';
// terug naar de loginpagina. Met sleep bouwen we een pauze in tegen brute-forcen
function to_login () {
sleep (3);
header ('Location: http://80.57.15.215/Klantenbeheer/'); // NIET VERGETEN AAN TE PASSEN!!!
}
function check_login ($username, $password) {
// query opstellen
// je tabel kan er heel simpel uitzien:
// id INT(11) auto_increment
// username VARCHAR 64
// password VARCHAR 64. Het password sla je op in je DB met een SHA1 hash
// daarom staat SHA1 dus ook in de query
$sql = "
SELECT KlantID
FROM klanten
WHERE Username = '" . mysql_real_escape_string ($username) . "'
AND Password = '" . mysql_real_escape_string ($password) . "'
";
if ($res = mysql_query ($sql)) {
if (mysql_num_rows ($res) == 1) {
// de query is gelukt en we hebben 1 resultaat
$row = mysql_fetch_assoc ($res);
$_SESSION['id'] = $row['id'];
$_SESSION['logged_in'] = true;
}
else {
to_login ();
}
}
else {
to_login ();
}
}
// eerst maar eens kijken of $_SESSION['logged_in'] bestaat
if (!isset ($_SESSION['logged_in'])) {
// nog niet eerder ingelogd, maar misschien heeft iemand net het loginformulier ingevuld?
if (isset ($_POST['username'], $_POST['password'])) {
check_login ($_POST['username'], $_POST['password']);
}
else {
to_login ();
}
}
?>
session_start ();
// de gegevens voor de DB connectie
require 'connect2.php';
// terug naar de loginpagina. Met sleep bouwen we een pauze in tegen brute-forcen
function to_login () {
sleep (3);
header ('Location: http://80.57.15.215/Klantenbeheer/'); // NIET VERGETEN AAN TE PASSEN!!!
}
function check_login ($username, $password) {
// query opstellen
// je tabel kan er heel simpel uitzien:
// id INT(11) auto_increment
// username VARCHAR 64
// password VARCHAR 64. Het password sla je op in je DB met een SHA1 hash
// daarom staat SHA1 dus ook in de query
$sql = "
SELECT KlantID
FROM klanten
WHERE Username = '" . mysql_real_escape_string ($username) . "'
AND Password = '" . mysql_real_escape_string ($password) . "'
";
if ($res = mysql_query ($sql)) {
if (mysql_num_rows ($res) == 1) {
// de query is gelukt en we hebben 1 resultaat
$row = mysql_fetch_assoc ($res);
$_SESSION['id'] = $row['id'];
$_SESSION['logged_in'] = true;
}
else {
to_login ();
}
}
else {
to_login ();
}
}
// eerst maar eens kijken of $_SESSION['logged_in'] bestaat
if (!isset ($_SESSION['logged_in'])) {
// nog niet eerder ingelogd, maar misschien heeft iemand net het loginformulier ingevuld?
if (isset ($_POST['username'], $_POST['password'])) {
check_login ($_POST['username'], $_POST['password']);
}
else {
to_login ();
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Michel
verder niets met je vraag te maken maar doe jezelf een plezier en hou al je variabelennamen, tabelnamen, veldnamen allemaal met kleine letters. hoofdletters gaat vroeg of laat iedereen wel eens mee de mist in
Heeft er verder iemand een oplossing op mijn probleem?
Groetjes
Michel