Problème Log In

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 août 2011, 00:21

pour le message d'erreur c'est parce qu'il te manque le fetch

$data->fetch();
if ( ($req->rowCount() > 0) && ($pass == $data->pass)) LIGNE 41

ceci parce que tard je l'ai oublié.

Par contre il serait bon que tu comprenne comment fonctionne PDO.

pour la requête préparée, ce n'est pas utile dans ce cas ;)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 39 Messages

09 août 2011, 12:00

Il sort d'où le $data ?
Oui je crois que je vais revoir le PDO --' #-o

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 août 2011, 16:26

pour le message d'erreur c'est parce qu'il te manque le fetch

$data->fetch();
if ( ($req->rowCount() > 0) && ($pass == $data->pass)) LIGNE 41

ceci parce que tard je l'ai oublié.

Par contre il serait bon que tu comprenne comment fonctionne PDO.

pour la requête préparée, ce n'est pas utile dans ce cas ;)

@+
Il sort d'où le $data ?
Oui je crois que je vais revoir le PDO --' #-o

en fait j'ai merdé c'est $data = $req->fetch(); :/

mais bon revoir le fonctionnement de PDO est une bonne idée (comme tu la remarqué quand on l'utilise pas souvent c'est pas toujours trivial ^^ )

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 39 Messages

11 août 2011, 22:11

ça fonctionne :D Merci beaucoup de m'avoir aidé aussi rapidemment et efficacement. Bye merci !

Mammouth du PHP | 2278 Messages

11 août 2011, 22:43

Questions avariées
1) cette profusion de quotes simples ou doubles, de points de concaténation?
2) $connexion->quote($_POST['pseudo']) et $connexion->quote($_POST['pass'])
3) à quoi sert la fonction quote()?
4)l'emploi de extract se justifie-t-il?

$sql  = "SELECT * ".
        "FROM user ".
        "WHERE pseudo='". $connexion->quote($_POST['pseudo']) ."' ".
        "AND pass='". $connexion->quote($_POST['pass']) ."'";
me semble qu'on gagnerait en simplicité avec
$pseudo = htmlentities ($_POST['pseudo'], ENT_QUOTES, 'UTF-8');
$passe = htmlentities ($_POST['pass'], ENT_QUOTES, 'UTF-8');
$sql  = "SELECT * FROM `user` WHERE (`pseudo` ='$pseudo' AND `pass` = '$passe')"; // ` autour des noms de champs et ' autour des valeurs
print "$requete";
$req = mysql_query($sql);
....
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 août 2011, 23:19

NON !!!!!!

htmlentities ne SERT PAS a "sécuriser" une requête SQL !!!!!! au mieux a l'affichage !

si tu ne sais pas a quoi sert "quote" regarde la doc ;) => http://www.php.net/manual/fr/pdo.quote.php

d'ailleurs ton code utilise l'extension mysql qui est dépréciée au profit de mysqli ou mieux de PDO et c'est cette dernière qui est utilisée ici.

De plus avec l'extension mysql tu utiliserais mysql_real_escape_string en lieu et place de quote dans mon code !

je t'invite a lire quelque tuto sur PDO !


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

12 août 2011, 14:14

Je n'ai jamais dit que htmlentities sert à protéger une requête (et contre quoi?). en revanche:
elle permet d'obtenir une chaine dont les caractères sont transformés en Unicode et les quotes correctement transformées....
ne semble pas que quote() fasse mieux, bien au contraire
Aucun point de la doc php ne déprécie l'extension mysql.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 août 2011, 15:04

Aucun point de la doc php ne déprécie l'extension mysql.
http://www.php.net/manual/fr/intro.mysql.php
Pour une présentation générale de la base de données MySQL, voyez Introduction.
envoie sur => http://www.php.net/manual/fr/mysqli.overview.php <= note bien le i
http://www.php.net/manual/fr/mysql.installation.php
Bien que cette extension MySQL soit compatible avec MySQL 4.1.0 et supérieur, elle ne supporte pas les fonctionnalités supplémentaires que cette version fournit. Pour cela, utilisez plutôt l'extension MySQLi.
et si tu lit http://www.php.net/manual/fr/mysqli.overview.php tu verra que l'extension est en "maintenance" seulement. bref on corrige au mieux, mysqli permet de "mieux" tirer partie des dernière version de mysql. Mais c'est vrai ce n'est pas indiqué explicitement dans la doc de php.

si tu veux faire de l'utf-8 il existe utf_encode et permettre de garder les chaines originelles dans la table.
htmlentities — Convertit tous les caractères éligibles en entités HTML
donc pour l'édition c'est le brin ;)

dans parler du fait que si derrière tu souhaite faire autre chose que du html t'est dans la merde ;)

@+
Il en faut peu pour être heureux ......