Aller au menu - Aller au contenu
Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !

Quelques améliorations de scripts

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Offre d'emploi : Développeur Web PHP/Drupal (H/F)

Page Précédente  1  2 
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page Précédente  1  2 
Hors ligne Cartman34 # Posté le 17/08/2009 à 22:14:56
Volonté est connaissance.

Études : Université Montpellier 2

Reprise du dernier message de la page précédente :
Je vois pas trop où une méthode de hashage pourrait avoir une faille...
on ne la conseille juste pas car si jamais tu montres le hash dans ta source (ce qu'il ne faut jamais faire, le hash doit aussi rester secret un max), il PEUT etre retrouvé grace aux nombreuses bibliothèques MD5 sur le web, mais je n'y ai jamais vu des mot de passe ne serait-ce qu'un peu complexe.
Mais bon, on a déjà parlé de meilleur hashage au début de ce sujet.

Pour ton problème, le résoudre tout seul devrait te prendre...disons...10 minutes à tout casser.
A toi de mettre des test partout, les echo c'est pas pour les cochons.

cloudstrife, ce que tu dis dans ta première phrase ? 'Même sans la variable, ça ne marche pas.' ??
C'est n'importe quoi, tu t'es juste trompé et à mon avis dans les guillemets.
hormis si tu veux dire que je pense que mettre une chaine de caractère à la place pourrait résoudre ton problème.

Wordpress API, Google Maps API, OpenLayers, Flickr;
Blender; Eclipse, VS2010, Notepad++, Geany; Gimp, Photoshop; Poedit;
Administration système & réseaux; Hardware,
Montage PC; Admin Windows & Linux.
Cartman34 SWP, Anek.me, STAART...
Framework PHP Orpheus en développement !
PHP, Python, Perl; MySQL, Oracle 9i; C, C++ (+Qt), C#; JAVA; Bash/Shell;
(x)HTML, CSS, JS (+JQuery); Flex, YACC/Bison; (Scheme, LISP, Maple;)
 
Publicité # Posté le 17/08/2009 à 22:14:56

Hors ligne Den's # Posté le 17/08/2009 à 22:17:31
Fils de Sovereign

Ville : Persan
Pays : France métropolitaine

Citation : Moi
EDIT² : L'UPDATE marche !

PHP : 70%
HTML : 90%
CSS : 50%
C++/QT : 1%

Envie de participer à la création d'un jeu en ligne de guerre dans l'espace ? Et qui n'est pas un OGame-like ?
Alors, Clique ici... ;)

"2 millions de morts le premier jour, 7 millions de plus la fin de la première semaine." - Mass Effect 3

Cherche joueur Call Of Duty Modern Warfare 2 sur PC...

I'm Sovereign...
"Ma race transcende votre compréhension..."
"Nous sommes éternels, nous n'avons ni commencement, ni fin... Nous sommes absolus..."
 
Hors ligne Den's # Posté le 18/08/2009 à 22:41:02
Fils de Sovereign

Ville : Persan
Pays : France métropolitaine

Bonjour,

Le script de connexion marche parfaitement, enfin, si on peut le dire.
Le problème, c'est que mon copain, il m'aide en tant que testeur, dans la table membres, je suis le premier inscrit et lui le 2e.
Quand il s'était inscript, un lien menait directement au jeu.
Qu'est-ce qu'il voyait ? Les données de mon compte que j'avais choisis à l'isncription (sauf le mot de passe).

J'ai supprimé les deux enregistrement de la table, et on s'est réinscrit, il y a encore le bug mais dans le sens contraire. Moi je suis connecté sur le sien.

Si pouvez m'aider.
Voici le script co_ok.php :
Secret (cliquez pour afficher)
Code : PHP
 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
<?php
session_start();
 
// Message
 
if (empty($_POST['nom']) || empty($_POST['mot_de_passe']) ) //Oublie d'un champ
{
        $message = '<p>une erreur s\'est produite pendant votre identification.
        Vous devez remplir tous les champs.
        Cliquez <a href="./connexion.php">ici</a> pour revenir</p>';
}
else
{
        //Acces interdit : le membre est déjà connecté
        if (isset($_SESSION['nom'])) 
        {
                $message ='<p>Désolé mais vous ne pouvez 
                pas accéder à cette page.</p>';
        }
        else // Autorisation ok : il reste à voir le mot de passe
        {
        mysql_connect('localhost', 'conquete_hv', 'vanille');
        mysql_select_db('conquete_hv');
       
       
        //On protège les données
        $nom = htmlspecialchars(mysql_real_escape_string($_POST['nom']));
        $mdp = md5($_POST['mot_de_passe']);
        
        $query = mysql_query("SELECT COUNT(*) As `nb_entre` FROM membres WHERE nom = '$nom' AND mot_de_passe = '" . $mdp . "'") or die (mysql_error());
        $data = mysql_fetch_array($query);
 
        if($data['nb_entre'] == 1){
	// Connexion
	
	$_SESSION['nom'] = ' . $nom . ';
	$_SESSION['id'] = $data['idmembre'];
	$_SESSION['rang'] = $data['rang'];
	
	$message = 'Vous êtes connecté.<br />
		Cliquez <a href="game.php">ici</a> pour rejoindre le jeu.';
	}
	else{
	// Id incorrect
	$message = 'La connexion à été un échec.<br />
		Merci de bien vouloir <a href="connexion.php">revenir à la page précédente</a>.';
	}
}
}
//Ici seulement on affiche la page
?>
<html>
	<head>
		<title>
			Virtual Human - Confirmation de la connexion
		</title>
	</head>
	<body>
<div id="banniere"></div>
<div id="corps_forum">
<?php
echo $message;
?>
</div>
</body>
</html>


Qu'est-ce qui ne va pas là-dedans ?
Il paraît que c'est la requête qui a un problème ? Mais où ?

Merci comme même.

PHP : 70%
HTML : 90%
CSS : 50%
C++/QT : 1%

Envie de participer à la création d'un jeu en ligne de guerre dans l'espace ? Et qui n'est pas un OGame-like ?
Alors, Clique ici... ;)

"2 millions de morts le premier jour, 7 millions de plus la fin de la première semaine." - Mass Effect 3

Cherche joueur Call Of Duty Modern Warfare 2 sur PC...

I'm Sovereign...
"Ma race transcende votre compréhension..."
"Nous sommes éternels, nous n'avons ni commencement, ni fin... Nous sommes absolus..."
 
Hors ligne louf404 # Posté le 18/08/2009 à 22:51:47
Avatar

J'ai pas vraiment cherché ton problème (ni lu les message précédents) mais :
Tout d'abord merci de donner tes identifiant sql (ça peut toujours servir :lol: )
Sinon pour éviter les hackages à coup de dictionnaire :
Code : PHP
1
2
<?php
hash('sha512', strlen($_POST['mot_de_passe']) . 'Sg1h8iuMOp53' . $_POST['mot_de_passe']);

Par exemple, c'est beaucoup mieux ;)
MET DES POINT VIRGULES A LA FIN DES REQUÊTES SQL !!!!
Et les ` dans les nom sql sont facultatifs s'il n'y a pas d'espaces (comme ici)
;)
Édité le 18/08/2009 à 22:52:38 par louf404
Hors ligne Den's # Posté le 18/08/2009 à 23:02:29
Fils de Sovereign

Ville : Persan
Pays : France métropolitaine

A la fin des requêtes Sql ? Hum, hum, regarde après mysql_error, ohhh, c'est quoi ? un point-virgule ! :o (ironie) :lol:
Édité le 18/08/2009 à 23:02:52 par Den's

PHP : 70%
HTML : 90%
CSS : 50%
C++/QT : 1%

Envie de participer à la création d'un jeu en ligne de guerre dans l'espace ? Et qui n'est pas un OGame-like ?
Alors, Clique ici... ;)

"2 millions de morts le premier jour, 7 millions de plus la fin de la première semaine." - Mass Effect 3

Cherche joueur Call Of Duty Modern Warfare 2 sur PC...

I'm Sovereign...
"Ma race transcende votre compréhension..."
"Nous sommes éternels, nous n'avons ni commencement, ni fin... Nous sommes absolus..."
 
Hors ligne Cartman34 # Posté le 18/08/2009 à 23:10:17
Volonté est connaissance.

Études : Université Montpellier 2

Je pense que ton erreur vient de la...
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?php
(...)
$query = mysql_query("SELECT COUNT(*) As `nb_entre` FROM membres WHERE nom = '$nom' AND mot_de_passe = '" . $mdp . "'") or die (mysql_error());
        $data = mysql_fetch_array($query);
 
        if($data['nb_entre'] == 1){
	// Connexion
	
	$_SESSION['nom'] = ' . $nom . ';
	$_SESSION['id'] = $data['idmembre'];
	$_SESSION['rang'] = $data['rang'];
[...]
?>

Ta requete ne te renvoie que la valeur de `nb_entre` et toi tu y cherches 'idmembre' et 'rang' qui n'existe pas dans ce tableau.
Tu l'aurais vu si tu avais mis un error_reporting(E_ALL); au début de ton script.
Mais aussi en faisant quelques tests...

Mais rassures toi cloudstrife, moi non plus j'ai pas compris le trip de louf404 (Cerveau not found, XD, le prend pas mal, c'est une blagounette).
Édité le 18/08/2009 à 23:10:56 par Cartman34

Wordpress API, Google Maps API, OpenLayers, Flickr;
Blender; Eclipse, VS2010, Notepad++, Geany; Gimp, Photoshop; Poedit;
Administration système & réseaux; Hardware,
Montage PC; Admin Windows & Linux.
Cartman34 SWP, Anek.me, STAART...
Framework PHP Orpheus en développement !
PHP, Python, Perl; MySQL, Oracle 9i; C, C++ (+Qt), C#; JAVA; Bash/Shell;
(x)HTML, CSS, JS (+JQuery); Flex, YACC/Bison; (Scheme, LISP, Maple;)
 
Hors ligne Den's # Posté le 19/08/2009 à 08:35:54
Fils de Sovereign

Ville : Persan
Pays : France métropolitaine

Excuse-moi, mais peux-tu expliquer plus clairement ? Je n'ai pas trop compris. :-°

Sinon pour le trip de Louf404, je suis bien d'accord.

PHP : 70%
HTML : 90%
CSS : 50%
C++/QT : 1%

Envie de participer à la création d'un jeu en ligne de guerre dans l'espace ? Et qui n'est pas un OGame-like ?
Alors, Clique ici... ;)

"2 millions de morts le premier jour, 7 millions de plus la fin de la première semaine." - Mass Effect 3

Cherche joueur Call Of Duty Modern Warfare 2 sur PC...

I'm Sovereign...
"Ma race transcende votre compréhension..."
"Nous sommes éternels, nous n'avons ni commencement, ni fin... Nous sommes absolus..."
 
Hors ligne Cartman34 # Posté le 19/08/2009 à 09:14:26
Volonté est connaissance.

Études : Université Montpellier 2

Regarde le code que je t'ai donné, dans ta requete, tu ne sélectionnes que le nombre d'entrées `nb_entre`, donc MySQL ne va te donner que le nombre d'entrée.
Quand tu fous le résultat dans $data, ce tableau ne contient que le nombre d'entrée.
Donc quand tu fais:
$_SESSION['id'] = $data['idmembre'];
$_SESSION['rang'] = $data['rang'];
'idmembre' et 'rang' n'existe pas dans le tableau $data (et pour ça, PHP génère une notice) alors ils vont renvoyer du vide.
Donc $_SESSION['id'] et $_SESSION['rang'] contiennent du vide normalement.

Je pense que tu t'y es mal pris, tu n'aurais pas du sélectionner le nombre d'entrées, on n'en a rien à faire, tu dois sélectionner l'id du membre et son rang (ce que tu as besoin) et si c'est vide, l'utilisateur n'existe pas.

De plus, je viens de remarquer que tu as fait:
$_SESSION['nom'] = ' . $nom . ';
Alors $_SESSION['nom'] contiendra STRICTEMENT ' . $nom . ', si tu l'affiches, tu verras ' . $nom . ' et NON le pseudo de l'utilisateur.
Tu t'es surement pris la tête pour rien...mais voici ce que tu aurais du avoir:
$_SESSION['nom'] = $nom;

Wordpress API, Google Maps API, OpenLayers, Flickr;
Blender; Eclipse, VS2010, Notepad++, Geany; Gimp, Photoshop; Poedit;
Administration système & réseaux; Hardware,
Montage PC; Admin Windows & Linux.
Cartman34 SWP, Anek.me, STAART...
Framework PHP Orpheus en développement !
PHP, Python, Perl; MySQL, Oracle 9i; C, C++ (+Qt), C#; JAVA; Bash/Shell;
(x)HTML, CSS, JS (+JQuery); Flex, YACC/Bison; (Scheme, LISP, Maple;)
 
Hors ligne xrorox # Posté le 19/08/2009 à 09:21:46

Études : SUPINFO Alsace à Illkirch

Citation : cloudstrife
A la fin des requêtes Sql ? Hum, hum, regarde après mysql_error, ohhh, c'est quoi ? un point-virgule ! :o (ironie) :lol:


C'était une mini-blagounette contre lui ?

Ou c'est que tu n'as pas compris ce qu'il voulait dire ? (en l'occurence $requêteSQL=" ... ;";)
C'est sur ce forum, que j'ai découvert que le ; n'était pas obligatoire à la fin de la requête SQL, on me tapait les doigts en cours si je le mettais pas. :p
 
Hors ligne Cartman34 # Posté le 19/08/2009 à 09:25:44
Volonté est connaissance.

Études : Université Montpellier 2

En fait, il faut PAS le mettre.
Le ";" est un séparateur de requete sous phpmyadmin, il permet juste à phpmyadmin de séparer les différentes requetes.
Mais je paris que même lui, il les enlève.

Mais franchement xrorox, je pensais pas qu'un jour je verrais quelqu'un dire que c'est obligatoire.
Ce serait comme dire que les parenthèses sont obligatoires avec un ECHO...
Édité le 19/08/2009 à 09:26:00 par Cartman34

Wordpress API, Google Maps API, OpenLayers, Flickr;
Blender; Eclipse, VS2010, Notepad++, Geany; Gimp, Photoshop; Poedit;
Administration système & réseaux; Hardware,
Montage PC; Admin Windows & Linux.
Cartman34 SWP, Anek.me, STAART...
Framework PHP Orpheus en développement !
PHP, Python, Perl; MySQL, Oracle 9i; C, C++ (+Qt), C#; JAVA; Bash/Shell;
(x)HTML, CSS, JS (+JQuery); Flex, YACC/Bison; (Scheme, LISP, Maple;)
 
Hors ligne xrorox # Posté le 19/08/2009 à 09:49:34

Études : SUPINFO Alsace à Illkirch

Bah, je ne répète que ce que mon prof de SQL m'a appris, enfin il a vait peut être pas dit obligatoire mais de toujours en mettre, à force ca ancre les habitudes.
Mais j'ai jamais essayé avec php my admin. On a appris en utilisant microsoft SQL serveur sur un OS virtualisé.
Et comme je suis en stage dans une entreprise microsoft gold partner. J'ai pas essayés d'autres SGBD que ceux de microsoft. Mais j'ai pas testé sans le ;
 
Hors ligne Den's # Posté le 19/08/2009 à 09:56:05
Fils de Sovereign

Ville : Persan
Pays : France métropolitaine

Citation : IGstaff
Ce serait comme dire que les parenthèses sont obligatoires avec un ECHO...


Même moi je ne les mets plus. :lol: :-°

EDIT : idmembre et rang sont deux colonnes dans la table membres.
EDIT² : Résolu ! Je n'avais qu'à changé le $nom.
Édité le 19/08/2009 à 10:02:09 par Den's

PHP : 70%
HTML : 90%
CSS : 50%
C++/QT : 1%

Envie de participer à la création d'un jeu en ligne de guerre dans l'espace ? Et qui n'est pas un OGame-like ?
Alors, Clique ici... ;)

"2 millions de morts le premier jour, 7 millions de plus la fin de la première semaine." - Mass Effect 3

Cherche joueur Call Of Duty Modern Warfare 2 sur PC...

I'm Sovereign...
"Ma race transcende votre compréhension..."
"Nous sommes éternels, nous n'avons ni commencement, ni fin... Nous sommes absolus..."
 
Hors ligne louf404 # Posté le 19/08/2009 à 10:18:41
Avatar

1) Les parenthèses autours des echo, include .. etc -> c'est plus rapide si on n'en met pas ;)
2) Sisi je met toujours un point-virgules à la fin ;)
3) Si vous utilisiez le SGBD en mode console, vous comprendriez
4) Renseignez-vous avant de dire ces choses (même si l'intention n'était pas méchante)
5) Utilise PDO, c'est dépassé tout ces mysql_*
6) En effet le problème vient du fait que tu ne demande pas les infos au SGBD ;)
7) NE MET PAS UN COUNT(*) AVEC UN WHERE !!!!
A LA PLACE : UN COUNT(id) EST BIEN PLUS EFFICACE !!!

8) Ça ne sert à rien de mettre un htmlspecialchars pour rentrer une donnée dans la bbd, cette fonction sert uniquement pour l'affichage ;)

9) Si tu utilise des LIKE, mysql_real_escape_string n'est pas suffisante pour protéger les données étant donné qu'elle n'échappe pas les % et _ ;)
Et même ça ne reste pas aussi sécurisé que de faire une requête préparée :-°

10) Question de principe : on met toujours les mot-clé SQL en majuscule (cf ton As en AS)
11) C'est mal indenté
12) On dit quand même ;)
Édité le 19/08/2009 à 10:51:27 par louf404
Hors ligne Cartman34 # Posté le 19/08/2009 à 10:33:42
Volonté est connaissance.

Études : Université Montpellier 2

louf404, crois tu que PDO est ce qu'il y a de mieux ?
J'ai fait mes propres fonctions et c'est beaucoup plus simple, elles gèrent toutes les erreurs te fournissent les outils nécessaire car le faire soit même c'est exactement ce qu'il y a de mieux, on a que et tout ce qu'on veut.

Il n'y a aucun intérêt à gérer les bases de données en mode console...

Il n'a pas mis de COUNT(*) dans sa Whereclause et il est conseillé de compter les lignes avec COUNT(*) plutôt que compter les colonnes avec COUNT(id)

Enfin, je suis énormément renseigné, car je lis (que dis-je ! j'engloutis) des tonnes de docs officielles par jour et je fais énormément de test.
Édité le 19/08/2009 à 10:34:57 par Cartman34

Wordpress API, Google Maps API, OpenLayers, Flickr;
Blender; Eclipse, VS2010, Notepad++, Geany; Gimp, Photoshop; Poedit;
Administration système & réseaux; Hardware,
Montage PC; Admin Windows & Linux.
Cartman34 SWP, Anek.me, STAART...
Framework PHP Orpheus en développement !
PHP, Python, Perl; MySQL, Oracle 9i; C, C++ (+Qt), C#; JAVA; Bash/Shell;
(x)HTML, CSS, JS (+JQuery); Flex, YACC/Bison; (Scheme, LISP, Maple;)
 
Hors ligne louf404 # Posté le 19/08/2009 à 10:39:08
Avatar

Oui je pense que PDO est un pas à faire car en php 6, les ancienne fonctions mysql_* et mysqli seront remplacée par ça.
Cette extension est codée en C donc plus rapide, elle permet de pouvoir facilement changer de SGBD (même très facilement :lol: ). Et elle facilite énormément les requêtes préparées ;) . Et de plus elle coupe automatiquement les transactions si le script doit fermer subitement.

Sinon un COUNT(*) tout seul est plus rapide car le SGBD va cherché l'info dans le cache... mais si on met un where, il va devoir recompter toutes les lignes (donc si on n'indique qu'une colonne, c'est plus rapide).
Ce n'est pas moi qui l'invente par pure déduction beaucoup de gens sur ce site pourront le dire ;)
Édité le 19/08/2009 à 10:41:34 par louf404
Hors ligne xrorox # Posté le 19/08/2009 à 10:53:40

Études : SUPINFO Alsace à Illkirch

Merci louf404 sur la précision en mode console.

Je me pose une question d'ailleurs, apparemment dans le cadre du php le ; n'est pas obligatoire, enfin bon j'ai l'habitude d ele mettre. Mais quand on fait appel au SQL à partir d'autres langages. Je pense par exemple au C++ dans le cadre d'un logiciel qui irait enregistrer des infos dans une base de données. L'oubli du point virgule peut il être source d'erreur ?

 
Hors ligne louf404 # Posté le 19/08/2009 à 11:02:06
Avatar

Ce qui est bizarre est que je pense que ces fonctions exécutent tout simplement une commande shell ce qui est équivalent à faire la requête en mode console au final...
Mon avis est que la fonction vérifie si le point virgule est présent et sinon il le rajoute...
Le problème est que l'on peut changer le séparateur de fin de requête (l'utilité est présente si on fait des procédure stockée par exemple ;) )
Donc au final ce n'est pas sur qu'il rajoute le séparateur, à moins que l'on puisse récupérer le type de séparateur à l'aide d'une requête sql (mais dans ce cas la, qu'est-ce que l'on met à la fin de cette requête ? :lol: )
Bref je ne sais pas comment ils font parce que au final c'est plutôt compliqué ;)
Sinon je n'ai jamais eu besoin d'utiliser les BBD dans un autre language que le php donc je ne peux pas dire...
^^
Hors ligne Cartman34 # Posté le 19/08/2009 à 11:14:44
Volonté est connaissance.

Études : Université Montpellier 2

louf404, ces fonctions portent à disparaitre des librairies par défaut mais elles seront toujours disponibles.
De toute façon, je ne vois là que l'avantage d'utiliser mes propres fonctions, car je n'ai qu'à leur modifier 3-4 lignes, rajouter la construction de la classe et puis tous mes sites sont compatibles.

Mais supprimer brutalement les fonctions natives mysql_* est un peu idiot, normalement on doit garder les anciennes fonctions pour des raisons dites historiques et là ce n'est pas respecté.
PHP6 ne devrait donc qu'avoir très peu de succès, du moins au début.
Mais perso, j'attends avec impatience la sortie des paquets officiels stables.

Enfin, pour revenir sur le COUNT(*), par déduction...ce n'est pas franchement logique et peu de personne sur ce forum ont la moindre connaissances en quoi que ce soit de technique en PHP/MySQL.
le site officiel de mysql conseille d'utiliser COUNT(*) et cela même avec une WHERCLAUSE ou meme quoi que ce soit.
Il n'y a une différence que sur le résultat souhaité si nous voulons l'associer avec DISTINCT.
Donc soit tu fais COUNT(*) pour sélectionner toutes les lignes, soit tu fais COUNT(DISTINCT fieldname) pour compter le nombre de champs fieldname différents.
Édité le 19/08/2009 à 11:15:16 par Cartman34

Wordpress API, Google Maps API, OpenLayers, Flickr;
Blender; Eclipse, VS2010, Notepad++, Geany; Gimp, Photoshop; Poedit;
Administration système & réseaux; Hardware,
Montage PC; Admin Windows & Linux.
Cartman34 SWP, Anek.me, STAART...
Framework PHP Orpheus en développement !
PHP, Python, Perl; MySQL, Oracle 9i; C, C++ (+Qt), C#; JAVA; Bash/Shell;
(x)HTML, CSS, JS (+JQuery); Flex, YACC/Bison; (Scheme, LISP, Maple;)
 
Hors ligne Den's # Posté le 19/08/2009 à 16:11:53
Fils de Sovereign

Ville : Persan
Pays : France métropolitaine

Le bug du mélange des comtpes recommence, personne n'a une solution ?

Secret (cliquez pour afficher)
Code : PHP
 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
<?php
session_start();
 
// Message
 
if (empty($_POST['nom']) || empty($_POST['mot_de_passe']) ) //Oublie d'un champ
{
        $message = '<p>une erreur s\'est produite pendant votre identification.
        Vous devez remplir tous les champs.
        Cliquez <a href="./connexion.php">ici</a> pour revenir</p>';
}
else
{
        //Acces interdit : le membre est déjà connecté
        if (isset($_SESSION['nom'])) 
        {
                $message ='<p>Désolé mais vous ne pouvez 
                pas accéder à cette page.</p>';
        }
        else // Autorisation ok : il reste à voir le mot de passe
        {
        mysql_connect('localhost', 'conquete_hv', 'vanille');
        mysql_select_db('conquete_hv');
       
       
        //On protège les données
        $nom = htmlspecialchars(mysql_real_escape_string($_POST['nom']));
        $mdp = md5($_POST['mot_de_passe']);
        
        $query = mysql_query("SELECT COUNT(*) AS `nb_entre` FROM membres WHERE nom = '$nom' AND mot_de_passe = '" . $mdp . "'") or die (mysql_error());
        $data = mysql_fetch_array($query);
 
        if($data['nb_entre'] == 1){
	// Connexion
	
	$_SESSION['nom'] = $nom;
	$_SESSION['id'] = $data['idmembre'];
	$_SESSION['rang'] = $data['rang'];
	
	$message = 'Vous êtes connecté.<br />
		Cliquez <a href="game.php">ici</a> pour rejoindre le jeu.';
	}
	else{
	// Id incorrect
	$message = 'La connexion à été un échec.<br />
		Merci de bien vouloir <a href="connexion.php">revenir à la page précédente</a>.';
	}
}
}
//Ici seulement on affiche la page
?>
<html>
	<head>
		<title>
			Virtual Human - Confirmation de la connexion
		</title>
	</head>
	<body>
<div id="banniere"></div>
<div id="corps_forum">
<?php
echo $message;
?>
</div>
</body>
</html>
Édité le 19/08/2009 à 16:13:11 par Den's

PHP : 70%
HTML : 90%
CSS : 50%
C++/QT : 1%

Envie de participer à la création d'un jeu en ligne de guerre dans l'espace ? Et qui n'est pas un OGame-like ?
Alors, Clique ici... ;)

"2 millions de morts le premier jour, 7 millions de plus la fin de la première semaine." - Mass Effect 3

Cherche joueur Call Of Duty Modern Warfare 2 sur PC...

I'm Sovereign...
"Ma race transcende votre compréhension..."
"Nous sommes éternels, nous n'avons ni commencement, ni fin... Nous sommes absolus..."
 
Hors ligne louf404 # Posté le 19/08/2009 à 16:47:18
Avatar

Peux-être si tu faisais ce qu'on te disait ?
Regarde ta requête, elle a pas changée...
Hors ligne Den's # Posté le 19/08/2009 à 18:17:01
Fils de Sovereign

Ville : Persan
Pays : France métropolitaine

Voici maintenant la requête :
Code : SQL
1
$query = mysql_query("SELECT COUNT(idmembre) AS `nb_entre` FROM membres WHERE nom = '$nom' AND mot_de_passe = '" . $mdp . "'") or die (mysql_error());


Et rien ne change pour autant.

PHP : 70%
HTML : 90%
CSS : 50%
C++/QT : 1%

Envie de participer à la création d'un jeu en ligne de guerre dans l'espace ? Et qui n'est pas un OGame-like ?
Alors, Clique ici... ;)

"2 millions de morts le premier jour, 7 millions de plus la fin de la première semaine." - Mass Effect 3

Cherche joueur Call Of Duty Modern Warfare 2 sur PC...

I'm Sovereign...
"Ma race transcende votre compréhension..."
"Nous sommes éternels, nous n'avons ni commencement, ni fin... Nous sommes absolus..."
 
Hors ligne Single Dark # Posté le 19/08/2009 à 18:26:57
ʎon ʍıll qǝ ɥɐɔʞǝp
Avatar

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<?php

        $query = mysql_query ('SELECT * FROM membres WHERE nom="'.$nom.'" ') or exit (mysql_error());
        $data = mysql_fetch_array($query);
 
        if($mdp == $data['mot_de_passe']){
	// Connexion
	
	$_SESSION['nom'] = $nom;
	$_SESSION['id'] = $data['idmembre'];
	$_SESSION['rang'] = $data['rang'];
	
	$message = 'Vous êtes connecté.<br />
		Cliquez <a href="game.php">ici</a> pour rejoindre le jeu.';
	}

?>

Image utilisateur
Image utilisateur

 
Hors ligne louf404 # Posté le 19/08/2009 à 18:28:51
Avatar

@Single Dark : il ne peut plus savoir le nombre de lignes comme ça et ON NE MET JAMAIS DE * !

Code : SQL
1
SELECT COUNT(idmembre),nom, idmembre AS id, rang AS nb_entre FROM membres;

:waw:
Hors ligne Single Dark # Posté le 19/08/2009 à 18:30:07
ʎon ʍıll qǝ ɥɐɔʞǝp
Avatar

@louf pour le '*' j'ai simplifier je connais pas sa table.

Image utilisateur
Image utilisateur

 
Hors ligne Den's # Posté le 19/08/2009 à 18:36:58
Fils de Sovereign

Ville : Persan
Pays : France métropolitaine

La connexion a été un échec. (pour celle de louf404)
Et le bug. (pour celle de Single Dark)
Pourquoi ?

PS : j'ai pris vos deux requêtes.
Édité le 19/08/2009 à 18:37:42 par Den's

PHP : 70%
HTML : 90%
CSS : 50%
C++/QT : 1%

Envie de participer à la création d'un jeu en ligne de guerre dans l'espace ? Et qui n'est pas un OGame-like ?
Alors, Clique ici... ;)

"2 millions de morts le premier jour, 7 millions de plus la fin de la première semaine." - Mass Effect 3

Cherche joueur Call Of Duty Modern Warfare 2 sur PC...

I'm Sovereign...
"Ma race transcende votre compréhension..."
"Nous sommes éternels, nous n'avons ni commencement, ni fin... Nous sommes absolus..."
 
Hors ligne Cartman34 # Posté le 20/08/2009 à 08:55:20
Volonté est connaissance.

Études : Université Montpellier 2

Pourtant on t'a donné la solution cloudstrife !
Mais ne fais pas de COUNT ici, c'est inutile !

Voici la solution:
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?php
        $query = mysql_query("SELECT idmembre, nom, rang FROM membres WHERE nom = '$nom' AND mot_de_passe = '" . $mdp . "'") or die (mysql_error());
        $data = mysql_fetch_assoc($query);
 
        if( !empty($data) ) {
	// Connexion
	
	$_SESSION['nom'] = $data['nom']; ///on doit toujours attribuer le nom enregistrer par l'utilisateur à son enregistrement !
	$_SESSION['id'] = $data['idmembre'];
	$_SESSION['rang'] = $data['rang'];
	
	$message = 'Vous êtes connecté.<br />
		Cliquez <a href="game.php">ici</a> pour rejoindre le jeu.';
	}
	else{
	// Id incorrect
	$message = 'La connexion à été un échec.<br />
		Merci de bien vouloir <a href="connexion.php">revenir à la page précédente</a>.';
	}
?>

Si tu veux qu'on t'aide, t'es prié de nous écouter.
Édité le 20/08/2009 à 08:56:25 par Cartman34

Wordpress API, Google Maps API, OpenLayers, Flickr;
Blender; Eclipse, VS2010, Notepad++, Geany; Gimp, Photoshop; Poedit;
Administration système & réseaux; Hardware,
Montage PC; Admin Windows & Linux.
Cartman34 SWP, Anek.me, STAART...
Framework PHP Orpheus en développement !
PHP, Python, Perl; MySQL, Oracle 9i; C, C++ (+Qt), C#; JAVA; Bash/Shell;
(x)HTML, CSS, JS (+JQuery); Flex, YACC/Bison; (Scheme, LISP, Maple;)
 
Hors ligne Den's # Posté le 20/08/2009 à 09:51:05
Fils de Sovereign

Ville : Persan
Pays : France métropolitaine

J'ai beau me déconnecter à partir du compte de mon copain, je me reconnecte sur mes identifiants, je serais toujours sur son compte. :(

PHP : 70%
HTML : 90%
CSS : 50%
C++/QT : 1%

Envie de participer à la création d'un jeu en ligne de guerre dans l'espace ? Et qui n'est pas un OGame-like ?
Alors, Clique ici... ;)

"2 millions de morts le premier jour, 7 millions de plus la fin de la première semaine." - Mass Effect 3

Cherche joueur Call Of Duty Modern Warfare 2 sur PC...

I'm Sovereign...
"Ma race transcende votre compréhension..."
"Nous sommes éternels, nous n'avons ni commencement, ni fin... Nous sommes absolus..."
 
Hors ligne Cartman34 # Posté le 20/08/2009 à 10:19:54
Volonté est connaissance.

Études : Université Montpellier 2

Cela vient peut etre de la déconnexion alors !!!

Wordpress API, Google Maps API, OpenLayers, Flickr;
Blender; Eclipse, VS2010, Notepad++, Geany; Gimp, Photoshop; Poedit;
Administration système & réseaux; Hardware,
Montage PC; Admin Windows & Linux.
Cartman34 SWP, Anek.me, STAART...
Framework PHP Orpheus en développement !
PHP, Python, Perl; MySQL, Oracle 9i; C, C++ (+Qt), C#; JAVA; Bash/Shell;
(x)HTML, CSS, JS (+JQuery); Flex, YACC/Bison; (Scheme, LISP, Maple;)
 
Hors ligne Den's # Posté le 20/08/2009 à 10:36:59
Fils de Sovereign

Ville : Persan
Pays : France métropolitaine

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?php
	session_start();
	session_unset();
	session_destroy();
?>
<html>
	<head>
		<title>
			Virtual Human - Déconnexion
		</title>
	</head>
	<body>
		<p>
			Vous êtes déconnecté,<br />
			Merci de revenir à la <a href="index.php">page d'accueil</a>.
		</p>
	</body>
</html>


Je vois rien d'anormal.

PHP : 70%
HTML : 90%
CSS : 50%
C++/QT : 1%

Envie de participer à la création d'un jeu en ligne de guerre dans l'espace ? Et qui n'est pas un OGame-like ?
Alors, Clique ici... ;)

"2 millions de morts le premier jour, 7 millions de plus la fin de la première semaine." - Mass Effect 3

Cherche joueur Call Of Duty Modern Warfare 2 sur PC...

I'm Sovereign...
"Ma race transcende votre compréhension..."
"Nous sommes éternels, nous n'avons ni commencement, ni fin... Nous sommes absolus..."
 
Hors ligne Cartman34 # Posté le 20/08/2009 à 11:15:05
Volonté est connaissance.

Études : Université Montpellier 2

Ajoute:
setcookie(session_name(), '', TIME-42000, "/");
Avant le session_destroy();

Mais je doute que ce soit l'origine de ton problème.

Si ce n'est pas l'origine du problème, tu n'as plus qu'à tester le contenu de tes variables SESSION à la connexion.

Wordpress API, Google Maps API, OpenLayers, Flickr;
Blender; Eclipse, VS2010, Notepad++, Geany; Gimp, Photoshop; Poedit;
Administration système & réseaux; Hardware,
Montage PC; Admin Windows & Linux.
Cartman34 SWP, Anek.me, STAART...
Framework PHP Orpheus en développement !
PHP, Python, Perl; MySQL, Oracle 9i; C, C++ (+Qt), C#; JAVA; Bash/Shell;
(x)HTML, CSS, JS (+JQuery); Flex, YACC/Bison; (Scheme, LISP, Maple;)
 

Retour au forum "PHP" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx