Page 1 sur 2
recherche fonction pour empecher l'action sql(resolu)
Posté : 17 oct. 2010, 01:57
par aurel08
bonjour,
je recherche une fonction qui empeche l'action sql si la valeur du champ et vide merci de me donné un exemple de code car je trouve pas du tout et aussi un code pour que les mot passe entré dans le champ mot de passe soit crypter dans la base de donée mysql!
merci a tous
Re: recherche fonction pour empecher l'action sql
Posté : 17 oct. 2010, 02:22
par mgone
bonjour
vos paramètres insérer dans la raquette sont envoyer par un formulaire Get ou Post non?
donc il vous suffi de contrôler ces paramètres sinon msg d'erreur
vous avez plusieurs choix selon votre besoin :
emtpy($var) retoure FALSE si var à une valeur non vide et différente de zéro.
ou
isset($var) renvoie TRUE si la variable var est définie, FALSE sinon.
ou tout simplement
if($var != "") : veut dire si la valeur différent du vide
voila un exemple de code
pour le cryptage je te conseille le md5
$pass = 'monmotdepasse';
$passecrypter = md5($pass);
le résulta sera une chaine de 32 comme ça : 1f3870be274f6c49b3e31a0c6728957f
pour le formulaire de connexion ou de contrôle
Code : Tout sélectionner
<?php
$pass = GET ou POST du mot de passe
if (md5($pass) == '1f3870be274f6c49b3e31a0c6728957f') echo "ok"; else echo 'erreur mot de passe' ;
?>
Re: recherche fonction pour empecher l'action sql
Posté : 17 oct. 2010, 03:40
par aurel08
je suis en post je veut un exemple de code s'il vous plais merci
Re: recherche fonction pour empecher l'action sql
Posté : 17 oct. 2010, 09:49
par Ryle
Sans vouloir paraître désagréable, il me semble que le message de mgone n'est constitué QUE d'exemples de code. Tu disposes même d'explications détaillées pour comprendre comment php fonctionne et comment mettre en pratique ce dont tu as besoin...
Maintenant, si ce que tu souhaites c'est un code tout fait qui fonctionne et que tu n'as plus qu'à mettre en ligne, on peut te proposer un devis, y a des développeurs et des boites de services qui ne vivent que de ça

On est là pour t'aider à comprendre et à apprendre, pas pour le faire à ta place
Et pour répondre à ta question, si ton formulaire envoi ses données en GET, tu utilises $_GET['nom_de_ton_champ'] pour les récupérer. S'il les envoi en POST, il te faut simplement utiliser $_POST['nom_de_ton_champ']

Re: recherche fonction pour empecher l'action sql
Posté : 17 oct. 2010, 10:04
par aurel08
bonjour,
avec
$mdp = $_POST['mdp'];
if (md5($mdp) == '1f3870be274f6c49b3e31a0c6728957f') echo "ok"; else echo 'erreur mot de passe' ;
le mot de passe se crypte pas du tout j'ai fait une erreur de code voci ma page pour vous montrer ou je les peut etre que j'ai fait une erreur
<?php
// on declare toutes les variables
$login = $_POST['login'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
$mdp = $_POST['mdp'];
$verifmdp = $_POST['verifmdp'];
// on verifie que les 2 mot de passe sont identique.
if ($mdp != $verifmdp)
{
echo " <br />erreur : Attention les 2 mot de passe sont différent";
}
if( isset( $_POST['login'] ) && isset ( $_POST['nom'] ) && isset ( $_POST['prenom'] ) && isset ( $_POST['email'] ) && isset ( $_POST['mdp'] ) && isset ( $_POST['verifmdp'] ) )
{
echo "champ vide";
}
function getPassword($login) {
global $dbh;
$uid = $dbh->quote($login);
$requete = "SELECT mdp FROM login WHERE uid='$uid'";
$sth = $dbh->query($requete);
$result = $sth->fetch(PDO::FETCH_ASSOC);
if(!empty($result['mdp'])) {
return $result['mdp'];
} else {
return FALSE;
}
}
function newPassword($login, $mdp) {
$crypt = crypt($mdp);
return setPassword($login, $crypt);
}
// on se connect sous mysql
try
{
$bdd = new PDO('mysql:host=localhost;dbname=sogamesm', 'sogamesm', '*************');
$bdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
}
catch(PDOException $e)
{
exit($e->getMessage());
}
$mdp = $_POST['mdp'];
if (md5($mdp) == '1f3870be274f6c49b3e31a0c6728957f') echo "ok"; else echo 'erreur mot de passe' ;
$req = $bdd->prepare('INSERT INTO register_sogamesm(login, nom, prenom, email, mdp) VALUES(:login, :nom, :prenom, :email, :mdp)');
$req->execute(array(
'login' => $login,
'nom' => $nom,
'prenom' => $prenom,
'email' => $email,
'mdp' => $mdp,
));
echo 'votre compte a bien été enregistré';
?>
Re: recherche fonction pour empecher l'action sql
Posté : 17 oct. 2010, 10:23
par Ryle
La fonction md5() retourne la valeur crypté de la variable passée en argument, mais ne change pas cette variable
Si tu veux récupérer la valeur cryptée pour pouvoir ensuite l'insérer en base il te faut soit remplacer la valeur de $mdp, soit faire appel à md5() au moment de la génération de ta requête :
$mdp = md5($mdp);
Re: recherche fonction pour empecher l'action sql
Posté : 17 oct. 2010, 12:16
par aurel08
le mot de passe se crypt probleme il capte pas mon mot de passe donc il crypt un champ vide et pour la verification du champ j'ai vraiment rien compris au code
Re: recherche fonction pour empecher l'action sql
Posté : 17 oct. 2010, 12:36
par Ryle
Il y a deux étapes à distinguer. L'enregistrement en base du mot de passe crypté lors de la création de l'utilisateur, et la comparaison des mots de passe lors de l'authentification.
Pour le premier, il te faut récupérer le mot de passe saisi en clair par l'utilisateur, crypter celui-ci et l'insérer dans ta base de données. (et tu peux contrôler si celui-ci est vide ou non de la même manière que tu vérifies s'il est identique à celui envoyé pour confirmation).
Pour le second, l'utilisateur va là encore t'envoyer un mot de passe en clair. Il te faut donc crypter celui-ci et comparer la valeur obtenue à celle précédemment enregistrée en base. Si les deux concordent, c'est que le mot de passe est correct

Re: recherche fonction pour empecher l'action sql
Posté : 17 oct. 2010, 12:50
par aurel08
vocii se que sa me donne mais comment faire pour le decrypter pour etre sur que sa été bien se que j'ai mis merci et je veut une focntion pour mes champ vide svp
Re: recherche fonction pour empecher l'action sql
Posté : 17 oct. 2010, 13:41
par Ryle
Ce qui est bien avec md5, c'est qu'on ne peut pas le décrypter pour retrouver le mot de passe d'origine et pirater un compte. Du coup pour vérifier les que les mots de passe correspondent, comme indiqué ci dessus, on compare les valeurs cryptées.
Et voici une fonction pour tes champs vides : empty()
Re: recherche fonction pour empecher l'action sql
Posté : 17 oct. 2010, 16:55
par aurel08
ceci ne marche pas
// je verifie que les champs sont bon.
if( (!empty($login)) || (!empty($nom)) || (!empty($prenom)) || (!empty($email)) || (!empty($mdp)) || (!empty($verfimdp)) ) {
echo "les champ sont correct est remplie merci";
} else {
echo "les champs sont vide et inccorect";
}
quel est l'erreur
Re: recherche fonction pour empecher l'action sql
Posté : 17 oct. 2010, 18:50
par mgone
remplace tous les || par &&
c'est une erreur de logique:
pour votre cas si tu utilise !empty:
si ("var1 est non vide" et "var2 est non vide" et "var3 est non vide" ) c'est ok , sinon pas ok
pour l'inverse empty seulement
si ("var1 est vide" ou "var2 est vide" ou "var3 est vide" ) c'est pas ok , sinon c'est ok
Re: recherche fonction pour empecher l'action sql
Posté : 18 oct. 2010, 10:59
par aurel08
j'ai mis ceci mais l'action se fait toujour meme si il a rien de remplie que va t'il pas dans le code
<?php
// je verifie que les champs sont bon.
if(!empty($login) && !empty($nom) && !empty($prenom) && !empty($email) && !empty($mdp) && !empty($verfimdp)) {
echo "les champ sont correct est remplie merci";
} else {
echo "les champs sont vide et inccorect";
?>
Re: recherche fonction pour empecher l'action sql
Posté : 18 oct. 2010, 11:45
par xTG
Ce test ne bloque en rien le script qui se déroule par la suite.
Il ne fait qu'afficher un texte ou un autre.
Soit tu inclus le reste de ton code à l'intérieur du if, soit tu ajoutes un die() ou un exit() dans la partie du if qui est fausse, cela aura pour conséquence de stopper l'exécution de la page.
Re: recherche fonction pour empecher l'action sql
Posté : 18 oct. 2010, 12:55
par aurel08
comme ceci ?
<?php
// je verifie que les champs sont bon.
if(!empty($login) && !empty($nom) && !empty($prenom) && !empty($email) && !empty($mdp) && !empty($verfimdp)) {
echo "les champ sont correct est remplie merci";
} else {
echo "les champs sont vide et inccorect";
exit();
$req = $bdd->prepare('INSERT INTO register_sogamesm(login, nom, prenom, email, mdp) VALUES(:login, :nom, :prenom, :email, :mdp)');
$req->execute(array(
'login' => $login,
'nom' => $nom,
'prenom' => $prenom,
'email' => $email,
'mdp' => $mdp,
));
}
?>
car je voit vraiment pas comment regler se probleme