J'ai un formulaire avec 4 inputs de type "zone de saisie" (destinées à
des valeurs numeriques entières), 3 inputs de type "radio" et 11 inputs
de type "checkbox".
Le formulaire est de méthode "post" et je récupère le contenu des inputs
par une série de ligne du type $WL_start = $_POST['WL_start']
Pour les zones de saisie, je traite cette saisie par :
<?php
// si ce test est positif, c'est que l'utilisateur a saisi une valeur et cliqué
// le bouton "Dessiner le spectre"
if ( isset( $WL_start ) ) {
// il faut donc remettre la valeur de Value_WL_start à la valeur que l'utilisateur
// a postée à condition qu'elle soit "attendue"
// en premier lieu : numérique
if ( is_numeric( $WL_start ) ) {
$x = floor( $WL_start );
// en deuxième lieu, entière
if ( $x != $WL_start ) {
$WL_start = 380;
} else {
// en troisème lieu, dans le domaine visible, sinon 380 nm
if ( ( $x < 380 ) or ( $x >= 800 ) ) {
$WL_start = 380;
}
}
// non numérique :
} else {
$WL_start = 380;
}
}
?>
Est-ce que ce code empêche qu'un script-kiddie puisse falsifier le
comportement que j'attends de ma page ?
Pour mes trois boutons radios, je n'ai que le test de la valeur de la
variable "name" de mon input :
<?php
if ( ! isset( $choix_spectre ) ) {
//echo "choix_spectre is NOT set, setting it to 2 <br />\n";
$choix_spectre = 2;
}
Et pour mes onze cases à cocher :
<?php
if ( !empty( $_POST['elements'] ) ) {
foreach( $_POST['elements'] as $val ) {
if ( $val == 'H') {
$La_string_elements = $La_string_elements.$val.",";
$checked_H = "checked";
}
if ( $val == 'He') {
$La_string_elements = $La_string_elements.$val.",";
$checked_He = "checked";
}
if ( $val == 'Li') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Li = "checked";
}
if ( $val == 'Na') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Na = "checked";
}
if ( $val == 'Mg') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Mg = "checked";
if ( $val == 'Ar') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ar = "checked";
}
if ( $val == 'Ca') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ca = "checked";
}
if ( $val == 'Ti') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ti = "checked";
}
if ( $val == 'Mn') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Mn = "checked";
}
if ( $val == 'Fe') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Fe = "checked";
}
if ( $val == 'Hg') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Hg = "checked";
}
}
// Retirer la dernière virgule de la liste
$La_string_elements = substr($La_string_elements, 0, -1);
}
Pour les boutons radios ou cases à cocher, y a-t-il des précautions
élémentaires à prendre pour éviter l'utilisateur malicieux ?
Ce formulaire n'est pas destiné à remplir une base de donnée, juste à
fabriquer une chaîne de caractères qui sert à appeler un script python
avec "passthru( $zeCommandLine )" pour fabriquer une image ensuite
afficher dans la page.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Bonjour, Le 02/03/2020 20:31, Lulu a écrit :
Le formulaire est de méthode "post" et je récupère le contenu des inputs par une série de ligne du type $WL_start = $_POST['WL_start'] Pour les zones de saisie, je traite cette saisie par : <?php // si ce test est positif, c'est que l'utilisateur a saisi une valeur et cliqué // le bouton "Dessiner le spectre" if ( isset( $WL_start ) ) { // il faut donc remettre la valeur de Value_WL_start à la valeur que l'utilisateur // a postée à condition qu'elle soit "attendue" // en premier lieu : numérique if ( is_numeric( $WL_start ) ) { $x = floor( $WL_start ); // en deuxième lieu, entière if ( $x != $WL_start ) { $WL_start = 380; } else { // en troisème lieu, dans le domaine visible, sinon 380 nm if ( ( $x < 380 ) or ( $x >= 800 ) ) { $WL_start = 380; } } // non numérique : } else { $WL_start = 380; } } ?> Est-ce que ce code empêche qu'un script-kiddie puisse falsifier le comportement que j'attends de ma page ?
Ça me semble correct. En lisant ce code je ne vois pas comment on pourrait se retrouver avec un $WL_start qui soit autre chose qu'un entier entre 380 et 800.
Pour mes trois boutons radios, je n'ai que le test de la valeur de la variable "name" de mon input : <?php if ( ! isset( $choix_spectre ) ) { //echo "choix_spectre is NOT set, setting it to 2 n"; $choix_spectre = 2; } if ( $choix_spectre == 1 ) { //echo " --> Spectre continu n"; $checked_1 = "checked"; $checked_2 = ""; $checked_3 = ""; } else { if ( $choix_spectre == 2 ) { //echo " --> Spectre d'émission n"; $checked_1 = ""; $checked_2 = "checked"; $checked_3 = ""; } else { if ( $choix_spectre == 3 ) { //echo " --> Spectre d'absorption n"; $checked_1 = ""; $checked_2 = ""; $checked_3 = "checked"; }
Ici il manque un else, pour le cas où $choix_spectre vaudrait autre chose que 1, 2 ou 3. Mais...
} }
... Mais il y a plus simple comme écriture. <?php if ( ! isset( $choix_spectre ) ) { //echo "choix_spectre is NOT set, setting it to 2 n"; $choix_spectre = 2; } switch ( $choix_spectre ) { case 1: //echo " --> Spectre continu n"; $checked_1 = "checked"; $checked_2 = ""; $checked_3 = ""; break; case 3: //echo " --> Spectre d'absorption n"; $checked_1 = ""; $checked_2 = ""; $checked_3 = "checked"; break; default: // 2 ou toute autre valeur $choix_spectre = 2; // au cas où ce n'était pas 2 //echo " --> Spectre d'émission n"; $checked_1 = ""; $checked_2 = "checked"; $checked_3 = ""; break; } ?>
Et pour mes onze cases à cocher : <?php if ( !empty( $_POST['elements'] ) ) { foreach( $_POST['elements'] as $val ) { if ( $val == 'H') { $La_string_elements = $La_string_elements.$val.","; $checked_H = "checked"; } if ( $val == 'He') { $La_string_elements = $La_string_elements.$val.","; $checked_He = "checked"; } if ( $val == 'Li') { $La_string_elements = $La_string_elements.$val.","; $checked_Li = "checked"; } if ( $val == 'Na') { $La_string_elements = $La_string_elements.$val.","; $checked_Na = "checked"; } if ( $val == 'Mg') { $La_string_elements = $La_string_elements.$val.","; $checked_Mg = "checked"; if ( $val == 'Ar') { $La_string_elements = $La_string_elements.$val.","; $checked_Ar = "checked"; } if ( $val == 'Ca') { $La_string_elements = $La_string_elements.$val.","; $checked_Ca = "checked"; } if ( $val == 'Ti') { $La_string_elements = $La_string_elements.$val.","; $checked_Ti = "checked"; } if ( $val == 'Mn') { $La_string_elements = $La_string_elements.$val.","; $checked_Mn = "checked"; } if ( $val == 'Fe') { $La_string_elements = $La_string_elements.$val.","; $checked_Fe = "checked"; } if ( $val == 'Hg') { $La_string_elements = $La_string_elements.$val.","; $checked_Hg = "checked"; } } // Retirer la dernière virgule de la liste $La_string_elements = substr($La_string_elements, 0, -1); }
Là aussi tu pourrais utilise l'instruction switch, qui en PHP peut être utilisée aussi bien sur des chaînes que sur des entiers. https://www.php.net/manual/fr/control-structures.switch.php
Pour les boutons radios ou cases à cocher, y a-t-il des précautions élémentaires à prendre pour éviter l'utilisateur malicieux ?
Ce que tu fais me semble correct. Tu testes une à une toutes les valeurs que tu connais, et tu ne fais quelque chose que pour celles-là. Si un utilisateur malicieux ajoute une valeur que tu n'as pas prévue, ton code l'ignorera, et c'est bien.
Ce formulaire n'est pas destiné à remplir une base de donnée, juste à fabriquer une chaîne de caractères qui sert à appeler un script python avec "passthru( $zeCommandLine )" pour fabriquer une image ensuite afficher dans la page.
Ok. -- Olivier Miakinen
Bonjour,
Le 02/03/2020 20:31, Lulu a écrit :
Le formulaire est de méthode "post" et je récupère le contenu des inputs
par une série de ligne du type $WL_start = $_POST['WL_start']
Pour les zones de saisie, je traite cette saisie par :
<?php
// si ce test est positif, c'est que l'utilisateur a saisi une valeur et cliqué
// le bouton "Dessiner le spectre"
if ( isset( $WL_start ) ) {
// il faut donc remettre la valeur de Value_WL_start à la valeur que l'utilisateur
// a postée à condition qu'elle soit "attendue"
// en premier lieu : numérique
if ( is_numeric( $WL_start ) ) {
$x = floor( $WL_start );
// en deuxième lieu, entière
if ( $x != $WL_start ) {
$WL_start = 380;
} else {
// en troisème lieu, dans le domaine visible, sinon 380 nm
if ( ( $x < 380 ) or ( $x >= 800 ) ) {
$WL_start = 380;
}
}
// non numérique :
} else {
$WL_start = 380;
}
}
?>
Est-ce que ce code empêche qu'un script-kiddie puisse falsifier le
comportement que j'attends de ma page ?
Ça me semble correct. En lisant ce code je ne vois pas comment on
pourrait se retrouver avec un $WL_start qui soit autre chose qu'un
entier entre 380 et 800.
Pour mes trois boutons radios, je n'ai que le test de la valeur de la
variable "name" de mon input :
<?php
if ( ! isset( $choix_spectre ) ) {
//echo "choix_spectre is NOT set, setting it to 2 <br />n";
$choix_spectre = 2;
}
default: // 2 ou toute autre valeur
$choix_spectre = 2; // au cas où ce n'était pas 2
//echo " --> Spectre d'émission<br />n";
$checked_1 = "";
$checked_2 = "checked";
$checked_3 = "";
break;
}
?>
Et pour mes onze cases à cocher :
<?php
if ( !empty( $_POST['elements'] ) ) {
foreach( $_POST['elements'] as $val ) {
if ( $val == 'H') {
$La_string_elements = $La_string_elements.$val.",";
$checked_H = "checked";
}
if ( $val == 'He') {
$La_string_elements = $La_string_elements.$val.",";
$checked_He = "checked";
}
if ( $val == 'Li') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Li = "checked";
}
if ( $val == 'Na') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Na = "checked";
}
if ( $val == 'Mg') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Mg = "checked";
if ( $val == 'Ar') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ar = "checked";
}
if ( $val == 'Ca') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ca = "checked";
}
if ( $val == 'Ti') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ti = "checked";
}
if ( $val == 'Mn') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Mn = "checked";
}
if ( $val == 'Fe') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Fe = "checked";
}
if ( $val == 'Hg') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Hg = "checked";
}
}
// Retirer la dernière virgule de la liste
$La_string_elements = substr($La_string_elements, 0, -1);
}
Là aussi tu pourrais utilise l'instruction switch, qui en PHP peut être
utilisée aussi bien sur des chaînes que sur des entiers.
https://www.php.net/manual/fr/control-structures.switch.php
Pour les boutons radios ou cases à cocher, y a-t-il des précautions
élémentaires à prendre pour éviter l'utilisateur malicieux ?
Ce que tu fais me semble correct. Tu testes une à une toutes les valeurs
que tu connais, et tu ne fais quelque chose que pour celles-là. Si un
utilisateur malicieux ajoute une valeur que tu n'as pas prévue, ton code
l'ignorera, et c'est bien.
Ce formulaire n'est pas destiné à remplir une base de donnée, juste à
fabriquer une chaîne de caractères qui sert à appeler un script python
avec "passthru( $zeCommandLine )" pour fabriquer une image ensuite
afficher dans la page.
Le formulaire est de méthode "post" et je récupère le contenu des inputs par une série de ligne du type $WL_start = $_POST['WL_start'] Pour les zones de saisie, je traite cette saisie par : <?php // si ce test est positif, c'est que l'utilisateur a saisi une valeur et cliqué // le bouton "Dessiner le spectre" if ( isset( $WL_start ) ) { // il faut donc remettre la valeur de Value_WL_start à la valeur que l'utilisateur // a postée à condition qu'elle soit "attendue" // en premier lieu : numérique if ( is_numeric( $WL_start ) ) { $x = floor( $WL_start ); // en deuxième lieu, entière if ( $x != $WL_start ) { $WL_start = 380; } else { // en troisème lieu, dans le domaine visible, sinon 380 nm if ( ( $x < 380 ) or ( $x >= 800 ) ) { $WL_start = 380; } } // non numérique : } else { $WL_start = 380; } } ?> Est-ce que ce code empêche qu'un script-kiddie puisse falsifier le comportement que j'attends de ma page ?
Ça me semble correct. En lisant ce code je ne vois pas comment on pourrait se retrouver avec un $WL_start qui soit autre chose qu'un entier entre 380 et 800.
Pour mes trois boutons radios, je n'ai que le test de la valeur de la variable "name" de mon input : <?php if ( ! isset( $choix_spectre ) ) { //echo "choix_spectre is NOT set, setting it to 2 n"; $choix_spectre = 2; } if ( $choix_spectre == 1 ) { //echo " --> Spectre continu n"; $checked_1 = "checked"; $checked_2 = ""; $checked_3 = ""; } else { if ( $choix_spectre == 2 ) { //echo " --> Spectre d'émission n"; $checked_1 = ""; $checked_2 = "checked"; $checked_3 = ""; } else { if ( $choix_spectre == 3 ) { //echo " --> Spectre d'absorption n"; $checked_1 = ""; $checked_2 = ""; $checked_3 = "checked"; }
Ici il manque un else, pour le cas où $choix_spectre vaudrait autre chose que 1, 2 ou 3. Mais...
} }
... Mais il y a plus simple comme écriture. <?php if ( ! isset( $choix_spectre ) ) { //echo "choix_spectre is NOT set, setting it to 2 n"; $choix_spectre = 2; } switch ( $choix_spectre ) { case 1: //echo " --> Spectre continu n"; $checked_1 = "checked"; $checked_2 = ""; $checked_3 = ""; break; case 3: //echo " --> Spectre d'absorption n"; $checked_1 = ""; $checked_2 = ""; $checked_3 = "checked"; break; default: // 2 ou toute autre valeur $choix_spectre = 2; // au cas où ce n'était pas 2 //echo " --> Spectre d'émission n"; $checked_1 = ""; $checked_2 = "checked"; $checked_3 = ""; break; } ?>
Et pour mes onze cases à cocher : <?php if ( !empty( $_POST['elements'] ) ) { foreach( $_POST['elements'] as $val ) { if ( $val == 'H') { $La_string_elements = $La_string_elements.$val.","; $checked_H = "checked"; } if ( $val == 'He') { $La_string_elements = $La_string_elements.$val.","; $checked_He = "checked"; } if ( $val == 'Li') { $La_string_elements = $La_string_elements.$val.","; $checked_Li = "checked"; } if ( $val == 'Na') { $La_string_elements = $La_string_elements.$val.","; $checked_Na = "checked"; } if ( $val == 'Mg') { $La_string_elements = $La_string_elements.$val.","; $checked_Mg = "checked"; if ( $val == 'Ar') { $La_string_elements = $La_string_elements.$val.","; $checked_Ar = "checked"; } if ( $val == 'Ca') { $La_string_elements = $La_string_elements.$val.","; $checked_Ca = "checked"; } if ( $val == 'Ti') { $La_string_elements = $La_string_elements.$val.","; $checked_Ti = "checked"; } if ( $val == 'Mn') { $La_string_elements = $La_string_elements.$val.","; $checked_Mn = "checked"; } if ( $val == 'Fe') { $La_string_elements = $La_string_elements.$val.","; $checked_Fe = "checked"; } if ( $val == 'Hg') { $La_string_elements = $La_string_elements.$val.","; $checked_Hg = "checked"; } } // Retirer la dernière virgule de la liste $La_string_elements = substr($La_string_elements, 0, -1); }
Là aussi tu pourrais utilise l'instruction switch, qui en PHP peut être utilisée aussi bien sur des chaînes que sur des entiers. https://www.php.net/manual/fr/control-structures.switch.php
Pour les boutons radios ou cases à cocher, y a-t-il des précautions élémentaires à prendre pour éviter l'utilisateur malicieux ?
Ce que tu fais me semble correct. Tu testes une à une toutes les valeurs que tu connais, et tu ne fais quelque chose que pour celles-là. Si un utilisateur malicieux ajoute une valeur que tu n'as pas prévue, ton code l'ignorera, et c'est bien.
Ce formulaire n'est pas destiné à remplir une base de donnée, juste à fabriquer une chaîne de caractères qui sert à appeler un script python avec "passthru( $zeCommandLine )" pour fabriquer une image ensuite afficher dans la page.
Ok. -- Olivier Miakinen
Lulu
Le 02-03-2020, Olivier Miakinen <om+a écrit :
Le 02/03/2020 20:31, Lulu a écrit :
Le formulaire est de méthode "post" et je récupère le contenu des inputs par une série de ligne du type $WL_start = $_POST['WL_start'] Pour les zones de saisie, je traite cette saisie par : <?php // si ce test est positif, c'est que l'utilisateur a saisi une valeur et cliqué // le bouton "Dessiner le spectre" if ( isset( $WL_start ) ) { // il faut donc remettre la valeur de Value_WL_start à la valeur que l'utilisateur // a postée à condition qu'elle soit "attendue" // en premier lieu : numérique if ( is_numeric( $WL_start ) ) { $x = floor( $WL_start ); // en deuxième lieu, entière if ( $x != $WL_start ) { $WL_start = 380; } else { // en troisème lieu, dans le domaine visible, sinon 380 nm if ( ( $x < 380 ) or ( $x >= 800 ) ) { $WL_start = 380; } } // non numérique : } else { $WL_start = 380; } } ?> Est-ce que ce code empêche qu'un script-kiddie puisse falsifier le comportement que j'attends de ma page ?
Ça me semble correct. En lisant ce code je ne vois pas comment on pourrait se retrouver avec un $WL_start qui soit autre chose qu'un entier entre 380 et 800.
0K
Pour mes trois boutons radios, je n'ai que le test de la valeur de la variable "name" de mon input : <?php if ( ! isset( $choix_spectre ) ) { //echo "choix_spectre is NOT set, setting it to 2 n"; $choix_spectre = 2; } if ( $choix_spectre == 1 ) { //echo " -->Spectre continu n"; $checked_1 = "checked"; $checked_2 = ""; $checked_3 = ""; } else { if ( $choix_spectre == 2 ) { //echo " -->Spectre d'émission n"; $checked_1 = ""; $checked_2 = "checked"; $checked_3 = ""; } else { if ( $choix_spectre == 3 ) { //echo " -->Spectre d'absorption n"; $checked_1 = ""; $checked_2 = ""; $checked_3 = "checked"; }
Ici il manque un else, pour le cas où $choix_spectre vaudrait autre chose que 1, 2 ou 3. Mais...
} }
... Mais il y a plus simple comme écriture.
Ah oui... Depuis que je me "pense" en python, j'oublie le swich case... Merci pour le code ;-)
<?php if ( ! isset( $choix_spectre ) ) { //echo "choix_spectre is NOT set, setting it to 2 n"; $choix_spectre = 2; } switch ( $choix_spectre ) { case 1: //echo " -->Spectre continu n"; $checked_1 = "checked"; $checked_2 = ""; $checked_3 = ""; break; case 3: //echo " -->Spectre d'absorption n"; $checked_1 = ""; $checked_2 = ""; $checked_3 = "checked"; break; default: // 2 ou toute autre valeur $choix_spectre = 2; // au cas où ce n'était pas 2 //echo " -->Spectre d'émission n"; $checked_1 = ""; $checked_2 = "checked"; $checked_3 = ""; break; } ?>
Et pour mes onze cases à cocher : <?php if ( !empty( $_POST['elements'] ) ) { foreach( $_POST['elements'] as $val ) { if ( $val == 'H') { $La_string_elements = $La_string_elements.$val.","; $checked_H = "checked"; } [...] } if ( $val == 'Hg') { $La_string_elements = $La_string_elements.$val.","; $checked_Hg = "checked"; } } // Retirer la dernière virgule de la liste $La_string_elements = substr($La_string_elements, 0, -1); }
Là aussi tu pourrais utilise l'instruction switch, qui en PHP peut être utilisée aussi bien sur des chaînes que sur des entiers. https://www.php.net/manual/fr/control-structures.switch.php
0K, je vais lire cette page
Pour les boutons radios ou cases à cocher, y a-t-il des précautions élémentaires à prendre pour éviter l'utilisateur malicieux ?
Ce que tu fais me semble correct. Tu testes une à une toutes les valeurs que tu connais, et tu ne fais quelque chose que pour celles-là. Si un utilisateur malicieux ajoute une valeur que tu n'as pas prévue, ton code l'ignorera, et c'est bien.
0K
Ce formulaire n'est pas destiné à remplir une base de donnée, juste à fabriquer une chaîne de caractères qui sert à appeler un script python avec "passthru( $zeCommandLine )" pour fabriquer une image ensuite afficher dans la page.
Ok.
Merci pour tout
Le 02-03-2020, Olivier Miakinen <om+news@miakinen.net>a écrit :
Le 02/03/2020 20:31, Lulu a écrit :
Le formulaire est de méthode "post" et je récupère le contenu des inputs
par une série de ligne du type $WL_start = $_POST['WL_start']
Pour les zones de saisie, je traite cette saisie par :
<?php
// si ce test est positif, c'est que l'utilisateur a saisi une valeur et cliqué
// le bouton "Dessiner le spectre"
if ( isset( $WL_start ) ) {
// il faut donc remettre la valeur de Value_WL_start à la valeur que l'utilisateur
// a postée à condition qu'elle soit "attendue"
// en premier lieu : numérique
if ( is_numeric( $WL_start ) ) {
$x = floor( $WL_start );
// en deuxième lieu, entière
if ( $x != $WL_start ) {
$WL_start = 380;
} else {
// en troisème lieu, dans le domaine visible, sinon 380 nm
if ( ( $x < 380 ) or ( $x >= 800 ) ) {
$WL_start = 380;
}
}
// non numérique :
} else {
$WL_start = 380;
}
}
?>
Est-ce que ce code empêche qu'un script-kiddie puisse falsifier le
comportement que j'attends de ma page ?
Ça me semble correct. En lisant ce code je ne vois pas comment on
pourrait se retrouver avec un $WL_start qui soit autre chose qu'un
entier entre 380 et 800.
0K
Pour mes trois boutons radios, je n'ai que le test de la valeur de la
variable "name" de mon input :
<?php
if ( ! isset( $choix_spectre ) ) {
//echo "choix_spectre is NOT set, setting it to 2 <br />n";
$choix_spectre = 2;
}
default: // 2 ou toute autre valeur
$choix_spectre = 2; // au cas où ce n'était pas 2
//echo " -->Spectre d'émission<br />n";
$checked_1 = "";
$checked_2 = "checked";
$checked_3 = "";
break;
}
?>
Et pour mes onze cases à cocher :
<?php
if ( !empty( $_POST['elements'] ) ) {
foreach( $_POST['elements'] as $val ) {
if ( $val == 'H') {
$La_string_elements = $La_string_elements.$val.",";
$checked_H = "checked";
}
[...]
}
if ( $val == 'Hg') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Hg = "checked";
}
}
// Retirer la dernière virgule de la liste
$La_string_elements = substr($La_string_elements, 0, -1);
}
Là aussi tu pourrais utilise l'instruction switch, qui en PHP peut être
utilisée aussi bien sur des chaînes que sur des entiers.
https://www.php.net/manual/fr/control-structures.switch.php
0K, je vais lire cette page
Pour les boutons radios ou cases à cocher, y a-t-il des précautions
élémentaires à prendre pour éviter l'utilisateur malicieux ?
Ce que tu fais me semble correct. Tu testes une à une toutes les valeurs
que tu connais, et tu ne fais quelque chose que pour celles-là. Si un
utilisateur malicieux ajoute une valeur que tu n'as pas prévue, ton code
l'ignorera, et c'est bien.
0K
Ce formulaire n'est pas destiné à remplir une base de donnée, juste à
fabriquer une chaîne de caractères qui sert à appeler un script
python avec "passthru( $zeCommandLine )" pour fabriquer une image
ensuite afficher dans la page.
Le formulaire est de méthode "post" et je récupère le contenu des inputs par une série de ligne du type $WL_start = $_POST['WL_start'] Pour les zones de saisie, je traite cette saisie par : <?php // si ce test est positif, c'est que l'utilisateur a saisi une valeur et cliqué // le bouton "Dessiner le spectre" if ( isset( $WL_start ) ) { // il faut donc remettre la valeur de Value_WL_start à la valeur que l'utilisateur // a postée à condition qu'elle soit "attendue" // en premier lieu : numérique if ( is_numeric( $WL_start ) ) { $x = floor( $WL_start ); // en deuxième lieu, entière if ( $x != $WL_start ) { $WL_start = 380; } else { // en troisème lieu, dans le domaine visible, sinon 380 nm if ( ( $x < 380 ) or ( $x >= 800 ) ) { $WL_start = 380; } } // non numérique : } else { $WL_start = 380; } } ?> Est-ce que ce code empêche qu'un script-kiddie puisse falsifier le comportement que j'attends de ma page ?
Ça me semble correct. En lisant ce code je ne vois pas comment on pourrait se retrouver avec un $WL_start qui soit autre chose qu'un entier entre 380 et 800.
0K
Pour mes trois boutons radios, je n'ai que le test de la valeur de la variable "name" de mon input : <?php if ( ! isset( $choix_spectre ) ) { //echo "choix_spectre is NOT set, setting it to 2 n"; $choix_spectre = 2; } if ( $choix_spectre == 1 ) { //echo " -->Spectre continu n"; $checked_1 = "checked"; $checked_2 = ""; $checked_3 = ""; } else { if ( $choix_spectre == 2 ) { //echo " -->Spectre d'émission n"; $checked_1 = ""; $checked_2 = "checked"; $checked_3 = ""; } else { if ( $choix_spectre == 3 ) { //echo " -->Spectre d'absorption n"; $checked_1 = ""; $checked_2 = ""; $checked_3 = "checked"; }
Ici il manque un else, pour le cas où $choix_spectre vaudrait autre chose que 1, 2 ou 3. Mais...
} }
... Mais il y a plus simple comme écriture.
Ah oui... Depuis que je me "pense" en python, j'oublie le swich case... Merci pour le code ;-)
<?php if ( ! isset( $choix_spectre ) ) { //echo "choix_spectre is NOT set, setting it to 2 n"; $choix_spectre = 2; } switch ( $choix_spectre ) { case 1: //echo " -->Spectre continu n"; $checked_1 = "checked"; $checked_2 = ""; $checked_3 = ""; break; case 3: //echo " -->Spectre d'absorption n"; $checked_1 = ""; $checked_2 = ""; $checked_3 = "checked"; break; default: // 2 ou toute autre valeur $choix_spectre = 2; // au cas où ce n'était pas 2 //echo " -->Spectre d'émission n"; $checked_1 = ""; $checked_2 = "checked"; $checked_3 = ""; break; } ?>
Et pour mes onze cases à cocher : <?php if ( !empty( $_POST['elements'] ) ) { foreach( $_POST['elements'] as $val ) { if ( $val == 'H') { $La_string_elements = $La_string_elements.$val.","; $checked_H = "checked"; } [...] } if ( $val == 'Hg') { $La_string_elements = $La_string_elements.$val.","; $checked_Hg = "checked"; } } // Retirer la dernière virgule de la liste $La_string_elements = substr($La_string_elements, 0, -1); }
Là aussi tu pourrais utilise l'instruction switch, qui en PHP peut être utilisée aussi bien sur des chaînes que sur des entiers. https://www.php.net/manual/fr/control-structures.switch.php
0K, je vais lire cette page
Pour les boutons radios ou cases à cocher, y a-t-il des précautions élémentaires à prendre pour éviter l'utilisateur malicieux ?
Ce que tu fais me semble correct. Tu testes une à une toutes les valeurs que tu connais, et tu ne fais quelque chose que pour celles-là. Si un utilisateur malicieux ajoute une valeur que tu n'as pas prévue, ton code l'ignorera, et c'est bien.
0K
Ce formulaire n'est pas destiné à remplir une base de donnée, juste à fabriquer une chaîne de caractères qui sert à appeler un script python avec "passthru( $zeCommandLine )" pour fabriquer une image ensuite afficher dans la page.
Ok.
Merci pour tout
Lulu
Le 02-03-2020, Lulu a écrit :
Le 02-03-2020, Olivier Miakinen <om+a écrit :
Le 02/03/2020 20:31, Lulu a écrit :
[...] ... Mais il y a plus simple comme écriture.
Ah oui... Depuis que je me "pense" en python, j'oublie le swich case... Merci pour le code ;-)
<?php if ( ! isset( $choix_spectre ) ) { //echo "choix_spectre is NOT set, setting it to 2 n"; $choix_spectre = 2; } switch ( $choix_spectre ) { case 1: //echo " -->Spectre continu n"; $checked_1 = "checked"; $checked_2 = ""; $checked_3 = ""; break; case 3: //echo " -->Spectre d'absorption n"; $checked_1 = ""; $checked_2 = ""; $checked_3 = "checked"; break; default: // 2 ou toute autre valeur $choix_spectre = 2; // au cas où ce n'était pas 2 //echo " -->Spectre d'émission n"; $checked_1 = ""; $checked_2 = "checked"; $checked_3 = ""; break; } ?>
Je viens de tester ce switch/case en supprimant le test sur isset qui le précède : ça marche, c'est à dire que le cas "default" a l'air d'englober le cas ou $choix_spectre n'a pas de valeur attribuée.
[...] cLà aussi tu pourrais utilise l'instruction switch, qui en PHP peut être cutilisée aussi bien sur des chaînes que sur des entiers. chttps://www.php.net/manual/fr/control-structures.switch.php
0K, je vais lire cette page
Dans cette page, j'ai vu le commentaire (de lchanady at gmail dot com) suivant: Something fairly simple (and maybe obvious) that I didn't see mentioned is that the default case WILL be executed even if the switched variable does not exist or is undefined. For example: <?php $a = "abc"; $b = "def"; switch($c){ case "a": echo "a"; break; case "b": echo "b"; break; default: echo "default"; break; } ?> Will output: default Even though $c was never declared or defined, the default case will still be executed rather than PHP throwing an error. Encore merci pour le rappel sur switch/case !
Le 02-03-2020, Lulu <lulu042@fry.fr.invalid>a écrit :
Le 02-03-2020, Olivier Miakinen <om+news@miakinen.net>a écrit :
Le 02/03/2020 20:31, Lulu a écrit :
[...]
... Mais il y a plus simple comme écriture.
Ah oui...
Depuis que je me "pense" en python, j'oublie le swich case...
Merci pour le code ;-)
<?php
if ( ! isset( $choix_spectre ) ) {
//echo "choix_spectre is NOT set, setting it to 2 <br />n";
$choix_spectre = 2;
}
default: // 2 ou toute autre valeur
$choix_spectre = 2; // au cas où ce n'était pas 2
//echo " -->Spectre d'émission<br />n";
$checked_1 = "";
$checked_2 = "checked";
$checked_3 = "";
break;
}
?>
Je viens de tester ce switch/case en supprimant le test sur isset qui
le précède : ça marche, c'est à dire que le cas "default" a l'air
d'englober le cas ou $choix_spectre n'a pas de valeur attribuée.
[...]
cLà aussi tu pourrais utilise l'instruction switch, qui en PHP peut être
cutilisée aussi bien sur des chaînes que sur des entiers.
chttps://www.php.net/manual/fr/control-structures.switch.php
0K, je vais lire cette page
Dans cette page, j'ai vu le commentaire (de lchanady at gmail dot com)
suivant:
Something fairly simple (and maybe obvious) that I didn't see mentioned
is that the default case WILL be executed even if the switched variable
does not exist or is undefined.
For example:
<?php
$a = "abc";
$b = "def";
switch($c){
case "a":
echo "a";
break;
case "b":
echo "b";
break;
default:
echo "default";
break;
}
?>
Will output: default
Even though $c was never declared or defined, the default case will
still be executed rather than PHP throwing an error.
Ah oui... Depuis que je me "pense" en python, j'oublie le swich case... Merci pour le code ;-)
<?php if ( ! isset( $choix_spectre ) ) { //echo "choix_spectre is NOT set, setting it to 2 n"; $choix_spectre = 2; } switch ( $choix_spectre ) { case 1: //echo " -->Spectre continu n"; $checked_1 = "checked"; $checked_2 = ""; $checked_3 = ""; break; case 3: //echo " -->Spectre d'absorption n"; $checked_1 = ""; $checked_2 = ""; $checked_3 = "checked"; break; default: // 2 ou toute autre valeur $choix_spectre = 2; // au cas où ce n'était pas 2 //echo " -->Spectre d'émission n"; $checked_1 = ""; $checked_2 = "checked"; $checked_3 = ""; break; } ?>
Je viens de tester ce switch/case en supprimant le test sur isset qui le précède : ça marche, c'est à dire que le cas "default" a l'air d'englober le cas ou $choix_spectre n'a pas de valeur attribuée.
[...] cLà aussi tu pourrais utilise l'instruction switch, qui en PHP peut être cutilisée aussi bien sur des chaînes que sur des entiers. chttps://www.php.net/manual/fr/control-structures.switch.php
0K, je vais lire cette page
Dans cette page, j'ai vu le commentaire (de lchanady at gmail dot com) suivant: Something fairly simple (and maybe obvious) that I didn't see mentioned is that the default case WILL be executed even if the switched variable does not exist or is undefined. For example: <?php $a = "abc"; $b = "def"; switch($c){ case "a": echo "a"; break; case "b": echo "b"; break; default: echo "default"; break; } ?> Will output: default Even though $c was never declared or defined, the default case will still be executed rather than PHP throwing an error. Encore merci pour le rappel sur switch/case !
Olivier Miakinen
Le 03/03/2020 01:16, Lulu a écrit :
[...] Je viens de tester ce switch/case en supprimant le test sur isset qui le précède : ça marche, c'est à dire que le cas "default" a l'air d'englober le cas ou $choix_spectre n'a pas de valeur attribuée.
et :
[...] Dans cette page, j'ai vu le commentaire (de lchanady at gmail dot com) suivant: Something fairly simple (and maybe obvious) that I didn't see mentioned is that the default case WILL be executed even if the switched variable does not exist or is undefined. [...] Even though $c was never declared or defined, the default case will still be executed rather than PHP throwing an error.
Tout ça me semble parfait.
Encore merci pour le rappel sur switch/case !
Heureux d'avoir aidé. -- Olivier Miakinen
Le 03/03/2020 01:16, Lulu a écrit :
[...]
Je viens de tester ce switch/case en supprimant le test sur isset qui
le précède : ça marche, c'est à dire que le cas "default" a l'air
d'englober le cas ou $choix_spectre n'a pas de valeur attribuée.
et :
[...]
Dans cette page, j'ai vu le commentaire (de lchanady at gmail dot com)
suivant:
Something fairly simple (and maybe obvious) that I didn't see mentioned
is that the default case WILL be executed even if the switched variable
does not exist or is undefined.
[...]
Even though $c was never declared or defined, the default case will
still be executed rather than PHP throwing an error.
[...] Je viens de tester ce switch/case en supprimant le test sur isset qui le précède : ça marche, c'est à dire que le cas "default" a l'air d'englober le cas ou $choix_spectre n'a pas de valeur attribuée.
et :
[...] Dans cette page, j'ai vu le commentaire (de lchanady at gmail dot com) suivant: Something fairly simple (and maybe obvious) that I didn't see mentioned is that the default case WILL be executed even if the switched variable does not exist or is undefined. [...] Even though $c was never declared or defined, the default case will still be executed rather than PHP throwing an error.
Tout ça me semble parfait.
Encore merci pour le rappel sur switch/case !
Heureux d'avoir aidé. -- Olivier Miakinen
Olivier Miakinen
Le 03/03/2020 00:17, Lulu a écrit :
[...] 0K [...] 0K, je vais lire cette page [...] 0K
C'est amusant. Pourquoi écris-tu 0K au lieu de OK ? Un jeu de mots avec le zéro absolu des températures, zéro kelvin ?
[...] Ok.
Là c'était moi. -- Olivier Miakinen
Le 03/03/2020 00:17, Lulu a écrit :
[...]
0K
[...]
0K, je vais lire cette page
[...]
0K
C'est amusant. Pourquoi écris-tu 0K au lieu de OK ? Un jeu de mots avec le zéro
absolu des températures, zéro kelvin ?
[...] 0K [...] 0K, je vais lire cette page [...] 0K
C'est amusant. Pourquoi écris-tu 0K au lieu de OK ? Un jeu de mots avec le zéro absolu des températures, zéro kelvin ?
Quelle capacité d'observation !! Parce que ça veut dire "zero killed" (enfin ça n'est qu'une des nombreuses explications pour okay).
Olivier Miakinen
Le 03/03/2020 16:05, Lulu a écrit :
C'est amusant. Pourquoi écris-tu 0K au lieu de OK ? Un jeu de mots avec le zéro absolu des températures, zéro kelvin ?
Quelle capacité d'observation !!
:-)
Parce que ça veut dire "zero killed" (enfin ça n'est qu'une des nombreuses explications pour okay).
Ça ne fait pas partie des explications privilégiées, mais en effet c'en est une : <https://fr.wikipedia.org/wiki/OK_%28expression%29>. Merci de ta réponse. -- Olivier Miakinen
Le 03/03/2020 16:05, Lulu a écrit :
C'est amusant. Pourquoi écris-tu 0K au lieu de OK ? Un jeu de mots avec le zéro
absolu des températures, zéro kelvin ?
Quelle capacité d'observation !!
:-)
Parce que ça veut dire "zero killed" (enfin ça n'est qu'une des
nombreuses explications pour okay).
Ça ne fait pas partie des explications privilégiées, mais en effet c'en
est une : <https://fr.wikipedia.org/wiki/OK_%28expression%29>.
C'est amusant. Pourquoi écris-tu 0K au lieu de OK ? Un jeu de mots avec le zéro absolu des températures, zéro kelvin ?
Quelle capacité d'observation !!
:-)
Parce que ça veut dire "zero killed" (enfin ça n'est qu'une des nombreuses explications pour okay).
Ça ne fait pas partie des explications privilégiées, mais en effet c'en est une : <https://fr.wikipedia.org/wiki/OK_%28expression%29>. Merci de ta réponse. -- Olivier Miakinen
Lulu
Le 03-03-2020, Olivier Miakinen <om+ a écrit :
Le 03/03/2020 16:05, Lulu a écrit :
C'est amusant. Pourquoi écris-tu 0K au lieu de OK ? Un jeu de mots avec le zéro absolu des températures, zéro kelvin ?
Quelle capacité d'observation !!
:-)
Parce que ça veut dire "zero killed" (enfin ça n'est qu'une des nombreuses explications pour okay).
Ça ne fait pas partie des explications privilégiées, mais en effet c'en est une : <https://fr.wikipedia.org/wiki/OK_%28expression%29>.
J'ai relu avec plaisir cette page : le « Ola kala » grec me plait bien aussi.
Merci de ta réponse.
Je t'en prie. C'est toujours un plaisir de discuter avec toi.
Le 03-03-2020, Olivier Miakinen <om+news@miakinen.net> a écrit :
Le 03/03/2020 16:05, Lulu a écrit :
C'est amusant. Pourquoi écris-tu 0K au lieu de OK ? Un jeu de mots
avec le zéro absolu des températures, zéro kelvin ?
Quelle capacité d'observation !!
:-)
Parce que ça veut dire "zero killed" (enfin ça n'est qu'une des
nombreuses explications pour okay).
Ça ne fait pas partie des explications privilégiées, mais en effet
c'en est une : <https://fr.wikipedia.org/wiki/OK_%28expression%29>.
J'ai relu avec plaisir cette page : le « Ola kala » grec me plait bien
aussi.
Merci de ta réponse.
Je t'en prie. C'est toujours un plaisir de discuter avec toi.