[RESOLU] Php foreach qui ne fonctionne pas

Eléphanteau du PHP | 37 Messages

06 sept. 2014, 20:00

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 :)!

Eléphant du PHP | 113 Messages

06 sept. 2014, 20:41

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

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

06 sept. 2014, 22:13

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


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

Nestecha
Invité n'ayant pas de compte PHPfrance

08 sept. 2014, 00:45

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.

Eléphanteau du PHP | 37 Messages

10 sept. 2014, 17:04

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 ;)