Page 1 sur 1

Variable interprétée

Posté : 27 mai 2016, 17:19
par 0ffth3grid
Bonjour,

Je bloque sur quelque chose de peut-être impossible :cry:

J'ai une condition if ($ma_var != $db['mon_champs'])
Sachant que $ma_var est renseignée par l'utilisateur, j'aimerais qu'il puisse lui attribuer la valeur "true" et que ma condition l'interprète comme un boolean.

Est-ce possible ? Si oui merci beaucoup :)
Sinon merci quand-même de vous être penchés sur la question :wink:

0ffth3grid

EDIT : Je précise que ce gouffre de sécurité est voulu :wink:

Re: Variable interprétée

Posté : 27 mai 2016, 17:29
par Saian
Bonjour 0ffth3grid, en général pour ce genre de cas on utilise 0 et 1, 0 étant assimilé à false et 1 à true. En tout cas tu ne peux pas soumettre un booléen à proprement parler via un formulaire.

Après si tu utilises une checkbox, soit elle est décochée et le paramètre n'est pas présent côté php soit elle est cochée et le paramètre est présent avec le value comme valeur.

Avec un radio c'est la valeur du radio sélectionné qui sera transmise en paramètre.

Avec une checkbox :
$boolean = isset($_POST['boolean']) ? true : false;
// ou plus simplement
$boolean = isset($_POST['boolean']);
Et en te basant sur du 0/1 tu peux faire ça par exemple :
$boolean = $_POST['boolean'] ? true : false;
Ou toujours avec du 0/1 un simple cast :
$boolean = (bool) $_POST['boolean'];
A voir les règles régissant le cast en booléen.
http://php.net/manual/fr/language.types.boolean.php

Re: Variable interprétée

Posté : 27 mai 2016, 17:49
par 0ffth3grid
Salut Saian,

Merci pour ta réponse rapide.
Je vois tout à fait de quoi tu parles. Cependant, ça ne colle pas avec mon idée de départ.

Je voulais donner une action différente à ma condition dans le cas ou l'utilisateur entrerait un bouléen.
Du genre : m'échapper de la variable pour que le true soit interprété.

Je vais me creuser pour trouver une autre solution sans faire une deuxième condition.

0ffth3grid

Re: Variable interprétée

Posté : 27 mai 2016, 17:58
par Saian
Je ne suis pas sur de comprendre le sens de cette phrase "Je voulais donner une action différente à ma condition" ni ce que tu veux dire par "m'échapper de la variable".

Mais s'il s'agit d'identifier la saisie de true ou false dans input text comme étant une saisie de booléen rien ne t’empêche de faire quelque chose dans le genre :
$is_boolean = $_POST['input'] == 'true' || $_POST['input'] == 'false' ? true : false;
// ou plus simplement
$is_boolean = $_POST['input'] == 'true' || $_POST['input'] == 'false';
En y ajoutant du strtolower et du trim si besoin :
$is_boolean = in_array(strtolower(trim($_POST['input'])), array('true', 'false')) ? true : false;
// ou plus simplement
$is_boolean = in_array(strtolower(trim($_POST['input'])), array('true', 'false'));
Après je sais pas ce que tu veux faire exactement mais je pense que tu seras obligé soit d'avoir plusieurs if ou du elseif, soit d'avoir une condition plus complexe.

EDIT : il y probablement moyen de faire quelque chose avec la fonction exec mais la ça devient assez dangereux. ^^

Re: Variable interprétée

Posté : 27 mai 2016, 19:41
par 0ffth3grid
Je code un défi pour des utilisateurs particuliers et je cherche des manières de plus en plus compliquées pour injecter du code.. Et je m'étais dit que de devoir passer par un cookie pour injecter du code au moment du test du cookie.

Mais apparemment ce n'est pas possible et après reflexion ça serait bien trop dangereux si c'était possible.. Logique..

Merci pour ton temps et désolé de ne pas avoir réfléchis un peu plus avant de poster ;)

0ffth3grid