Login post naar htaccess login

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen dj

Jeroen dj

11/07/2014 14:10:22
Quote Anchor link
Hallo iedereen,
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
 
PHP hulp

PHP hulp

29/04/2024 08:24:40
 
- Ariën  -
Beheerder

- Ariën -

11/07/2014 14:17:35
Quote Anchor link
Je zou kunnen kijken naar het gebruik van array's.
Hoewel MySQL(i) alsnog geen overbodige luxe is, waar je op een moment wel eens naar kan kijken.
 
Stefan WM

Stefan WM

11/07/2014 14:33:33
Quote Anchor link
In jouw geval hoeft MySQL(i) niet eens ingewikkeld te zijn en gaat het je denk ik zelfs tijd besparen.
Ik zou dit ook als advies meegeven en anders inderdaad kijken naar een array
 
Frank Nietbelangrijk

Frank Nietbelangrijk

11/07/2014 18:05:34
Quote Anchor link
een post op een htaccess ?

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>



login.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>&nbsp;</td><td><input type="submit" value="Login" /></td>
            </tr>
        </table>
        </form>
    </body>
</html>


secured_area.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


logout.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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');
?>
Gewijzigd op 11/07/2014 18:23:16 door Frank Nietbelangrijk
 
Jeroen dj

Jeroen dj

11/07/2014 19:08:05
Quote Anchor link
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
 
Frank Nietbelangrijk

Frank Nietbelangrijk

11/07/2014 23:59:26
Quote Anchor link
Ja natuurlijk!

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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';
}

?>
Gewijzigd op 12/07/2014 00:00:21 door Frank Nietbelangrijk
 
- Ariën  -
Beheerder

- Ariën -

12/07/2014 00:46:50
Quote Anchor link
Of je pagina af laten hangen van de username..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
header('Location: /secure/page?user=' . $user['username']);


Ik neem aan dat je niet voor elke user een nieuw PHP-bestand gaat maken?
 
Jeroen dj

Jeroen dj

12/07/2014 18:30:06
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
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
 
Frank Nietbelangrijk

Frank Nietbelangrijk

12/07/2014 18:58:05
Quote Anchor link
vraag 1: Dat moet je dan oplossen in het PHP gedeelte van securd_area.php. Hier wordt nu enkel gecontroleerd of je ingelogd bent. Je hebt nog de beschikking over $_SESSION['username'].. je kunt dus nog een testje doen om te zien of $_SESSION['username'] != 'Rick'

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($_SESSION['username'] != 'Rick')
{

    header('Location: login.php');
}

?>

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
root
  - [css]
      - style.css
  - [subdir]
      - user.php
  - index.php


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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.