Login post naar htaccess login
Ik zou graag willen dat met een simpele login verschillende users kunnen inloggen en worden geleid naar verschillende pagina's waar de login nog eens word gepost op een htaccess login is dit mogelijk zonder sql?
voorbeeld login:
www.voorbeeld.nl/login/
Als henk-jan inlogt de data hieronder word gepost voor htaccess login
www.voorbeeld.nl/users/dirk-jan/
(ik ga niet aan sql beginnen want ik ben hier echt niet goed in en heb niet alteveel tijd)
Alvast bedankt, en groetjes!
Gewijzigd op 11/07/2014 14:17:25 door Jeroen dj
Hoewel MySQL(i) alsnog geen overbodige luxe is, waar je op een moment wel eens naar kan kijken.
Ik zou dit ook als advies meegeven en anders inderdaad kijken naar een array
Oh wacht even .. je wilt een vorm van een dubbele login?
1. een login in php
2. een redirect naar een map die met .htaccess beveiligd is
3. (gebeurt dan automatisch) een web-based login (middels .htaccess dus)
Toevoeging op 11/07/2014 18:20:20:
Hier komt een simpel PHP login-voorbeeld zonder database gedoe maar met een array in login.php.
indien je de redirect laat verwijzen naar een map die door middel van een .htaccess beveiligd is met een gebruikersnaam/wachtwoord dan zul je nog een keer moeten inloggen.
index.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Welcome</title>
</head>
<body>
<h1>Welcome on my homepage</h1>
<ul>
<li><a href="login.php">Login</a></li>
<li><a href="secured_area.php">Secured area</a></li>
</ul>
</body>
</html>
<html>
<head>
<meta charset="utf-8">
<title>Welcome</title>
</head>
<body>
<h1>Welcome on my homepage</h1>
<ul>
<li><a href="login.php">Login</a></li>
<li><a href="secured_area.php">Secured area</a></li>
</ul>
</body>
</html>
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
<?php
$message = '';
$users = array(
'Frank' => '1234',
'Rick' => 'abcd',
);
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($users[$_POST['username']]) && $users[$_POST['username']] == $_POST['password'])
{
// login succesfull
$_SESSION['login'] = 1;
$_SESSION['username'] = $_POST['username'];
header('Location: secured_area.php');
exit;
} else {
$message = 'Wrong credentials';
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form action="" method="post">
<table>
<tr>
<td colspan="2"><?php echo $message; ?></td>
</tr>
<tr>
<td>Username:</td><td><input type="text" name="username" /></td>
</tr>
<tr>
<td>Password:</td><td><input type="password" name="password" /></td>
</tr>
<tr>
<td> </td><td><input type="submit" value="Login" /></td>
</tr>
</table>
</form>
</body>
</html>
$message = '';
$users = array(
'Frank' => '1234',
'Rick' => 'abcd',
);
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($users[$_POST['username']]) && $users[$_POST['username']] == $_POST['password'])
{
// login succesfull
$_SESSION['login'] = 1;
$_SESSION['username'] = $_POST['username'];
header('Location: secured_area.php');
exit;
} else {
$message = 'Wrong credentials';
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form action="" method="post">
<table>
<tr>
<td colspan="2"><?php echo $message; ?></td>
</tr>
<tr>
<td>Username:</td><td><input type="text" name="username" /></td>
</tr>
<tr>
<td>Password:</td><td><input type="password" name="password" /></td>
</tr>
<tr>
<td> </td><td><input type="submit" value="Login" /></td>
</tr>
</table>
</form>
</body>
</html>
secured_area.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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// if not logged in then redirect to login page
// add this to every secured page
session_start();
if(!isset($_SESSION['login']) || $_SESSION['login'] != 1)
header('Location: login.php');
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Secured Area</title>
</head>
<body>
<h1>Welcome in the secured area</h1>
<p>Welcome <?php echo $_SESSION['username']; ?></p>
<ul>
<li><a href="index.php">Homepage</a></li>
<li><a href="logout.php">Logout</a></li>
</ul>
</body>
</html>
// if not logged in then redirect to login page
// add this to every secured page
session_start();
if(!isset($_SESSION['login']) || $_SESSION['login'] != 1)
header('Location: login.php');
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Secured Area</title>
</head>
<body>
<h1>Welcome in the secured area</h1>
<p>Welcome <?php echo $_SESSION['username']; ?></p>
<ul>
<li><a href="index.php">Homepage</a></li>
<li><a href="logout.php">Logout</a></li>
</ul>
</body>
</html>
logout.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// logout.php
session_start();
unset($_SESSION['login']);
unset($_SESSION['username']);
header('Location: index.php');
?>
// logout.php
session_start();
unset($_SESSION['login']);
unset($_SESSION['username']);
header('Location: index.php');
?>
Gewijzigd op 11/07/2014 18:23:16 door Frank Nietbelangrijk
Frank Nietbelangrijk op 11/07/2014 18:05:34:
Hey Frank,
Bedankt voor je post ik kom hier erg ver mee.
Ik zit dan nog met 1 probleem,
er zijn nu meerdere users die naar dezelfde pagina gaan
maar ze moeten allemaal naar een verschillende pagina gaan, is dit mogelijk? thanks!
Gewijzigd op 11/07/2014 19:09:05 door Jeroen dj
Verdiep je eens iets meer in arrays. Je moet dan voor iedere gebruiker behalve een gebruikersnaam en wachtwoord ook een pagina opgeven.
PHP gedeelte van 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
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
<?php
$message = '';
$users = array(
array(
'username' => 'Frank',
'password' => '1234',
'url' => '/secure/page1.php'
),
array(
'username' => 'Rick',
'password' => 'abcd',
'url' => '/secure/page2.php'
),
);
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
foreach($users as $user)
{
if($user['username'] == $_POST['username'] && $user['password'] == $_POST['password'])
{
// login succesfull
$_SESSION['login'] = 1;
$_SESSION['username'] = $_POST['username'];
header('Location: ' . $user['url']);
exit;
}
}
$message = 'Wrong credentials';
}
?>
$message = '';
$users = array(
array(
'username' => 'Frank',
'password' => '1234',
'url' => '/secure/page1.php'
),
array(
'username' => 'Rick',
'password' => 'abcd',
'url' => '/secure/page2.php'
),
);
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
foreach($users as $user)
{
if($user['username'] == $_POST['username'] && $user['password'] == $_POST['password'])
{
// login succesfull
$_SESSION['login'] = 1;
$_SESSION['username'] = $_POST['username'];
header('Location: ' . $user['url']);
exit;
}
}
$message = 'Wrong credentials';
}
?>
Gewijzigd op 12/07/2014 00:00:21 door Frank Nietbelangrijk
Ik neem aan dat je niet voor elke user een nieuw PHP-bestand gaat maken?
Frank Nietbelangrijk op 11/07/2014 23:59:26:
Bedankt frank, dit ziet er erg goed uit. ik zit nu nog wel met 2 probleempjes
Als frank inlogt en word doorgestuurd naar pagina /secure/frank, dan kan hij ook gewoon /secure/rick zien als hij dat intypt bij de url omdat frank in is gelogt, en rick zijn pagina niet een bepaalde username vraagt, hoe kan ik dit fixen?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
session_start();
if(!isset($_SESSION['login']) || $_SESSION['login'] != 1)
header('Location: ../../../');
?>
session_start();
if(!isset($_SESSION['login']) || $_SESSION['login'] != 1)
header('Location: ../../../');
?>
En nog een 2e probleempje, voor de code hierboven moet je bestand .php zijn, dit is verder geen probleem, maar als ik inlog en ik word dan doorgestuurd naar de php pagina (die eerst html was) ziet de pagina er raar uit, bepaalde gedeeltes van de html werken dan niet ofzo.
Maar als ik "header('Location: ../../../');" eruit haal laat hij dus dezelfde pagina zien maar dan gewoon goed, en het laad helemaal goed. Maar als ik dus inlog en dezelfde pagina bekijk laad hij niet goed ofzo.
Alvast bedankt!
groetjes
vraag 2: Welke browser heb je? in google chroom kun je met F12 een extra venster openen en dan zie je bij Console de fouten die de browser ziet. Ik vermoedt dat hij je css bestanden niet kan vinden.
stel je hebt de volgende paden:
dan kan vanaf de index.php je style.css gevonden worden met css/style.css
maar vanaf user.php kan dat niet. dan moet je hebben: ../css/style.css
Gewijzigd op 12/07/2014 18:59:01 door Frank Nietbelangrijk