Authentification PHP

Fermé
Sephirus
Messages postés
95
Date d'inscription
mardi 17 mars 2009
Statut
Membre
Dernière intervention
25 avril 2013
- 8 oct. 2009 à 17:32
avion-f16
Messages postés
18836
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
5 août 2022
- 9 oct. 2009 à 17:12
Bonjour,

Je voudrai faire un script d'authentification.

Le tout pas compliqué car par de BDD il y a qu'un seul USER (admin).

Ma page s'appelle admin.php

Ce que je voudrai faire c'est un page dynamique, si c'est OK il m'affiche la page et son contenu d'administration, si c'est pas bon, qu'il mette un mesasge d'erreur (déjà fait avec le JS) et qu'il renvoie sur la page de login.

Faut-il faire deux pages ou je peux faire qu'une seule page dynamique ?

Voici mon code :

<div id='login'>

<form action="admin.php" method="post">
<label>Login:</label><br />
<input type="text" size="15" name="login"><br />

<br />

<label>Mot de passe:</label><br />
<input type="password" size="15" name="mdp"><br />
<br />

<input type="submit" value="log" id="login">

</form>

</div>

?>

<?php

extract ($_POST);
if ($login!='admin')

echo "

<script language=javascript>
alert('Bad Login')

</script>";

else if ($mdp!='adminelan')

echo "

<script language=javascript>
alert('Bad Password')

</script>";

?>

Je vous remercie d'avance ;)

5 réponses

avion-f16
Messages postés
18836
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
5 août 2022
4 408
8 oct. 2009 à 17:55
Voici un script de base à mettre sur toutes tes pages.
D'abord, ajoutes cette ligne avant tout caractère (avant le DTD, sans aucun espace avant <?php) :
<?php session_start(); ?>
<!DOCTYPE html ...


Ensuite, dans ton contenu :
<?php
$user = 'admin';
$password = 'adminelan';

if($_SESSION['connected'] === true) { ?>
Autorisé
<?php } else {
    $post_user = trim($_POST['user']);
    $post_password = trim($_POST['password']);
    if(empty($post_user) || empty($post_password)) {
        ?>
<form method="post" action="">
    <p>
        <label>Login</label>
        <input type="text" name="user" />
    </p>
    <p>
        <label>Password</label>
        <input type="text" name="password" />
    </p>
    <p>
        <input type="submit" name="Login" />
    </p>
</form>
        <?php
    } else {
        if($post_user == $user && $post_password == $password) {
            $_SESSION['connected'] = true;
            header('Location: '.$_SERVER["REQUEST_URI"]);
        } else {
            echo 'Mauvaise combinaison';
        }
    }
} ?>
1
Sephirus
Messages postés
95
Date d'inscription
mardi 17 mars 2009
Statut
Membre
Dernière intervention
25 avril 2013
3
9 oct. 2009 à 10:41
Merci !!! Je test çà de suite !
0
Sephirus
Messages postés
95
Date d'inscription
mardi 17 mars 2009
Statut
Membre
Dernière intervention
25 avril 2013
3
9 oct. 2009 à 10:50
Hum problème pour

Notice: Undefined index: connected in C:\wamp\www\ELAN\admin.php on line 39

Notice: Undefined index: user in C:\wamp\www\ELAN\admin.php on line 42

Notice: Undefined index: password in C:\wamp\www\ELAN\admin.php on line 43


if($_SESSION['connected'] === true) { ?>
$post_user = trim($_POST['user']);
$post_password = trim($_POST['password']);

Je ne vois pas trop ce qu'il faut que je rajoute ...
0
graffx
Messages postés
6427
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
2 014
9 oct. 2009 à 11:26
if($_SESSION['user'] === true) { ?>
$post_user = trim($_POST['user']);
$post_password = trim($_POST['password']);


met "user" a la place de "connected", ta fonction trim() n' est pas declarée avant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16
Messages postés
18836
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
5 août 2022
4 408
9 oct. 2009 à 17:12
Mon code fonctionne correctement, je l'ai même testé avant.
Voici le problème :
Notice: Undefined index: connected in C:\wamp\www\ELAN\admin.php on line 39
C'est assez bien expliqué : la variable $_SESSION['connected'] n'est pas définie.
Je pense que ça pourrait provenir du <?php session_start(); ?> qui tu n'aurais pas mis.

J'ai oublié : tu ne peux rien mettre avant mon script parce que la fonction header qui fait une redirection ne fonctionnera plus. Mets donc tout le code de ta page si l'administrateur est connecté à la place de "Autorisé" (DTD compris) et celui de toute la page avec le formulaire à la place du formulaire que j'ai mis.
0