Page 1 sur 1

Php foreach qui ne fonctionne pas

Posté : 06 sept. 2014, 20:00
par samtm123
Bonjour à tous,

J'ai un formulaire sur la page d'index qui quand je l'envoie les informations sont prise sur la page enregistrement.php et ainsi les infos sont envoyé dans la base de données. Le problème est que dans les information, le password ne se crypt pas avec le code que j'ai fait et je ne sais pas comment vous l'expliquer. Alors voici le code:
<?php

        $error = 0;
        foreach($_POST as $k => $v) {
                if(empty($_POST[$k])) $error = 1;
        }
        
        if($error == 0) {
                echo 'Les informations on bien été enregistrer.';
        } else {
                echo 'Le formulaire est invalide. S\'il vous plait, veuillez recommencer.';
        }
	

foreach($_POST as $p => $pass) {
                if($pass == .$_POST['password']) {
				$pass = crypt($pass);
        }
		}
$sql = "INSERT INTO oc_users (uid, password) VALUES ('".$_POST['user']."', '".$_POST['password']"')";

mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on ferme la connexion à la base
mysql_close();
		?>
Merci d'avance :)!

Re: Php foreach qui ne fonctionne pas

Posté : 06 sept. 2014, 20:41
par toytoy
J'utilisais le cryptage md5() , Si tu es sous php 5.6 il me semble que tu dois rajouter un paramètre. Bref voici la doc, sa t'aidera surement dans ton problème

http://php.net/manual/fr/function.crypt.php

Re: Php foreach qui ne fonctionne pas

Posté : 06 sept. 2014, 22:13
par moogli
if($pass == .$_POST['password']) {
$pass = crypt($pass);

tu une erreur de syntaxe la ( ==.)

pourquoi utiliser un foreach pour récupérer les champs c'est trop compliqué crypt($_POST['password']); :mrgreen:

pour le hash utilise plutot
password_hash et password_verify


@+

Re: Php foreach qui ne fonctionne pas

Posté : 08 sept. 2014, 00:45
par Nestecha
Ton problème est surtout là en fait :
$sql = "INSERT INTO oc_users (uid, password) VALUES ('".$_POST['user']."', '".$_POST['password']"')";
Tu insères la valeur $_POST['password'] directement, donc forcément elle est en clair dans la base de données.

Il faut remplacer cette valeur par crypt($_POST[pass]) ou plutôt sha1 ou autre.

Re: Php foreach qui ne fonctionne pas

Posté : 10 sept. 2014, 17:04
par samtm123
Bonjour, et merci de vos trois réponse :)

J'ai résolu le problème qui était assez simple, il fallait seulement y penser.. Voici la parti de code que j'ai corrigé:
$pass = crypt($_POST['password']);
	
$sql = "INSERT INTO oc_users (uid, password) VALUES ('".$_POST['user']."', '".$pass."')";

mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());

...

Merci beaucoup et plus précisément à moogli ;)