Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: teele - 01.09.24 - klo:18.38
-
Nettiohjeiden mukaan ! -operaattorin pitäisi kääntää totuusarvo, mutta en keksi, miksi niin ei näytä tapahtuvan tässä pienessä kokeiluohjelmassa
<?php
if(1)
{
echo("luku alkaa \n\n");
$qs = readline("anna arvo1 arvo2 arvo3 ja arvot4: ");
echo("\n\n luku loppu \n\n");
$_POST['arvo1'] = explode(' ', $qs)[0] . ' ';
$_POST['arvo2'] = explode(' ', $qs)[1] . ' ';
$_POST['arvo3'] = explode(' ', $qs)[2] . ' ';
$_POST['arvot4'] = implode(' ', array_slice(explode(' ', $qs), 3));
/*
echo( $_POST['arvo1'] );
echo( $_POST['arvo2'] );
echo("\n\n loppu \n\n");
*/
} // if loppuu
if(empty($_POST["arvo1"]))
{
die("arvo1 puuttuu");
}
echo($_POST["arvo1"] ) ;
echo( " arvon1:n pituus on " . strlen(trim($_POST["arvo1"] )) . "\n" );
if( !is_int(trim($_POST["arvo1"] )) )
{
die("\narvo1:n on oltava kokonaisluku\n "); // <<<====== vaikka arvo on 1, tullaan tänne ????
}
$my_number = str_replace(' ', '', $_POST['arvo1'] ); // tyhjät pois
$my_number = filter_var($my_number, FILTER_SANITIZE_STRING);
$my_number = substr($my_number, 0, 40);
?>
kokeilu meni näin
php kokeilu_05.php
luku alkaa
anna arvo1 arvo2 arvo3 ja arvot4: 1 aa oo 2 3 4
luku loppu
1 arvon1:n pituus on 1
arvo1:n on oltava kokonaisluku
Voi olla, että kyseessä on joku yksinkertainen logiikkavirhe omassa logiikassani, mutta itse sitä on vaikea huomata
Miten pitäisi testata, että syötettävä arvo on kokonaisluku php:ssä.
-
Ongelma lienee se, että trim($_POST["arvo1"]) palauttaa merkkijonon ja is_int() testaa onko kyseessä kokonaislukutyyppinen arvo.
https://www.php.net/manual/en/function.is-int.php
Note:
To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric() (https://www.php.net/manual/en/function.is-numeric.php).
Eli kokeile korvata is_int() funktiolla is_numeric().
-
Taisi ratketa sillä ohjeella, varmistelen vielä koko koodin kanssa, sitten laitan ratkaistuksi
Kiitos neuvosta :)