AIDE : authentification en php

Résolu/Fermé
Marion - 23 nov. 2009 à 14:41
 Marion - 23 nov. 2009 à 16:22
Bonjour,

Voilà, il me faut créer une page protégée dans mon site. Ça a l'air tout simple, mais le mot de passe et le login entré dans mon code ne marche pas! Il est toujours indiqué que "Vous ne pouvez accéder à cette page". Ça fais 1h30 que je suis sur ce truc, et j'arrive pas à comprendre ce qui ne va pas! Une aide objective serait vraiment la bienvenue... merci d'avance!!!

Voici mon code entier de ma page index.php :

<?php
$user = "a";
$pwd = "a";

function auth(){

$realm="Authentification PHPindex";

Header("WWW-Authenticate: Basic realm='".$realm."'");
Header("HTTP/1.0 401 Unauthorized");

echo "Vous ne pouvez accéder à cette page";
exit;
}

if( !isset($PHP_AUTH_USER) && !isset($PHP_AUTH_PW) ) {
auth();
}
else {
if( $PHP_AUTH_USER==$user && $PHP_AUTH_PW==$pwd ) {
echo "Bienvenue sur ce site";
}
else{
auth();
}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>RIDEON.FR (Béthune) [ADMINISTRATION DU SITE]</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<META name="author" content="Marionk"/>
</head>

<body>
<p>salut</p>

</body>
</html>

10 réponses

question a un million, tu ne peux pas utiliser de .htaccess ?
0
c'est plus simple à utiliser?
0
Le mot de passe fonctionne mais j'ai cette grosse erreur, j'avais essayer tout à l'heure.
Elle est du à quoi en général? :


Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
0
ton hebergeur ne te permet peut etre pas d'avoir des permissions de fichier si elevé !

renseigne toi sur les .htaccess c'est la même chose (exactement la meme) sinon tu peut faire ca avec du code :

$user = "a";
$pass = "a";

if (isset($_POST) &&$login=$_POST['login'] && $pass = $_POST['pass'] ) {

echo "bon mot de passe";

}

<form method="post" action="<?php echo $_SERVER['php_self']; ?>">
<input type="text" name="login">
<input type="text" name="pass">
<input type="submit">
</form>
0
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
23 nov. 2009 à 15:20
heuuu, pourquoi ne pas stocké tes mots de passe et identifiants dans une base de données, et faire l'authentification par des requêtes sql?


moi je dis sa mais je dis rien :x
0
parce que c'est une perte de temps et d'espace de créer une base de données pour un accès à 1 voir 2 utilisateurs. (merci qd même pour ta proposition :) )

en effet je dois avoir un problème avec l'herbergeur... donc je vais faire comme Samy m'a dit.

La question que je me pose maintenant, c'est au niveau de la sécurité quand on fait un formulaire tout simple comme ça?
0
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
23 nov. 2009 à 15:28
alors j'ai plusieurs questions,
pourquoi mettre un formulaire d'authentification si tu n'as que deux personne qui vont se connecter... ??
Si tu tiens tellement à faire une authentification fais une base avec une seul table utilisateur, cela te prendra environ 100Ko (ce qui est ridicule)
et pour la sécurisation de ton authentification tu pourrait ajouter des require once (pour proteger tes pages!!) c'est un minimum...

0
Mais les données entrées par l'utilisateur, avec des requêtes SQL, tu les met dans quoi? faut faire forcément un formulaire??
0

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

Posez votre question
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
23 nov. 2009 à 15:45
Les requetes sql seront invisible à ton utilisateur, tu fait ton formulaire normal, et dans ton code, suivant la methode que tu utilise (GET ou POST) tu ajoutera des $GET['nom_de_ton_champs'] ou $POST['nom_de_ton_champs'], c'est tout, si tu as besoin de plus d'aide mp moi...
0
oui donc je ne comprend pas l'intérêt d'aller chercher le mot de passe et login dans une base de données plutôt que d'utiliser des variables login et mot de passe qui se trouve juste au dessus dans le code?
c'est peut être plus sécurisé ?! mais bon, explique moi ce que tu veux dire stp
0
pas vraiment d'interet a faire une base si c'est juste pour faire une base et compliquer le truc, le mieu c'est un .htaccess...


en gros si tu fais ton site :

http://monsite.com/admin/index.php
tu met ton formulaire et si il est bon tu redirige sur une page qui créer des articles :
http://monsite.com/admin/article.php

là si le mec connais le nom de la page il peut tapper directement l''adresse au dessus et s'y rendre !

le moyen de contrer ça ? faire un systeme de session ! et tu test la session a chaque fois, si c'est trop dur et trop bete de perdre du temps là dessus va faire un tour là bas :
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/918580-protegez-un-dossier-avec-un-htaccess

tutorial simple et efficace !

sinon pour repondre a ta question non c'est très sécurisé de tout mettre dans le code (et meme plus que de tout mettre en base de donnée si tu n'as pas un très bon nveau, ca évite les injections SQL)
0
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
23 nov. 2009 à 15:55
Et bien il serait tout a fait simple de te hacker tes mots de passe qui serait enregistrer par de simple variables...
de plus si je me trompe pas, de nos jours il existe meme des logiciels qui te permette d'afficher les source php d'un site.... (à vérifier)
la solutions de la base de données te donne une protection supplementaire! et sa te fera travailler les bases surtout que la ce n'est pas super difficile, une base, une table, deux champs ...
0
euh comment tu hack les mots de passe contenu dans des variables ? ...

Le php s'execute coté serveur donc pas vraiment de possibilité d'afficher la source en deux clic :p

t'image le bordel sinon ? on pourrai aller voir le fichier connexion.php et chopper les mot de passe de la base de donnée !

mais je le repete autant utiliser .htacces et .htpwd ca serai beaucoup plus simple pour proteger un repertoire (autant faire confiance a apache)
0
bon c'est bon pour .htaccess, ça fonctionne. Tout à l'heure j'avais pas imprimé dans mon cerveau les histoires de mot de passe cryptés dans le .htpasswd....du coup ahah c'est pour ça que mes mots de passe de fonctionnaient pas!!!! .......................................

Voilà plein de temps perdu pour un petit... mais bon c'est ça qu'on apprend!

En tout cas, c'est super pratique ce .htaccess car ça permet de protéger un répertoire entier c'est ça? ce que je dois faire, c'est un systeme de news différentes que la personne pourra elle même mettre à jour en ce connectant à la partie admin. Là, si je veux répartir des taches sur différentes pages php, j'ai même plus a réfléchir à des problèmes de sécurité sur toutes les pages, tout se fait automatiquement si je ne me trompe pas?

Merci pour votre aide!
0
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
23 nov. 2009 à 16:05
je pourrait te montrer tres simplement comment faire, mais cela est interdit ^^"
mais regard du coté de la recuperation de la donnée, n'oublie psa qu'elle est donnée par l'utilisateur, et que n'importe quoi peut être écrit !!
0
et alors ?

C'est le principe de l'injection SQL en base de donnée et ca c'est risquée, mais sinon ca ne crains pas grand chose, puisque le code renvoyé par le formulaire est traité comme une chaine et ne sera pas executé tu peut mettre des if et des exit() et des show_source() ca ne fera rien :) et puis ya pleins de fonction pour traiter les données (addslash par exemple)
0