Hulp gevraagd - Multiple User Log in Script (de zoveelste :))
Bij deze doe ik een beroep op julie behulpzaamheid en vraag ik jullie mij te helpen!
Ik zal hieronder het script plaatsen wat ik wil gebruiken en wat ook prima werkt, het is echter zo dat met dit script het mogelijk is om in te loggen in een afgeschermde omgeving, maar een ieder die inlogt komt op de zelfde pagina terecht.
Nu wil ik voor ieder ingelogt persoon een eigen pagina hebben waarop zij persoonlijke info kunnen vinden.
Hier het huidige script
index.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
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
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
<?php
ob_start();
session_start();
error_reporting(E_ALL);
include "config.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Login</title>
</head>
<body>
<div align="center">
<?php
if($_SERVER['REQUEST_METHOD']=="POST"){
# Er is ingelogd, controleer alles
$naam = $_POST['usrnaam'];
$pass = md5(trim($_POST['adminpassw']));
foreach($admin as $adm=>$admkey){
if($naam==$admkey['name']
&& $pass==$admkey['pass']){
# Alles klopt, zet de sessies goed en login
$_SESSION['loggedin'] = $naam;
$_SESSION['loggedinnr'] = $adm;
$_SESSION['loggedintype'] = $admkey['type'];
header("location: loggedin/index.php");
exit();
}
}
# De login en/of pass was/waren niet correct
echo '<b><font color="red">Dit is niet correct</font></b>';
}
# Indien er al ingelogd is wordt de gebruiker doorgestuurd
if(isset($_SESSION['loggedin'])
&& $_SESSION['loggedin']==$admin[$_SESSION['loggedinnr']]['name']){
header("location: loggedin/");
exit();
}
?>
<table border="1" width="30%" bordercolor="#FF9933" bgcolor="#FF9933">
<tr>
<td>
<p align="center"><b>Welkom op de admin site<br />
</b></td>
</tr>
<tr>
<td>
<form action="" method="post">
<p align="center"><b>Username: <br />
</b> <input type="text" name="usrnaam"><br><br />
<b>Password: <br></b> <input type="password" name="adminpassw"><br /><br />
<input type="submit" value="Login"><br />
</form>
</td>
</tr>
</table>
</div>
</body>
</html>
ob_start();
session_start();
error_reporting(E_ALL);
include "config.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Login</title>
</head>
<body>
<div align="center">
<?php
if($_SERVER['REQUEST_METHOD']=="POST"){
# Er is ingelogd, controleer alles
$naam = $_POST['usrnaam'];
$pass = md5(trim($_POST['adminpassw']));
foreach($admin as $adm=>$admkey){
if($naam==$admkey['name']
&& $pass==$admkey['pass']){
# Alles klopt, zet de sessies goed en login
$_SESSION['loggedin'] = $naam;
$_SESSION['loggedinnr'] = $adm;
$_SESSION['loggedintype'] = $admkey['type'];
header("location: loggedin/index.php");
exit();
}
}
# De login en/of pass was/waren niet correct
echo '<b><font color="red">Dit is niet correct</font></b>';
}
# Indien er al ingelogd is wordt de gebruiker doorgestuurd
if(isset($_SESSION['loggedin'])
&& $_SESSION['loggedin']==$admin[$_SESSION['loggedinnr']]['name']){
header("location: loggedin/");
exit();
}
?>
<table border="1" width="30%" bordercolor="#FF9933" bgcolor="#FF9933">
<tr>
<td>
<p align="center"><b>Welkom op de admin site<br />
</b></td>
</tr>
<tr>
<td>
<form action="" method="post">
<p align="center"><b>Username: <br />
</b> <input type="text" name="usrnaam"><br><br />
<b>Password: <br></b> <input type="password" name="adminpassw"><br /><br />
<input type="submit" value="Login"><br />
</form>
</td>
</tr>
</table>
</div>
</body>
</html>
config.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$admin[0]['name'] = "admin";
$admin[0]['pass'] = "098f6bcd4621d373cade4e832627b4f6"; ### een md5 gecodeerd wachtwoord, in dit geval (test)
$admin[0]['type'] = 2;
$admin[1]['name'] = "test";
$admin[1]['pass'] = "098f6bcd4621d373cade4e832627b4f6";
$admin[1]['type'] = 1;
$admin[2]['name'] = "test";
$admin[2]['pass'] = "098f6bcd4621d373cade4e832627b4f6";
$admin[2]['type'] = 0;
/*
Rechten:
0 = gewone user
1 = moderator
2 = administrator
*/
?>
$admin[0]['name'] = "admin";
$admin[0]['pass'] = "098f6bcd4621d373cade4e832627b4f6"; ### een md5 gecodeerd wachtwoord, in dit geval (test)
$admin[0]['type'] = 2;
$admin[1]['name'] = "test";
$admin[1]['pass'] = "098f6bcd4621d373cade4e832627b4f6";
$admin[1]['type'] = 1;
$admin[2]['name'] = "test";
$admin[2]['pass'] = "098f6bcd4621d373cade4e832627b4f6";
$admin[2]['type'] = 0;
/*
Rechten:
0 = gewone user
1 = moderator
2 = administrator
*/
?>
/loggedin/auth.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
include "../config.php";
if(!isset($_SESSION['loggedin']) ||
$_SESSION['loggedin'] != $admin[$_SESSION['loggedinnr']]['name']){
header("location: logout.php");
exit();
}
function checkAuth($type=0){
if(is_numeric($type)){
if($_SESSION['loggedintype'] < $type){
echo '<div style="color:red; text-align:center;">Deze pagina is niet voor jou ogen bestemd<br />';
echo '<a href="'.$_SERVER['HTTP_REFERER'].'">Klik hier om terug te gaan</a></div>';
exit();
}
}
}
?>
include "../config.php";
if(!isset($_SESSION['loggedin']) ||
$_SESSION['loggedin'] != $admin[$_SESSION['loggedinnr']]['name']){
header("location: logout.php");
exit();
}
function checkAuth($type=0){
if(is_numeric($type)){
if($_SESSION['loggedintype'] < $type){
echo '<div style="color:red; text-align:center;">Deze pagina is niet voor jou ogen bestemd<br />';
echo '<a href="'.$_SERVER['HTTP_REFERER'].'">Klik hier om terug te gaan</a></div>';
exit();
}
}
}
?>
/loggedin/index.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
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
<?php
/* Deze 3 regels zijn het enige vereiste om te controleren of er is ingelogd */
ob_start();
session_start();
include("auth.php");
checkAuth();
/* Tot hier dus ;-) */
error_reporting(E_ALL);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Administratie || Home</title>
</head>
<body>
<table border="0" width="100%" height="100%" bgcolor="#FF9900">
<tr>
<td height="98"> </td>
<td height="98" align="center" width="50%"><a href="logout.php">logout [<?php echo $_SESSION['loggedin'] ?>]</a></td>
</tr>
<tr>
<td><a href="testpagina.php">Klik hier om naar<br />de testpagina te gaan</a></td>
<td> </td>
</tr>
</table>
</body>
</html>
/* Deze 3 regels zijn het enige vereiste om te controleren of er is ingelogd */
ob_start();
session_start();
include("auth.php");
checkAuth();
/* Tot hier dus ;-) */
error_reporting(E_ALL);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Administratie || Home</title>
</head>
<body>
<table border="0" width="100%" height="100%" bgcolor="#FF9900">
<tr>
<td height="98"> </td>
<td height="98" align="center" width="50%"><a href="logout.php">logout [<?php echo $_SESSION['loggedin'] ?>]</a></td>
</tr>
<tr>
<td><a href="testpagina.php">Klik hier om naar<br />de testpagina te gaan</a></td>
<td> </td>
</tr>
</table>
</body>
</html>
/loggedin/logout.php
Code (php)
/loggedin/testpagina.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
/* Deze 3 regels zijn het enige vereiste om te controleren of er is ingelogd */
ob_start();
session_start();
include("auth.php");
checkAuth(2);
/* Tot hier dus ;-) */
error_reporting(E_ALL);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Administratie || Test pagina</title>
</head>
<body>
<table border="0" width="100%" height="100%" bgcolor="#FF9900">
<tr>
<td height="98"> </td>
<td height="98" align=center width="50%"><font color=green><b><?php echo "Welkom ".$_SESSION['loggedin']?></b></font><br />
<a href="logout.php">logout</a></td>
</tr>
<tr>
<td><a href=index.php>Terug naar Home</a></td>
<td> </td>
</tr>
</table>
</body>
</html>
/* Deze 3 regels zijn het enige vereiste om te controleren of er is ingelogd */
ob_start();
session_start();
include("auth.php");
checkAuth(2);
/* Tot hier dus ;-) */
error_reporting(E_ALL);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Administratie || Test pagina</title>
</head>
<body>
<table border="0" width="100%" height="100%" bgcolor="#FF9900">
<tr>
<td height="98"> </td>
<td height="98" align=center width="50%"><font color=green><b><?php echo "Welkom ".$_SESSION['loggedin']?></b></font><br />
<a href="logout.php">logout</a></td>
</tr>
<tr>
<td><a href=index.php>Terug naar Home</a></td>
<td> </td>
</tr>
</table>
</body>
</html>
Ik heb het inmiddels 1 keer voor elkaar gekregen om 2 gebruikers in 2 verschillende pagina's terecht te laten komen na het inloggen, maar per ongeluk heb ik dit weer gewist :(
Is er iemand die mij hiermee kan helpen of evt. tips geven, rekening houdende met mijn zeer, maar dan ook echt zeer beperkte kennis van PHP.
gewoon na het inloggen naar ?id=65 oid laten gaan en dan op die pagina kijken welk id bij welke persoon hoort
Het script is een bestaand script, ik heb getracht hier wijzigingen in aan te brengen waardoor het meer aan mijn wensen zou voldoen, maar dat is finaal verkeerd gegaan, dit forum is dus ook een noodgreep.
Wat jij nu zegt, wat 'gewoon' zou moeten zijn is voor mij abracadabra, dus als je wat specifieker zou willen zijn zou ik dat zeer op prijs stellen ;)
Toevoeging op 10/09/2010 22:30:36:
Wat ik dus wil is jantje logt in met zijn wachtwoord, dan moet jantje op pagina jantje.php, truusje dan op truusje.php enz.
Kan dat met dit script?
Zo ja, hoe ga ik dat voor elkaar krijgen?
Zo nee, wat heb ik nodig om dit wel voor elkaar te krijgen?
Bij voorbaat dank!
Anyway, wat Je eigenlijk moet willen is afhankelijk van de user id de bijbehorende (persoonlijke) data uit een database halen. Daar moet je wel uit kunnen komen met tuts en Google, mocht het dan nog niet lukken dan heb je altijd nog wel weer dit forum:)
Dan heb je de mogelijkheid om een UserId op te halen. Als het zoals Vincent aangaf via de URL gebeurd kun je $_GET['id'] gebruiken.
Ik weet niet precies wat het verschil is tussen jou loggedin/index.php en die loggedin/testpagina.php
Maar in de index.php moet je de id van de ingelogde gebruiker zien te achterhalen.
Vandaaruit kun je een query sturen naar de browser om daarin de specieke data op te halen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
//Haal de gegevens van de persoon uit de database
$query = "SELECT * FROM tabelnaam WHERE naam='$_SESSION[loggedin]'";
if(mysql_query($query)) {
if(mysql_num_rows($query) != false) {
//Fetch alle data
$fetch = mysql_fetch_assoc($query);
print_r($fetch);
}
}
else {
die(mysql_error());
}
?>
//Haal de gegevens van de persoon uit de database
$query = "SELECT * FROM tabelnaam WHERE naam='$_SESSION[loggedin]'";
if(mysql_query($query)) {
if(mysql_num_rows($query) != false) {
//Fetch alle data
$fetch = mysql_fetch_assoc($query);
print_r($fetch);
}
}
else {
die(mysql_error());
}
?>
Heb nu even print_r(); gebruikt zodat je alle velden uit je table te zien krijgt en deze kunt gaan verwerken: $fetch['naam'], like this.
Het probleem is dat alleen dat ik er weinig van begrijp.
Ik denk dat ik maar eens een ontzettend dik boek "Php voor Dummies" ga aanschaffen :).
Ik moet erkennen, denk ik, dat ik simpelweg te weinig kennis bezit om dit werkende te krijgen, probleem is wel dat ik het wel heel dringend nodig heb.
Kan iemand mij misschien een tip geven hoe ik dit het snelst voor elkaar kan krijgen?
Bij voorbaat dank!
edit: wat ik nog even moet vertellen misschien, is dat ik de code zoals deze bovenin het topic staat uiteraard niet zelf heb geschreven, misschien dat dat voor enige verwarring heeft gezorgd?!
Gewijzigd op 13/09/2010 10:21:37 door Rinus Schuurman
Mocht je voor een ieder verschillende pagina's willen, zul je daar een afvraging uit bv een database kunnen/moeten gaan doen (obv $_SESSION['loggedin']) en op basis daarvan gegevens moeten laten zien.
Dit houdt in dat ik begrijp wat jullie bedoelen, maar dat ik nog niet echt in de gaten heb hoe ik dit moet toepassen dmv php.
Op dit moment ben ik bezig met een (online) cursus php en ik hoop dat dit mij kennis genoeg geeft om met jullie input verder te werken.
Obelix en Idefix, wat jij zegt klopt inderdaad, iedereen die nu maar de juist combinatie inlognaam en wachtwoord heeft wordt naar één en de zelfde pagina verwezen, dit zou dus voor iedereen een andere pagina moeten zijn, althans... er moet andere info zichtbaar worden.