[RESOLU] Php foreach qui ne fonctionne pas

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Php foreach qui ne fonctionne pas

Re: Php foreach qui ne fonctionne pas

par samtm123 » 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 ;)

Re: Php foreach qui ne fonctionne pas

par Nestecha » 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.

Re: Php foreach qui ne fonctionne pas

par moogli » 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


@+

Re: Php foreach qui ne fonctionne pas

par toytoy » 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

Php foreach qui ne fonctionne pas

par samtm123 » 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 :)!