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 31/03/2006, 14h14   #1
Nouveau Membre du Club
 
Inscription : mars 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 130
Points : 27
Points : 27
Par défaut [Sécurité] Mauvaise requête + session

Bonjour a tous,

J'ai mis en place un espace membre dans lequel lorsque la personne s'identifie, elle est dirigée vers sa page d'infos qu'elle peut modifier.

Donc j'ai deux tables sous mysql qui sont en relation:

le login de la table tbl_user et le mail de la table gite.

Le probleme, avec mon code il affiche tous les enregistrements qui ont comme requete la relation entre login de tbl_user et le mail de la table gite.
Alors je veux seulement les enregistrements de la personne identifiée et non celles de toute la base

Je vous montre mon code:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?
$base = mysql_connect (', , );
mysql_select_db (, $base);
 
 
 
 
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select pwd from tbl_user where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
  $data = mysql_fetch_assoc($req);
 
  if($data['pwd'] != $pass) {
    echo '<p>Mauvais login / password. Merci de recommencer</p>';
    include('login.htm'); // On inclut le formulaire d'identification
    exit;
  }
  else {
    session_start();
    $_SESSION['login'] = $login;
 
    echo 'Vous etes bien logué';
 
  }   
}
else {
  echo '<p>Vous avez oublié de remplir un champ.</p>';
   include('login.htm'); // On inclut le formulaire d'identification
   exit;
}
 
        $cnx = mysql_connect( '', , ) ;
 
   :
    $db = mysql_select_db( ) ;
 
     $sql = "SELECT * FROM gite,tbl_user  WHERE mailProprio=tbl_user.login" ;
    //exécution de la requête:
    $requete = mysql_query( $sql, $cnx ) ;
 
 
    while( $result = mysql_fetch_object( $requete ) )
 
    {
       echo("<table  ><tr><td class=texte_requete4 >".$result->login."&nbsp;</td><td width=650 class=texte_requete4><b>".$result->nomGite."</b>&nbsp;//".$result->regionGite."&nbsp;//".$result->dptGite."<br>".$result->nomProprio."&nbsp;//".$result->mailProprio."</td><td>&nbsp;</td><td class=texte_requete4> <a href=\"requete3.php?id=".$result->id."\">modifier</a></td></tr>\n") ;
 
    }
 
  ?>
J'espere avoir été assez clair

Merci de votre aide
pod1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 14h19   #2
Membre régulier
 
Inscription : mars 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 92
Points : 90
Points : 90
Code :
 $sql = "SELECT * FROM gite,tbl_user  WHERE mailProprio=tbl_user.login" ;
il manque une contrainte sur l'utilisteur, aucune variable dans la requete ??
monsieurjean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 14h23   #3
Nouveau Membre du Club
 
Inscription : mars 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 130
Points : 27
Points : 27
Je ne sais pas coment faire correpondre le mail de l'utilisateur avec les enregistrements qui lui correspondent!

Code :
$sql = "SELECT * FROM gite,tbl_user  WHERE mailProprio=tbl_user.login" ;
J'ai essayé de mettre:

Code :
 $sql = "SELECT * FROM gite,tbl_user  WHERE mailProprio=tbl_user."$_SESSION['login']"" ;
Mais cela ne fonctionne pas.

J'ai essayé de me renseigner un peu partout mais je suis vraiement coincé
pod1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 14h26   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Code :
 $sql = "SELECT * FROM gite,tbl_user  WHERE mailProprio=tbl_user." . $_SESSION['login'];
Peut-être un peu mieux déjà :
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 14h27   #5
Membre régulier
 
Inscription : mars 2006
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 92
Points : 90
Points : 90
si mailProprio est un champ contenant une valeur identique au login :
Code :
1
2
 
$sql = "SELECT * FROM gite,tbl_user  WHERE mailProprio='"$_SESSION['login']"'" ;
monsieurjean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 14h41   #6
Nouveau Membre du Club
 
Inscription : mars 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 130
Points : 27
Points : 27
J'ai essayé la requete suivante:
Code :
$sql = "SELECT * FROM gite,tbl_user  WHERE mailProprio=tbl_user." . $_SESSION['login'];
Mais cel ne fonctionne pas, ca me met:

Code :
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/3/f/pod1978/annuaire/membre/verif.php on line 49
La ligne 49 correspoind a celle qui commence par while

Code :
1
2
3
4
5
6
7
8
9
10
11
$sql = "SELECT * FROM gite,tbl_user  WHERE mailProprio=tbl_user." . $_SESSION['login'];
    //exécution de la requête:
    $requete = mysql_query( $sql, $cnx ) ;
 
    //affichage des données:
    while( $result = mysql_fetch_object( $requete ) )
 
    {
       echo("<table  ><tr><td class=texte_requete4 >".$result->login."&nbsp;</td><td width=650 class=texte_requete4><b>".$result->nomGite."</b>&nbsp;//".$result->regionGite."&nbsp;//".$result->dptGite."<br>".$result->nomProprio."&nbsp;//".$result->mailProprio."</td><td>&nbsp;</td><td class=texte_requete4> <a href=\"requete3.php?id=".$result->id."\">modifier</a></td></tr>\n") ;
 
    }

Concernant la requete:

Code :
$sql = "SELECT * FROM gite,tbl_user  WHERE mailProprio='"$_SESSION['login']"'" ;
J'ai aussi testé mais cela ne fonctionne pas non plus, ca me met cela comme message d'erreur:
Code :
Parse error: parse error, unexpected T_VARIABLE in /var/www/free.fr/3/f/pod1978/annuaire/membre/verif.php on line 44
Et lea ligne 44 correspond a cette requete


Merci de votre aide
pod1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 14h43   #7
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Citation:
Envoyé par JWhite
Code :
 $sql = "SELECT * FROM gite,tbl_user  WHERE mailProprio=tbl_user." . $_SESSION['login']
;


Peut-être un peu mieux déjà :
Non !
Citation:
Envoyé par monsieurjean
si mailProprio est un champ contenant une valeur identique au login :

Code :
$sql = "SELECT * FROM gite,tbl_user  WHERE mailProprio='"$_SESSION['login']"'" ;
Non plus !!!

Bon, si tu fais une selection sur deux tables il faut que tu fasses une jointure ET une condition sur le login
en gros :
Code :
$sql = "SELECT * FROM gite, tbl_user WHERE gite.mailProprio=tbl_user.login AND tbl_user.login='".$_SESSION['login']."'";
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 15h06   #8
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Exact Hervé je m'étais bien embrouillé sur le coup
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 15h08   #9
Nouveau Membre du Club
 
Inscription : mars 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 130
Points : 27
Points : 27
Merci la 1ere étape fonctionne tres bien.

Maintenant en fait mon souci viens que lorsque ses enregistrements pparaissent , j'ai un line modifier qui m'envoie vers une autre page.
Mais j'ai le meme souci que tout a l'heure, la requete ne marche pas alors que j'ai repris le meme.

Je vous montre mon code de ma page requete3.php

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
 session_start();
 ?>
 <html>
  <head>
    <title>modification de données en PHP :: partie2</title>
 
<link href="../sources/style_index.css" rel="stylesheet" type="text/css">
</head>
<body>
  <?php
  //connection au serveur:
  $cnx = mysql_connect( ', , ) ;
 
  //sélection de la base de données:
  $db = mysql_select_db( ) ;
 
  //récupération de la variable d'URL,
  //qui va nous permettre de savoir quel enregistrement modifier
  $login  = $_GET["login"] ;
 
  //requête SQL:
$sql = "SELECT * FROM gite, tbl_user WHERE gite.mailProprio=tbl_user.login AND WHERE login = ".$login ;
 
  //exécution de la requête:
  $requete = mysql_query( $sql, $cnx ) ;
 //affichage des données:
  if( $result = mysql_fetch_object( $requete ) )
  {
 
  ?>  
 
 
  <form name="insertion" action="requete4.php" method="POST">
  <input type="hidden" name="id" value="<?php echo($id) ;?>">
  <table border="0" align="center" cellspacing="2" cellpadding="2">
  <tr><td class="titre_titre"><?php echo($result->id) ;?></td></tr>
    <tr align="center">
      <td class="texte_formulaire">nomGite</td>
      <td><input type="text" size="80" name="nomGite" value="<?php echo($result->nomGite) ;?>"></td>
    </tr>
    <tr align="center">
      <td class="texte_formulaire">descriptionGite</td>
      <td><input type="text"size="80" name="descriptionGite" value="<?php echo($result->descriptionGite) ;?>"></td>
    </tr>
    <tr align="center">
      <td class="texte_formulaire">regionGite</td>
      <td><input type="text" size="80"name="regionGite" value="<?php echo($result->regionGite) ;?>"></td>
    </tr>
    <tr align="center">
      <td class="texte_formulaire">dptGite</td>
      <td><input type="text" size="80" name="dptGite" value="<?php echo($result->dptGite) ;?>"></td>
    </tr>
    <tr align="center">
      <td class="texte_formulaire">typeGite</td>
      <td><input type="text" size="80"name="typeGite" value="<?php echo($result->typeGite) ;?>"></td>
    </tr>
 
     <tr align="center">
      <td class="texte_formulaire">capaciteGite</td>
      <td><input type="text" size="80"name="nomProprio" value="<?php echo($result->capaciteGite) ;?>"></td>
    </tr>
	 <tr align="center">
      <td class="texte_formulaire">Nom</td>
      <td><input type="text" size="80"name="nomProprio" value="<?php echo($result->nomProprio) ;?>"></td>
    </tr> 
    <tr align="center">
      <td class="texte_formulaire">mailProprio</td>
      <td><input type="text" size="80"name="mailProprio" value="<?php echo($result->mailProprio) ;?>"></td>
    </tr>  <tr align="center">
      <td class="texte_formulaire">telProprio</td>
      <td><input type="text" size="80"name="telProprio" value="<?php echo($result->telProprio) ;?>"></td>
    </tr>
    <tr align="center">
      <td class="texte_formulaire">siteProprio</td>
      <td><input type="text" size="80"name="siteProprio" value="<?php echo($result->siteProprio) ;?>"></td>
 
 
    <tr align="center">
      <td colspan="2"><input type="submit" value="modifier"></td>
    </tr>
  </table>
</form>
  <?php
  }//fin if 
  ?>
</body>
</html>
Il me remet ce message d'erruer:

Code :
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/3/f/pod1978/annuaire/membre/requete3.php on line 28

Merci de votre aide
pod1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 15h16   #10
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
on ne met qu'une seule fois le where
c'est de la forme
Code :
1
2
3
select deschamps
from destables
where booleen
donc la requete suivante est mauvaise :
Code :
SELECT * FROM gite, tbl_user WHERE gite.mailProprio=tbl_user.login AND WHERE login = ...
il faut mettre :
Code :
SELECT * FROM gite, tbl_user WHERE gite.mailProprio=tbl_user.login AND tbl_user.login = ...
tout simplement

PS : à mon avis tu as plus besoin de l'aide du forum SQL que de celle du forum PHP
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 15h27   #11
Nouveau Membre du Club
 
Inscription : mars 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 130
Points : 27
Points : 27
Excuse moi je suis allé trop vite pour faire la requete mais il semble que cela ne fonctionne toujourrs pas

Tjrs le meme message:

Code :
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/3/f/pod1978/annuaire/membre/requete3.php on line 28

Voici le code et la ligne 28 est celle qui commence par while:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
  //connection au serveur:
  $cnx = mysql_connect( '', , ) ;
 
  //sélection de la base de données:
  $db = mysql_select_db( ) ;
 
  //récupération de la variable d'URL,
  //qui va nous permettre de savoir quel enregistrement modifier
  $login  = $_GET["login"] ;
 
  //requête SQL:
$sql = "SELECT * FROM gite, tbl_user WHERE gite.mailProprio=tbl_user.login AND login = ".$login ;
 
  //exécution de la requête:
  $requete = mysql_query( $sql, $cnx ) ;
 //affichage des données:
  if( $result = mysql_fetch_object( $requete ) )
  {
 
  ?>
En fait ds ce cas présent, une propriétaire a deux enregistrements donc je ne sais pas si c bon que la requete se termine pae login=".$login" car ca sera deux fois le meme mail. Faut peut etre passer par un autre identifiant mais je ne sais pas trop

Merci
pod1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 15h30   #12
Nouveau Membre du Club
 
Inscription : mars 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 130
Points : 27
Points : 27
Je peux vous monter l'url:

http://pod1978.free.fr/annuaire/membre/login.htm

le login:

martine.deroo@wanadoo.fr

le mot de passe:
boubou

Merci de votre aide
pod1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 15h43   #13
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Peut-être avec des quotes :

Code :
$sql = "SELECT * FROM gite, tbl_user WHERE gite.mailProprio=tbl_user.login AND login = '". $login . "'" ;
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 15h49   #14
Membre éprouvé
 
Inscription : février 2004
Messages : 456
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 456
Points : 428
Points : 428
Citation:
Envoyé par JWhite
Peut-être avec des quotes :

Code :
$sql = "SELECT * FROM gite, tbl_user WHERE gite.mailProprio=tbl_user.login AND login = '". $login . "'" ;
+1
Quand tu as cette erreur :
Code :
supplied argument is not a valid MySQL result resource
Toujours faire :
Code :
$requete = mysql_query( $sql, $cnx ) or die(mysql_error());
et un echo de ta requete pour avoir une meillleur idée de l'erreur qui s'est produite
billoum 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 14h42.


 
 
 
 
Partenaires

Hébergement Web