Compréhension code PHP

Fermé
geek - Modifié par baladur13 le 7/06/2015 à 22:06
CptRomaiin Messages postés 315 Date d'inscription mercredi 23 octobre 2013 Statut Membre Dernière intervention 28 avril 2016 - 8 juin 2015 à 12:22
Bonjour pourriez vous m'expliquer ce code svp ?



for ($i=1;$i<=$_COOKIE["nbLignes"];$i++)
            {
                $posFin=strpos($_COOKIE["commande"],"#");
                $article=substr($_COOKIE["commande"],0,$posFin);
                $_COOKIE["commande"]=substr($_COOKIE["commande"],$posFin+1);
                $ref=substr($article,0,3);
                $qte=substr($article,3);
                $requete="select * from contenir where cde_moment='".$moment."' and cde_client='".$_POST["codeClient"]."' and produit='".$ref."';";
                $jeuResultat=$mysqli->query($requete);
                $ligneCde=$jeuResultat->fetch_assoc();
                if ($ligneCde)
                {
                    $qte=$qte+$ligneCde["quantite"];
                    $requete="update contenir set quantite=".$qte." where cde_moment='".$moment."' and cde_client='".$_POST["codeClient"]."' and produit='".$ref."';";
                }
A voir également:

5 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
8 juin 2015 à 09:30
Bonjour,

Tu veux savoir quoi exactement ?
Quelle partie du code ?

Car dans son ensemble ... ce code ressemble à un panier de commande ...
Mais je te déconseille de t'en servir car je trouve la façon dont s'est codé assez maladroite...
(il semble que la personne qui a créé se code ne connaisse pas les ARRAY, qu'il aie utilisé les COOKIE plutôt que les variable de SESSION (ce qui m'étonne un peu) .. )
0
Bonjour,
merci pour votre réponse.

Oui ce code me sert pour la création d'un panier .
Pourquoi es ce qu'il n'est pas bien d'utiliser des COOKIE ? ils ont un peu la même fonction que les SESSION , il mémorise une information pendant un certain temps non?

je ne comprend pas cela a quoi ils servent:
$jeuResultat=$mysqli->query($requete);
$ligneCde=$jeuResultat->fetch_assoc();

et je ne comprend pas les cookie aussi .
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
8 juin 2015 à 10:26

Pourquoi es ce qu'il n'est pas bien d'utiliser des COOKIE ? ils ont un peu la même fonction que les SESSION , il mémorise une information pendant un certain temps non?

Oui ... et non.

Le problème ... c'est que certaines personnes suppriment les COOKIE à la fermeture du navigateur internet... alors que la session à une certaine durée de vie ( de quelques minutes après la fermeture du navigateur.. ce qui permet de retrouver les infos.. en réouvrant le navigateur (rapidement) après l'avoir fermé !
De plus... tout le monde n'autorise pas l'utilisation des COOKIES .. et dans ce cas... aucune info ne sera sauvegardée.


je ne comprend pas cela a quoi ils servent:
$jeuResultat=$mysqli->query($requete);
$ligneCde=$jeuResultat->fetch_assoc();

Ben .. ça sert à faire une requête dans la Base de données...
l'extension utilisée est mysqli_*

Pour bien comprendre... il te suffit de regarder le manuel :
https://www.php.net/manual/fr/mysqli.query.php

https://www.php.net/manual/fr/mysqli-result.fetch-assoc.php

.
0
Ah d'accord merci pour vos explication.
et ce code :
$requete="update contenir set quantite=".$qte." where cde_moment='".$moment."' and cde_client='".$_POST["codeClient"]."' and produit='".$ref."';";
il permet de faire une mise à jour de quoi ?

et je ne comprend pas ce que veut dire ce code:
for ($i=1;$i<=$_COOKIE["nbLignes"];$i++)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
8 juin 2015 à 10:56

il permet de faire une mise à jour de quoi ?

... ben... comme c'est marqué dans la requête ......... de la table : contenir ... le champ quantite.

et je ne comprend pas ce que veut dire ce code:
for ($i=1;$i<=$_COOKIE["nbLignes"];$i++)

C'est une BOUCLE ( boucle FOR...)
qui va de 1 à ... xxx ...( .... xxx étant le nombre de lignes stockées dans la variable de cookie nbLignes)

Mais je te le redis... tu as pris ce code, je ne sais où...; sans en comprendre le fonctionnement....
Le mieux serait de refaire toi même un code complet .... après avoir défini par toi même ce qu'il devait réaliser (phase de relexion/conception ... qui est OBLIGATOIRE avant même de commencer à écrire des lignes de code ! )


0
Ah oui merci!
Mais il est obligatoire de faire une requête qui permet de faire une mise à jour ?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
8 juin 2015 à 11:59
...... obligatoire.... ben... ça dépend comment est pensé le site .....
En l'occurence ici... oui... (vu la façon dont ce code / ce site.. a été pensé.... )

Mais je te le redis encore une fois ... NE T'INSPIRE PAS DE CE CODE !!!!
Je crois me souvenir avoir aidé son auteur à résoudre certains de ses soucis... et déjà à cette époque je considérai que les mécanismes qu'il avait employé n'étaient sûrement pas les meilleurs !!!
Si tu veux te faire un système de panier .... réfléchi le par toi même ... et ne copie pas bêtement du code trouvé par hasard sur le net !

Malheureusement les personnes qui créént des tutos et qui partagent leurs code sur le net ne sont pas toujours les personnes les plus expérimentés et/ou les mieux placées pour le faire ....(et tu ne peux te fier à leur jugement et à la qualité de leur travail que si un grand (très grand) nombre de personnes viennent le dire..... ) et même si ça part d'un bon sentiment... leurs codes ne sont pas toujours à la hauteur de ce qui est attendu.
Comme on dit .. on n'est jamais mieux servi que par soit-même....

Vu les questions que tu me poses, il semble que tu ne connaisse pas bien les bases de la programmation (et du langage PHP) ...
Je te conseille vivement de stoper ton dev quelques jours le temps de :
1 - Apprendre les bases du langage
2 - Ecrire sur papier les fonctionnalités dont tu auras besoin sur ton site
3 - réfléchir à quels mécanismes ( de programmation) te seront nécessaires pour réaliser ces fonctionnalités

... et SEULEMENT APRES ... commencer à code !
le DEV .. c'est 80% de réflexion...20% de codage ... et 20% de correction de bugs ... ( oui oui... 120% ! ) ^^
0
Oui je pense qu'il est préférable que je fasse comme vous avez dit , sinon je vais me perdre dans mes codes.
Merci beaucoup :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CptRomaiin Messages postés 315 Date d'inscription mercredi 23 octobre 2013 Statut Membre Dernière intervention 28 avril 2016 58
8 juin 2015 à 12:22
Salut,

Pour compléter ce qu'à dit jordane45, que je trouve tout à fait pertinent, le code que tu donnes présente de grosses failles de sécurité par injection SQL, que ce soit par les cookies ou par la variable POST.

Pour palier à ce problème, tu peux utiliser les requêtes préparées et comme l'a dit jordane45, n'utilise surtout pas de cookie pour stocker ce genre de données, mais plutôt des variables de sessions, qui sont stockées côté serveur :

http://www.manuelphp.com/php/function.mysqli-prepare.php

Outre les problèmes de SQLi, toute les données de ce code sont manipulables par l'utilisateur, une personne malveillante pourrait faire faire n'importe quoi à ton application, comme changer le code client.

Il y a un grand principe en matière de sécurité : Don't trust user input
0