es ce que c'est une faille (increment° de var trés louche) ?

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 : es ce que c'est une faille (increment° de var trés louche) ?

par Invité » 04 janv. 2006, 16:52

Merci pour tes explication

ca va j'ai compris méme si je suis un peut embrouiller


:)

par ouckileou » 03 janv. 2006, 23:31

que je fasse ++$b il ya pas de décalage en tre $a et $b
et si je fait $b++ il ya un décalage ver l'arriere.
cela tient simplement à la différence entre ces deux opérateurs :
comme expliqué dans la doc, ++$a incrémente $a et renvoie $a, $a++ renvoie $a puis l'incrémente (en arrière plan en quelque sorte)

Donc c'est tout à faire normal, avec ces 2 lignes :
$a = $_SESSION['a']++;
$d = ++$_SESSION['b'];
voici ce qui se passe :
- renvoie dans $a $_SESSION['a'], qui est vide, puis incrémente $_SESSION['a] qui vaut donc 0
- incrémente $_SESSION['b'], qui vaut donc 0, puis la renvoie dans $b

- renvoie dans $a $_SESSION['a'], qui vaut 0, puis incrémente $_SESSION['a] qui vaut donc 2
- incrémente $_SESSION['b'], qui vaut donc 1, puis la renvoie dans $b

Le décalage vient donc du fait que pour $a tu l'affiches avant incrémentation, alors que tu affiches $b après incrémentation.

Est-ce que c'est plus clair ?
Je reconnais que ça embrouille un peu parfois (d'ailleurs si j'ai dit une bêtise corrigez moi ;))

par brani » 03 janv. 2006, 23:06

j'ai fait ce que tu ma dit, oui ca ne donne pas la méme chose
j'avai essayer

mais c'est coméme bizzar je n'arive tjr pas a comprendre

que je fasse ++$b il ya pas de décalage en tre $a et $b
et si je fait $b++ il ya un décalage ver l'arriere.

je pense q'une bonne nuit de sommeil et laisser mon inconscient faire le travail a ma place ca vaudra mieu par ce que depuis ce matin
j'ai pas lacher mon poste et mes yeux sont enfflé.

a demain

par ouckileou » 03 janv. 2006, 22:48

Salut,

remplace ça :
@$b = $_SESSION['b']++ - 1;
par ça :
@$b = $_SESSION['b'] +1 - 1;
pour voir...

cela vient de l'utilisation de l'opérateur de post-incrémentation, regarde ici les différences :
http://fr2.php.net/manual/fr/language.o ... rement.php

Donc, sauf erreur de ma part, voici ce que fait ta ligne :
- renvoie $b=0, incrémente $b (qui vaut maintenant 1), soustrait 1 de $b renvoyée (donc affiche -1)
- renvoie $b=1, incrémente $b (qui vaut maintenant 2), soustrait 1 de $b renvoyée (donc affiche 0)
- renvoie $b=2, incrémente $b (qui vaut maintenant 3), soustrait 1 de $b renvoyée (donc affiche 1)
... ainsi de suite, alors qu'avec une opérattion normale cela fonctionne, puisque tout est fait à la suite (+1-1)

es ce que c'est une faille (increment° de var trés louche) ?

par brani » 03 janv. 2006, 22:25

bonjour,
voila j'était entrain de faire un script pour faire un truc de cryptage de lien

jusqua ce que je tombre sur une reaction bizzar d'une de mes ligne sans le vouloire mais qui était la reaction exact que je chercher
voila je pose le petit bout de code
session_start(); // on demarre une session_start
@$a = $_SESSION['a']++; // on incrémente la variable $a de 1 a chaque fois
@$b = $_SESSION['b']++ - 1; // on incrémente la variable $b a chaque fois et en retire 1 ce qui devrai rien changer normalement
echo $a;
echo "<br>";
echo $b;
voila le souci dans la theori

on obtien ça normalement.

on commence 1er tour

$a++ vaut 0
$b++ - 1 vaut -1

2eme tour

$a++ vaut 0+1 = 1
$b++ - 1 vaut -1 + 1 = 0 - 1 = -1

3eme tour

$a++ vaut 1 + 1 = 2
$b++ - 1 vaut -1 + 1 = 0 - 1 = -1

ainsi de suite donc
on doit avoir ceci

a=0 b=-1
a=1 b=-1
a=2 b=-1
a=3 b=-1
a=4 b=-1
a=5 b=-1
a=6 b=-1
ect...

seulement voila ce que j'obtien dans la pratique quand je lance mon script

a=0 b=-1
a=1 b=0
a=2 b=1
a=3 b=2
a=4 b=3
a=5 b=4
a=6 b=5
a=7 b=6

c'est coméme bizzar

si quqlun a une explication ca m'aiderai bien a comprendre ou alors c'est moi qui na rien compri au math