Acces à la partie membre de mon site

Acces à la partie membre de mon site - PHP - Programmation

Marsh Posté le 17-06-2005 à 15:13:57    

Reuuuh les gens!!  
Encore et toujours moi... Un jour, faudrait que je pense à arreter la prog j'y comprend vraiment rien.
Bon donc je suis en train de faire un site Intranet et la je suis en train de bosser sur le connexion à la partie admin, j'ai donc une page avec un formulaire qui me renvoi vers une page pageauthentification.php, dont voici le code :

Code :
  1. <?php
  2. session_start();
  3. include(dirname(__FILE__).'/include/connexion.php');
  4. echo '
  5. <h1>[ CONNEXION ]</h1><br /><br />';
  6. $PHP_AUTH_USER= $_POST["login"];
  7. $PHP_AUTH_PW= $_POST["password"];
  8. $query = "SELECT idUtil, loginUtil, passUtil FROM utilisateur";
  9. $result = mysql_query($query);
  10. while ($row = mysql_fetch_row){
  11. $idU = $row[0];
  12. $login = $row[1];
  13. $pass = $row[2];
  14. if (($PHP_AUTH_USER==$login) && ($PHP_AUTH_PW==$pass)) {
  15.  $member = $idU;
  16.      session_register('member');
  17.    
  18.  redirect('indexAdmin.php','Votre identification sur le site Intranet s\'est séroulée avec succès',3);
  19. }
  20. }
  21. redirect('identification.php','Votre identifiant ou votre mot de passe n\'est pas valide',2);
  22. include(dirname(__FILE__).'/include/deconnexion.php');
  23. ?>


 
J'ai une table contenant les infos sur mes utilisateurs. Pour l'instant, je n'ai pas crypté le mot de passe donc tout est en clair, c'est normal, ne vous inquietez pas.
Donc la mon soucis est que je dois avoir un soucis de boucle quelque part, car lors de la véris de mon login/identifiant la page charge un bon moment puis j'ai ce joli message : Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/html/Intranet/admin/pageauthentification.php on line 19
Mais qu'est ce qui ne vas pas dans ma page????????????
 
HELP, I need somebody, HELP  :hello:

Reply

Marsh Posté le 17-06-2005 à 15:13:57   

Reply

Marsh Posté le 17-06-2005 à 15:17:31    

T'en aurai pas oublié un bout??  

Code :
  1. $query = "SELECT idUtil, loginUtil, passUtil FROM utilisateur";
  2. $result = mysql_query($query);
  3. while ($row = mysql_fetch_row($result)){


 
Je parle du $result dans le fetch_row


Message édité par micfont999 le 17-06-2005 à 15:18:04
Reply

Marsh Posté le 17-06-2005 à 15:18:51    

siiiiiiiiiiiiii je venais reposter pour m'excuser de ma connerie, amis ta été plus rapide que moi rooh je suis vraiment une grosse boulette!! Vraiment désolée du dérangement

Reply

Marsh Posté le 17-06-2005 à 15:19:48    

karinou a écrit :

siiiiiiiiiiiiii je venais reposter pour m'excuser de ma connerie, amis ta été plus rapide que moi rooh je suis vraiment une grosse boulette!! Vraiment désolée du dérangement


 
MDR pas grave, c'est en faisant des boulette qu'on deviens boulettier..  :sweat:  lol j'aurais pas détourné un peu la phrase la??  :whistle:

Reply

Marsh Posté le 17-06-2005 à 15:20:48    

Euh pourquoi tu ne fais pas un SELECT FROM WHERE au lieu de regarder dans toute ta table ?
 
Exemple :
$query = "
SELECT idUtil, loginUtil, passUtil  
FROM utilisateur
WHERE loginUtil=$_POST["login"] AND passUtil=$_POST["password"]";
 
C'est quand même beaucoup moins lourd et plus simple...
 
A toi de revoir la suite du code avec cette requête :)

Reply

Marsh Posté le 17-06-2005 à 15:20:55    

Par contre, juste un truc, comment faire pour arreter le programme et la lecture de la base des qu'il a trouvé un login et un mot de passe connu. style un break ou un stop, ya quoi en php pour faire ca???

Reply

Marsh Posté le 17-06-2005 à 15:21:44    

Après ton test si c'est bon,  
exit;


Message édité par micfont999 le 17-06-2005 à 15:22:01
Reply

Marsh Posté le 17-06-2005 à 15:22:26    

Surfoo a écrit :

Euh pourquoi tu ne fais pas un SELECT FROM WHERE au lieu de regarder dans toute ta table ?
 
Exemple :
$query = "
SELECT idUtil, loginUtil, passUtil  
FROM utilisateur
WHERE loginUtil=$_POST["login"] AND passUtil=$_POST["password"]";
 
C'est quand même beaucoup moins lourd et plus simple...
 
A toi de revoir la suite du code avec cette requête :)


 
Ha bah voila une solution qui viens repondre à la question que je viens de poser.
Merci beaucoup ;)

Reply

Marsh Posté le 17-06-2005 à 15:25:04    

micfont999 a écrit :

Après ton test si c'est bon,  
exit;


 
Non.
 
exit; arête entièrement le script PHP.
Il faut utiliser break;

Reply

Marsh Posté le 17-06-2005 à 15:32:16    

Surfoo a écrit :

Non.
 
exit; arête entièrement le script PHP.
Il faut utiliser break;


 
Autant pour moi , désolé j'avais mal interpreté la question, merki d'avoir repris mon erreur..  :hello:

Reply

Marsh Posté le 17-06-2005 à 15:32:16   

Reply

Marsh Posté le 17-06-2005 à 15:33:01    

Par contre, j'ai encore un probleme, oui oui, ca doit encore etre un truc a la con pour vous mais moi j'ai trop de mal :  
 
J'ai donc ma page pageauthentification.php vue plus haut!
Cette page renvoie vers une page indexAdmin.php pour l'instant ne contenant que :  

Code :
  1. <?php
  2. session_start();
  3. include(dirname(__FILE__).'/include/connexion.php');
  4.     if ($member == 2) {
  5.  echo' connectéééééééééééééééééééééé';
  6.    
  7. }
  8.     else {
  9.         echo 'Il faut être identifié pour accéder à cette section';
  10.     }
  11. include(dirname(__FILE__).'/include/deconnexion.php');
  12. ?>


 
Le soucis est que je dois transmette sur chaque page ma variable $member, or je ne peux pas l'ecrire comme ca, vu que le member est different a chaque identifiant. Est ce qe je peux transmettre juste ma variable $member graca a un GET, mon identification est elle encore sécurisée??

Reply

Marsh Posté le 17-06-2005 à 15:33:39    

Euh... Les variables de sessions, t'as déjà regardé ? :D

Reply

Marsh Posté le 17-06-2005 à 15:36:21    

FlorentG a écrit :

Euh... Les variables de sessions, t'as déjà regardé ? :D


 
+1

Reply

Marsh Posté le 17-06-2005 à 15:36:48    

Variables de sessions, cookies... Tu as le choix :)

Reply

Marsh Posté le 17-06-2005 à 15:37:17    

Heuuu oui.... et justement c'est ca mon probleme.... :$:$
j'ai essayé d'appliquer mais apparement, j'ai pas du comprendre grand chose, un coup de pousse??

Reply

Marsh Posté le 17-06-2005 à 15:39:27    

*pousse karinou*

Reply

Marsh Posté le 17-06-2005 à 15:39:42    

karinou a écrit :

Heuuu oui.... et justement c'est ca mon probleme.... :$:$
j'ai essayé d'appliquer mais apparement, j'ai pas du comprendre grand chose, un coup de pousse??


 
Tu veux qu'on fasse le code à ta place.. ^^
http://www.phpcs.com/code.aspx?ID=23628 (désolé pour la pub d'un autre site hein)

Reply

Marsh Posté le 17-06-2005 à 15:45:44    

roooooooooh J'ai jamasi demandé a ce que vous me fassiez mon code!!!
C'est juste que j'ai du me lire les paragraphes sur les variables de session depuis le debut de l'aprem environ 5/6 fois et que j'ai pas compris grand chose desoléee

Reply

Marsh Posté le 17-06-2005 à 15:48:31    

http://phpdebutant.org/article69.php
 
Tu devrais y arriver avec ça et en faisant concretement les exemples proposés.

Reply

Marsh Posté le 17-06-2005 à 16:07:16    

Bon bah, je suis vraiment désolée mais j arrive vraiment pas

Code :
  1. <?php
  2. session_start();
  3. include(dirname(__FILE__).'/include/connexion.php');
  4. echo '
  5. <h1>[ CONNEXION ]</h1><br /><br />';
  6. $loginOK = false// cf Astuce
  7. // On n'effectue les traitement qu'à la condition que  
  8. // les informations aient été effectivement postées
  9. if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {
  10. $loginU = trim ($_POST['login']);
  11.   extract($_POST);  // je vous renvoie à la doc de cette fonction
  12.   // On va chercher le mot de passe afférent à ce login
  13.   $sql = "SELECT idUtil, passUtil, emailUtil FROM utilisateur WHERE loginUtil = '$loginU'";
  14.   $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
  15.  
  16.   // On vérifie que l'utilisateur existe bien
  17.   if (mysql_num_rows($req) > 0) {
  18.      $data = mysql_fetch_assoc($req);
  19.    
  20.     // On vérifie que son mot de passe est correct
  21.     if ($password == $data['mdp']) {
  22.       $loginOK = true;
  23.     }
  24.   }
  25. }
  26. // Si le login a été validé on met les données en sessions
  27. if ($loginOK) {
  28.   $_SESSION['idUtil'] = $data['idUtil'];
  29.   $_SESSION['emailUtil'] = $data['emailUtil'];
  30.   $_SESSION['loginUtil'] = $data['loginUtil'];
  31.     redirect('indexAdmin.php','Votre identification sur le site Intranet s\'est séroulée avec succès',3);
  32. }
  33. else {
  34.   echo 'Une erreur est survenue, veuillez réessayer !';
  35.   redirect('identification.php','Votre identifiant ou votre mot de passe n\'est pas valide',2);
  36. }
  37. include(dirname(__FILE__).'/include/deconnexion.php');
  38. ?>


Message édité par karinou le 17-06-2005 à 16:07:30
Reply

Marsh Posté le 17-06-2005 à 16:09:02    

T'arrive pas à quoi ?

Reply

Marsh Posté le 17-06-2005 à 16:09:28    

En 15min tu as le temps de tout comprendre convenablement ?  
 
Recommence et relit bien tout.
Et ne fais pas de copier coller de code, ré ecris le tu apprendras bien mieux (même si c'est chiant au début)
 
va voir sur nexen pour une explication détaillée des fonctions aussi.

Reply

Marsh Posté le 17-06-2005 à 16:11:49    

euh :
 
$data['mdp']
 
ya pas 'mdp' dans la rêquete...

Reply

Marsh Posté le 17-06-2005 à 16:12:27    

Ouais, ne soit pas pressée comme ça, il faut faire les choses calmement, et bien les comprendre, sinon bonjour la catastrophe...

Reply

Marsh Posté le 17-06-2005 à 16:14:44    

Bah je comprend pas ce qu'on transmet dans les vraiables de session la par exemple dans le lien que m'a passé surfoo je ne comprend pas on ne transmet pas le login!!
 
Je me suis tappée des sites qui parlaient des sessions et des espaces admin tout l'aprem, je pete un cable la, c'est vraiment du chinois pour moi tout ca, et puis en plus de ca personne n'a réussit a me resoudre mon probleme de checkbox quelques posts plus bas!  donc la je me retrouve bloquée des 2 cotés sniff sniff!! Dans 45 minutes, je debauche je reprendrais cette daube à tete reposée lundi matin!!
Merci quand meme les gens et bon we!!!!


Message édité par karinou le 17-06-2005 à 16:18:30
Reply

Marsh Posté le 17-06-2005 à 16:18:01    

Surfoo a écrit :

euh :
 
$data['mdp']
 
ya pas 'mdp' dans la rêquete...


 
C'est quoi ce tableau $data[], on y est moi a l'interieur? je ne comprend pas pkoi il faut mettre un tableau dans une variable de session, si j'ai un peu suivi les variables de session contiennent les infos d'un utilisaeur donc pkoi un tableau pour un variable!!   :??:  :??:  :??:

Reply

Marsh Posté le 17-06-2005 à 16:20:23    

Tu mélanges tout :D
Regarde :

$data = mysql_fetch_assoc($req);


C'est juste un fetch_assoc de la requête pour trouver le mot de passe dans la base...

Reply

Marsh Posté le 17-06-2005 à 16:21:27    

et ca c'est quoi alors???

Code :
  1. // Si le login a été validé on met les données en sessions  
  2. if ($loginOK) {
  3.   $_SESSION['idUtil'] = $data['idUtil'];
  4.   $_SESSION['emailUtil'] = $data['emailUtil'];
  5.   $_SESSION['loginUtil'] = $data['loginUtil'];


Message édité par karinou le 17-06-2005 à 16:21:42
Reply

Marsh Posté le 17-06-2005 à 16:24:03    

Ben il reprend des machins de la ligne qui correspond au mot de passe et les fout dans des variables de session. Il a donc une table avec plusieurs champs : id, email, login et mot de passe. Bref, hésite pas à tout lire :D

Reply

Marsh Posté le 17-06-2005 à 16:28:28    

bon bah cette conversation me fait deprimer sur ma nullité dans le domaine, j'ai toujours pas compris ce que c'etait ce data[], mais pas grave t'embette pas je verrai ca lundi!
En tout cas merci beaucoup de te prendre la tete pour essayer de me faire capter cette affaire bon we

Reply

Marsh Posté le 17-06-2005 à 16:32:45    

Il fait une requête sur la base de donnée. Il récupère les données d'un utilisateur, qu'il stocke dans $data !
C'est la ligne :

$data = mysql_fetch_assoc($req);


Sachant que mysql_fetch_assoc retourne un tableau. Donc dans $data, il a tout ses champs avec les valeurs associées. Et toutes ces valeurs, il les recopie dans le tableau de session

Reply

Marsh Posté le 20-06-2005 à 10:11:57    

Bonjour les gens,  
J'ai refait mon identification, elle fonctionne, je souhaiterai maintenant un peu l'optimiser et savoir si elle est sécurisée ou pas!
J'ai une partie qui ne me plait pas trop dans la page indexAdmin.php, isEmpty est une fonction permettant de savoir si la variable est vide ou pas. Une facon de voir si un personne est identifiée ou pas avant d'acceder à une page de l'admin est de vérifier si les variables de session sont vides ou pas. Il doit certainement y avoir mieux!!J'attend vos conseils!
La page de formulaire : identification.php

Code :
  1. <?php
  2. include(dirname(__FILE__).'/include/connexion.php');
  3. echo '
  4. <h1>[ CONNEXION ]</h1><br /><br />
  5. <form action="pageauthentification.php" method=post> <p style={text-align:"center";>
  6. Identifiant :
  7. <input type="text" name="login" size="20" maxlength="40"><br /><br />
  8. Mot de passe :
  9. <input type="password" name="password" size="20" maxlength="40"><br /><br /><br /><br />
  10. <a href="" class="lien"> J\'ai oublié mon mot de passe?</a> <br /><br /><br /><br />
  11.  <input type="submit" value="Connexion >>"></p>
  12. </form>';
  13. include(dirname(__FILE__).'/include/deconnexion.php');
  14. ?>


 
Pouvez vous me dire si ma connexion est bien sécurisée, qu'est ce que je peux améliorer??
 
Merci par avance, karine
 
La page de vérification : pageauthentification.php

Code :
  1. <?php
  2. session_start();
  3. include(dirname(__FILE__).'/include/connexion.php');
  4. echo '
  5. <h1>[ CONNEXION ]</h1><br /><br />';
  6. $loginOK = false// cf Astuce
  7. // On n'effectue les traitement qu'à la condition que  
  8. // les informations aient été effectivement postées
  9. if ( isset($_POST) && (!isEmpty($_POST['login'])) && (!isEmpty($_POST['password'])) ) {
  10. $loginU = trim ($_POST['login']);
  11.   extract($_POST);  // je vous renvoie à la doc de cette fonction
  12.   // On va chercher le mot de passe afférent à ce login
  13.   $sql = "SELECT idUtil, loginUtil, passUtil, emailUtil FROM utilisateur WHERE loginUtil = '$loginU'";
  14.   $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
  15.  
  16.   // On vérifie que l'utilisateur existe bien
  17.   if (mysql_num_rows($req) > 0) {
  18.      $data = mysql_fetch_assoc($req);
  19.    
  20.     // On vérifie que son mot de passe est correct
  21.     if ($password == $data['passUtil']) {
  22.       $loginOK = true;
  23.     }
  24.   }
  25. }
  26. // Si le login a été validé on met les données en sessions
  27. if ($loginOK) {
  28.   $_SESSION['idUtil'] = $data['idUtil'];
  29.   $_SESSION['emailUtil'] = $data['emailUtil'];
  30.   $_SESSION['loginUtil'] = $data['loginUtil'];
  31.     redirect('indexAdmin.php','Votre identification sur le site Intranet s\'est déroulée avec succès',3);
  32. }
  33. else {
  34.   echo 'Une erreur est survenue, veuillez réessayer !';
  35.   redirect('identification.php','Votre identifiant ou votre mot de passe n\'est pas valide',2);
  36. }
  37. include(dirname(__FILE__).'/include/deconnexion.php');


et enfin la page d'acceuil affichée une fois la connexion faite, indexAdmin.php:  
 

Code :
  1. <?php
  2. session_start();
  3. include(dirname(__FILE__).'/include/connexion.php');
  4.   $idU = $_SESSION['idUtil'];
  5.   $emailU = $_SESSION['emailUtil'];
  6.   $loginU = $_SESSION['loginUtil'];
  7.  
  8. echo 'id U '.$idU.' mail : '.$emailU.' login : '.$loginU;
  9.     if (!(isEmpty($idU)) || !(isEmpty($emailU)) || !(isEmpty($loginU))){
  10.  echo' connectéééééééééééééééééééééé';
  11.    
  12. }
  13.     else {
  14.         echo 'Il faut être identifié pour accéder à cette section';
  15.     }
  16. include(dirname(__FILE__).'/include/deconnexion.php');
  17. ?>



Message édité par karinou le 20-06-2005 à 10:15:04
Reply

Marsh Posté le 20-06-2005 à 15:30:28    

Alors svp personne ne peut dire xi mon identification est coorecte ou pas?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed