PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 27-12-2010 09:43:17

ziko
Membre
Inscription : 22-12-2010
Messages : 43

Pb Identification

Bonjour les amis alors voila mon problème :

je me suis inspiré des exemples sur internet pour faire un formulaire d'identification, j'avais le formulaire et le code php separé dans 2 fichiers et tout marchait très bien. MAIS car il y a toujours un 'mais' smile j'ai voulu utilisé les sessions et la tout plante, enfin tout plante...

J'ai toujours mon formulaire mais cette fois ci en un seul fichier avec le code php et peu importe ce que je rentre en login et mdp, au clic sur le bouton submit la page se recharge et les champs se vident.

J'ai du loupé un truc car je n'ai pas tout compris sur les sessions...

voici mon code :

<?php
  @session_start();

  // Destruction de la session ?
  if ((isset($_GET['action'])) && ($_GET['action'] == 'logout'))
  {
    $_SESSION = array();
    session_destroy();
    session_start();
  }

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Identification</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   </head>
   <body>
  <?php
 
  $_SESSION['login'] = '';
  $_SESSION['password'] = '';

  mysql_connect("localhost", "root", "");
  mysql_select_db("joomla");
 
 

  $delai=3;
  $url='http://127.0.0.1/joomla/index.php?option=com_content&view=article&id=51&Itemid=55';
 
  if (isset($_POST['submit']))
  {
    // bouton submit pressé, je traite le formulaire
    $log = (isset($_POST['login'])) ? $_POST['login'] : '';
    $mdp = (isset($_POST['mot_de_passe']))  ? $_POST['mot_de_passe']  : '';
   
    $result = mysql_query( "SELECT nom, mdp FROM `membre` WHERE `nom` = '$log' AND `mdp` = '$mdp'");
    $row = mysql_fetch_assoc($result);

    if ($log=="test" AND $mdp == "123") // Si le technicien se connecte
    {
      // On le redirige vers la page technicien.php
      $_SESSION['login'] = "test";
      $_SESSION['password'] = "123";
       header('Location: technicien.php');  
    }
    else if($log == $row["nom"] AND $log !="" AND $mdp == $row["mdp"] AND $mdp !="")  //si le client se connecte
    {
      //on le redirige vers la page client.php
      $_SESSION['login'] = $log;
      $_SESSION['password'] = $mdp;
      header('Location: client.php');
     
    }
    else// Sinon, on affiche un message d'erreur
    {
    ?>
    <SCRIPT language="Javascript">alert('Identifiant et/ou mot de passe incorrect !');</SCRIPT>
    <?php
      header("Refresh: $delai;url=$url");
    }
   
  };?>
 
  <?php
  if (!isset($_POST['submit']))
  {?>
    <form id="contact" action="" method="post"> <fieldset style="text-align: center;"><legend>Identifiant / mot de passe</legend>
    <p><label style="display: block; width: 105px; float: left;" for="nom">Identifiant :</label><input id="id" name="login" type="text" /></p>
    <p style="text-align: center;"><label style="display: block; width: 105px; float: left;" for="mdp">Mot de passe :</label><input id="mdp" name="mot_de_passe" type="password" /></p>
    </fieldset>
    <div style="text-align: center;"><input name="Submit" type="submit" value="Envoyer !" /></div>
    </form><form action="login.php" method="post"><span style="color: #ff0000;">Attention : champs sensible &agrave la casse !</span><br /></form>
  <?php
  };
  ?>
   </body>
</html>

Dernière modification par ziko (27-12-2010 09:57:22)

Hors ligne

#2 27-12-2010 11:42:56

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Pb Identification

Saluton,
Déjà, si tu veux piloter ton développement, évite de bloquer les messages d'erreur avec @, voire positionne correctement error_reporting.
Là, à première vue, je ne comprends pas ce qui pourrait expliquer ce dont tu parles, mais je sors d'une gastro alors je suis un peu dans le gaz.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 27-12-2010 13:24:26

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : Pb Identification

Salut,

En ayant regardé rapidement : Submit != submit

A+


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#4 27-12-2010 14:19:49

ziko
Membre
Inscription : 22-12-2010
Messages : 43

Re : Pb Identification

Alors la, chapeau mcAllan, c'est clair net et précis, problème résolu.

Navré de vous avoir fait lire tout se code juste pour un pb de Majuscule.

MK : en fait j'ai mis le @ pour bloquer les notices qui me disent que $log et $mdp ne sont pas définis.
Et devant session_start(); qui me dis qu'une séssion est déjà crée.

Ça aura quel effet plus tard si je continu à développer comme ca ?

Par contre maintenant lorsque un client se connecte, en récupérant son id dans la BDD, je voudrais pouvoir créer un lien du genre profil.php?id=3

Avec 3 = l'id du client, afin que chaque client soit rediriger vers sa propre page profil

est-ce possible ? comment s'appel se genre de redirection pour que je puisse me renseigner ?

Merci encore pour vos réponses !

Dernière modification par ziko (27-12-2010 14:25:06)

Hors ligne

#5 27-12-2010 14:39:14

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Pb Identification

ziko a écrit :

en fait j'ai mis le @ pour bloquer les notices qui me disent que $log et $mdp ne sont pas définis.
Et devant session_start(); qui me dis qu'une session est déjà crée.

Ça aura quel effet plus tard si je continu à développer comme ca ?

Excellente question.
Que crois-tu qu'il peut se passer si tu supprimes les diodes du tableau de bord de ta voiture qui t'indiquent un défaut d'huile, ou de freinage ?

ziko a écrit :

Par contre maintenant lorsque un client se connecte, en récupérant son id dans la BDD, je voudrais pouvoir créer un lien du genre profil.php?id=3

Avec 3 = l'id du client, afin que chaque client soit rediriger vers sa propre page profil

est-ce possible ? comment s'appelle se genre de redirection pour que je puisse me renseigner ?

En fait là, il ne s'agit pas de redirection mais de passage de paramètre par l'url, que tu récupères dans profil.php avec $_GET['id'], mais autant continuer avec une variable de session pour passer l'id à profil.php.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#6 27-12-2010 15:06:00

ziko
Membre
Inscription : 22-12-2010
Messages : 43

Re : Pb Identification

En effet, très bonne réponse smile pauvre voiture...

Donc si j'ai bien compris pour le passage de paramètre je dois faire un truc qui ressemble à ca :


$res = select id from matable where nom = login;   //nom est unique
$row = mysql_fetch_assoc($res);
$id = $row['id'];

OU

$id = ($_GET['id']);
 

et dans le if qui détermine si c'est un client qui se connecte je fais :


header('Location: client.php?id=<?php echo $id ?>');
 

est possible ?

Hors ligne

#7 27-12-2010 15:39:46

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Pb Identification

Possible, oui, mais souhaitable ???


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#8 27-12-2010 16:18:18

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Pb Identification

nom est unique, id l'est aussi ?
Le principe de passer une variable par l'url (ou par session) pour la récupérer et afficher les bonnes informations est en général de passer la clé primaire de l'enregistrement.
Cela te fait gagner des gains de performances (la clé primaire est indexée) chose qui ne se fait pas avec n'importe quel champs (sauf si tu l'indexe toi même).

Hors ligne

#9 27-12-2010 16:20:06

ziko
Membre
Inscription : 22-12-2010
Messages : 43

Re : Pb Identification

Hmm non ça ne marche pas, ça marque carrément : client.php?id=<?php echo $id ?> dans la barre d'adresse.

Je crois que je mélange un peu tout :
en faisant


$id = ($_GET['id']);
echo $id;
 

dans login.php j'obtient 51 qui est l'id de mon article (j'utilise joomla). Donc c'est pas la bonne solution

Du coup j'ai essayé avec


$result = mysql_query( "SELECT nom, mdp, id FROM `membre` WHERE `nom` = '$log' AND `mdp` = '$mdp'");
$row = mysql_fetch_assoc($result);
$id = $row['id'];
echo $id;
 

sauf que la ça n'affiche absolument rien.

Tu pourrais m'éclaircir un peu stp ?

Edit : xTG, oui id est aussi unique, clé primaire, auto-incrémente

Dernière modification par ziko (27-12-2010 16:22:25)

Hors ligne

#10 27-12-2010 17:24:51

ziko
Membre
Inscription : 22-12-2010
Messages : 43

Re : Pb Identification

Problème résolu !
Je laisse la solution si jamais quelqu'un a le même pb :

login.php


$result = mysql_query( "SELECT nom, mdp, id FROM `membre` WHERE `nom` = '$log' AND `mdp` = '$mdp'");
$row = mysql_fetch_assoc($result);
.
.
.
//dans le if qui détermine si c'est un client qui se connecte
$_SESSION['login'] = $log;
$_SESSION['password'] = $mdp;
$id = $row["id"];
echo $row["id"];
header("Location: client.php?id=$id");
 

client.php


$id = $_GET['id'];
echo $id;
//traitement qui va bien
 

Merci beaucoup pour votre aide, ca m'a vachement aidé.

Hors ligne

#11 27-12-2010 18:55:11

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Pb Identification

Quand je te disais que j'étais dans le gaz....
header() étant une fonction PHP, l'appel à PHP au sein de la fonction posait, a minima, problème.
Ceci dit, passer un identifiant en clair via le net c'est quand même assez kamikaze, qu'en penses-tu ?


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#12 28-12-2010 08:15:53

ziko
Membre
Inscription : 22-12-2010
Messages : 43

Re : Pb Identification

Oui tu as raison, c'est pour ca que je vais passer un id + le nom du client que lui seul est censé connaitre. Ça renforce un petit peu la sécurité non ?

Hors ligne

#13 28-12-2010 08:50:42

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Pb Identification

Non cela fait plutôt l'inverse. smile
Kris te proposait vu ton système de passer ces informations par les variables de session qui elles ne sont pas visibles tant que tu ne les affiches pas.

Hors ligne

#14 28-12-2010 09:52:18

ziko
Membre
Inscription : 22-12-2010
Messages : 43

Re : Pb Identification

Merci beaucoup tout marche parfaitement, vous êtes au top !!!

Hors ligne

#15 28-12-2010 10:38:56

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Pb Identification

ziko a écrit :

tout marche parfaitement, vous êtes au top !!!

Ça nous représente plutôt bien ça, comme formule...
wink


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#16 03-01-2011 21:07:48

himron
Membre
Inscription : 02-12-2010
Messages : 44

Re : Pb Identification

Salut a tous,
plutôt que d'ouvrir une nouvelle discussion sur le même thème (ou presque), je poursuis celle ci.

j'ai ma page formulaire (login-password) qui va vérifier dans ma base de données et permet (ou pas) l'accès aux pages privées. là variable de session MM_Username retient automatiquement le login de l'utilisateur.
le système fonctionne bien et je ne pense pas le changer.

mais j'aimerais pouvoir garder en mémoire de session l'id unique de l'utilisateur. qu'il faut donc aller chercher dans la base de donnée, juste a coté du login, au moment de la connexion.

et là je bloque. l'aller se passe bien (vérification du login-pw vers la bdd), mais pas le retour (prise en mémoire de la valeur id de la bdd vers une variable de session).
quels sont les codes actuels dont vous avez besoin pour me conseiller  (je veux pas vous flooder avec des codes inutiles) ?

Hors ligne

#17 03-01-2011 21:12:38

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Pb Identification

En fait, tout est


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums