Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/06/2007, 19h11   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 46
Points : 14
Points : 14
Par défaut [Sécurité] Authentification en php

Bonjour, je souhaiterais faire un module d'identification simple avec login et mots de passe, tout en gardant l'id de l'users dans la session pour reutiliser plus tard.

Donc j'ai commencer a faire
Code :
1
2
3
4
 
<?php
session_start();
?>
Pour initialiser ma session.

Aprés je fais le code pour lancer l'identification.

Code :
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
 
if (isset($_POST["login"]) && isset($_POST["mdp"]))
{ 
		$mdp=$_POST["mdp"];
		$login=$_POST["login"];
 
			$sql = "SELECT * FROM acces_prof WHERE login_acces_prof = '$login' AND mdp_acces_prof = '$mdp'";
			$result = mysql_query($sql, $connect);
			$row = mysql_fetch_array($result);
 
echo (" <p><a href='admin.php'>Panneau d'administration</a></p> ");
echo (" <p><a href='index.php?delog'>Deconnecter</a></p>");		
}
 
else
{
?>
          	<form action="index.php?action=login" id="identprof" method="post">
            <label for="login">Login : </label>
            <br />
            <input type="text" id="login" name="login" value=""  size="15"/>
            <br />
            <label for="mdp">Mots de passe : </label>
            <br />
            <input type="password" id="mdp" name="mdp" value="" size="15"/>
            <div class="clr" style="padding:6px; _padding:0px;"></div>
            <input type="submit" value="S'identifier" class="identifier" style="width:90px;"/>
          	</form>
<?php
}
?>
Mais j'ai aucune verif de faites :
Comment il faut faire pour que si le login et mdp est pas correcte affiche un message d'erreur et remettre le formulaire.
Et aussi j'ai des erreurs mysql quand le login ou le mots de passe est pas bon.

Et s'il est bien loguer, il va sur la page mapage.php.
DrOOMMgba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 23h43   #2
Membre émérite
 
Avatar de sharrascript
 
Homme Franck
Développeur Web indépendant
Inscription : avril 2007
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Franck
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web indépendant

Informations forums :
Inscription : avril 2007
Messages : 678
Points : 900
Points : 900
Bonsoir,

Dans un premier temps essaie plutôt cette synthaxe:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (isset($_POST["login"]) && isset($_POST["mdp"]))
{ 
		$mdp=$_POST["mdp"];
		$login=$_POST["login"];
 
			$sql = "SELECT * FROM acces_prof WHERE login_acces_prof = '$login'";
$result = mysql_query($sql, $connect);
$row = mysql_fetch_assoc($result);
if ($row[mdp_acces_prof]==  $mdp)
    {
     //Si le MDP est BON
     [...]
     }
else
     {
      //SINON
      [...]
      }		
}
Bon, j'ai fais cours, suis fatigué^^, mais l'idée est mise...
Tiens nous au courant ++
__________________
LudiKreation Pour un web ludique et son Blog | CapRumbo pour un peu d'évasion | ChaOdisiaque Club Passion Rôliste |SierrElben le Jeu de rôle
sharrascript est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2007, 02h10   #3
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
....oui..Je reprend la suite ..Dans la boucle des IF, tu fais :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
if ($row[mdp_acces_prof]==  $mdp)
    {
     //Il vaut mieux initialiser si jamais ca existe déjà : on fait table rase
     unset($_SESSION['login']);
    unset($_SESSION['id']);
 
    //Cette variable servira dans tes autres pages à tester si l'utilisateur est bien logué....
    $_SESSION['login']='yes';
    //Et celle-ci te sert à garder l'id de l'utilisateur
   $_SESSION['id']=$row['id'];
    header("Location :mapage.php");
     }
else
     {
      echo "Erreur de login";
      }		
}
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2007, 11h33   #4
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 46
Points : 14
Points : 14
Merci d'avoir répondu,
donc j'ai fais çà : avant de me coucher hier

la fonction login() me permet de recevoir une fenetre de type alert() mais en ajax avec un message.

Code :
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
<?php
if (isset($_POST["login"]) && isset($_POST["mdp"]))
{ 
		$mdp=$_POST["mdp"]; $login=$_POST["login"]; $nb=0;
 
		if ( $mdp == "" and $login == "" ) { echo ("<script type='text/javascript'>login();</script>");}
 
			$sql = "SELECT * FROM acces_prof WHERE login_acces_prof = '$login' AND mdp_acces_prof = '$mdp'";
			$result = mysql_query($sql, $connect);
			$row = mysql_fetch_array($result);
 
			$nb = count($row['id_acces_prof']);
			if ( $nb == 0 ) { echo ("<script type='text/javascript'>login();</script>"); } else { $_SESSION['id_pro'] = $row['id_acces_prof'];}
}
 
if (isset($_SESSION['id_pro']))
{
echo (" <p><a href='admin.php'>Panneau d'administration</a></p> ");
echo (" <p><a href='index.php?delog'>Deconnecter</a></p>");
}
else
{
?>
          	<form action="index.php" id="identprof" method="post">
            <label for="login">Login : </label>
            <br />
            <input type="text" id="login" name="login" value=""  size="15"/>
            <br />
            <label for="mdp">Mots de passe : </label>
            <br />
            <input type="password" id="mdp" name="mdp" value="" size="15"/>
            <div class="clr" style="padding:6px; _padding:0px;"></div>
            <input type="submit" value="S'identifier" class="identifier" style="width:90px;"/>
          	</form>
<?php
}
?>
J'ai testé, sans remplir les champs me mets message d'alert donc ok,
et donnant de faux identifiant et mots de passe message d'alert donc ok,
et quand je mets le bons login & mdp il affiche mon echo donc ok,

mais quand je mets header(location:mapage.php);
me mets message ne peut modifier header.... ? :
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\unitedprod\index.php:13) in c:\program files\easyphp1-8\www\unitedprod\index.php

a ma ligne il a mes css.

C'est du a quoi ?
DrOOMMgba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2007, 11h49   #5
Membre émérite
 
Avatar de sharrascript
 
Homme Franck
Développeur Web indépendant
Inscription : avril 2007
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Franck
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web indépendant

Informations forums :
Inscription : avril 2007
Messages : 678
Points : 900
Points : 900
rebonjour ,

Indication:

ATTENTION, le header() doit être utiliser sans que RIEN ne soit interprété en HTML avant!! Donc si tu as un echo ou si tu as affiché du HTML avant, ton header ne fonctionnera point.

C'est très important!

Donc, soit tu fais ton traitement sur une autre page que celle qui contient le form ou alors affiche les conditions if avant tout le HTML.

Bon, normalement ça marche comme ça, mais encore une fois, j'peux me tromper

++
__________________
LudiKreation Pour un web ludique et son Blog | CapRumbo pour un peu d'évasion | ChaOdisiaque Club Passion Rôliste |SierrElben le Jeu de rôle
sharrascript est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2007, 14h53   #6
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 46
Points : 14
Points : 14
ok , je regarde çà ,

j'ai un champ type="text" id="sms" name="sms" et je voudrais limiter qu'aux chiffres et à la touche suppr et backspace

il faut pas donner le droit a l'utilisateur de taper que des chiffres.

Et aussi quand je fais l'insert dans la bdd, le numero de télephone est inserer sans le 0.

exemple taper 0677121314 - envoye - bdd : 677121314 ? as quoi es-ce dû ?
DrOOMMgba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2007, 00h42   #7
Membre émérite
 
Avatar de sharrascript
 
Homme Franck
Développeur Web indépendant
Inscription : avril 2007
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Franck
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web indépendant

Informations forums :
Inscription : avril 2007
Messages : 678
Points : 900
Points : 900
bonsoir,

Citation:
Et aussi quand je fais l'insert dans la bdd, le numero de télephone est inserer sans le 0.

exemple taper 0677121314 - envoye - bdd : 677121314 ? as quoi es-ce dû ?
Bah, dans ta base si tu accueil un integer et bin il va prendre cela comme un chiffre et non un tel. 0677121314 est bien égale à 677121314. Si tu veux garder le 0, fais en sorte que tes données soit considérées comme chaine de caractères.

Citation:
j'ai un champ type="text" id="sms" name="sms" et je voudrais limiter qu'aux chiffres et à la touche suppr et backspace

il faut pas donner le droit a l'utilisateur de taper que des chiffres.
Avec le php, tu pourra vérifier si l'utilisateur a tapé que des chiffres avant de rentrer les données dans la table, mais tu ne pourra pas le faire en temps réel au moment de la saisie. pour cela je crois que javascript est + adapté

++
__________________
LudiKreation Pour un web ludique et son Blog | CapRumbo pour un peu d'évasion | ChaOdisiaque Club Passion Rôliste |SierrElben le Jeu de rôle
sharrascript est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2007, 01h01   #8
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Je ne suis pas forcément d'accord avec Javascript : il suffit que le client ai désactivé Javascsript et c'est mort.
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2007, 01h53   #9
Membre émérite
 
Avatar de sharrascript
 
Homme Franck
Développeur Web indépendant
Inscription : avril 2007
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Franck
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web indépendant

Informations forums :
Inscription : avril 2007
Messages : 678
Points : 900
Points : 900
bonsoir,

Tout à fait d'accords avec toi viviboss, d'ailleurs je ne maitrise pas vraiment javascript...

Mais pour ce que souhaite faire DrOOMMgba:

Citation:
j'ai un champ type="text" id="sms" name="sms" et je voudrais limiter qu'aux chiffres et à la touche suppr et backspace

il faut pas donner le droit a l'utilisateur de taper que des chiffres.
Je ne vois aucune solution en php, sauf au moment du traitement. En temps réel, je crois que c'est faisable en JS, mais pas en PHP.

++
__________________
LudiKreation Pour un web ludique et son Blog | CapRumbo pour un peu d'évasion | ChaOdisiaque Club Passion Rôliste |SierrElben le Jeu de rôle
sharrascript est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2007, 02h39   #10
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Oui effectivement sur la saisi y a pas de solution PHP.

Mais je suppose que la demande était surtout pour ne pas avoir de parasites dans un champ tel, donc ca PHP peu le gérer (if is_numeric, etc....)
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h58   #11
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 46
Points : 14
Points : 14
D'accord, je fais la verif avant d'inserer dans la base de donnée, donc à ce niveau c'est bons, et si je besoin pour avoir le systeme avec js il faut que je vais sur le forum js, es ce possible de le faire en ajax ?
DrOOMMgba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 14h38   #12
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Lol

Sans doute, mais là c'est plus dans mes compétances, il y a un forum Ajax....
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h24.


 
 
 
 
Partenaires

Hébergement Web