Eli mikäs täs on väärin?
Ihan huvikseen tein jtn tälläst ja ei toiminutkaan :(
Koodi on:
<?php $lomake="<form action=\"$PHP_SELF\" method=\"post\"> Arvaa numero: <input type=\"text\" name=\"arvattava_numero\" size=\"5\" maxlength=\"80\" value=\"\"> <br> <input type=\"submit\" value=\"Arvaa\"> </form>"; if ( $arvattava_numero == "" ) { print $lomake; } elseif ( $arvattava_numero == "10" ) { print "Arvasit oikein!"; } elseif ( $arvattava_numero < "10" ) { print "Arvaamasi numero on liian pieni.<br>"; print "Arvaa uudestaan:<br>$lomake"; } else { print "Arvaamasi numero on liian iso.<br>"; print "Arvaa uudestaan:<br>$lomake"; } ?>
Maailman kaatoa ei tästä kannata tehä :D
E: Näyttää harakan varpailta :D
$_POST puuttuu.
Koodi korjattuna:
<?php $lomake="<form action=\"$PHP_SELF\" method=\"post\"> Arvaa numero: <input type=\"text\" name=\"arvattava_numero\" size=\"5\" maxlength=\"80\" value=\"\"> <br> <input type=\"submit\" value=\"Arvaa\"> </form>"; # Tämä tässä $arvattava_numero = $_POST['arvattava_numero']; ### if ( $arvattava_numero == "" ) { print $lomake; } elseif ( $arvattava_numero == "10" ) { print "Arvasit oikein!"; } elseif ( $arvattava_numero < "10" ) { print "Arvaamasi numero on liian pieni.<br>"; print "Arvaa uudestaan:<br>$lomake"; } else { print "Arvaamasi numero on liian iso.<br>"; print "Arvaa uudestaan:<br>$lomake"; } ?>
Pitäisi toimia.
PS. Ja opettele sisennykset, itteltäs menee paljo vähemmän aika virheiden metsästykeseen.
Tietoturvaa tuossa ei ole mitenkään huomioon otettu...
$_SERVER['SCRIPT_NAME']
Lisäksi koodista tulisi paljon selvempää ilman tuollaista kammottavaa lomakemuuttujaa, ja POST on hieman huono tapa tuollaiseen, kun se aiheuttaa turhaa kyselyä, että lähetetäänkös se data nyt vai kuinka.
<?php function tulosta_lomake() { ?> <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="GET"> <p>Arvauksesi: <input type="text" name="arvaus" /></p> <p><input type="submit" name="lahetys" value="arvaa" /></p> </form> <?php } $oikea = 10; if (!empty($_GET['arvaus'])) { $arvaus = $_GET['arvaus']; if ($arvaus < $oikea) { echo "<p>$arvaus on liian pieni!</p>\n"; tulosta_lomake(); } else if ($arvaus > $oikea) { echo "<p>$arvaus on liian suuri!</p>\n"; tulosta_lomake(); } else { echo "<p>$arvaus oli oikein! Peli päättyi.</p>\n"; } } else { echo "<p>Arvaapa luku.</p>\n"; tulosta_lomake(); } ?>
$_SERVER['SCRIPT_NAME']
timoh @ mureakuha kirjoitti:
index.php/%22%3E%3Cscript%3Escriptiä tähän%3C/script%3E%3CspanJa sitten se $_SERVER['PHP_SELF'] -muuttujasta on tullut
index.php/"><script>scriptiä tähän</script><span">
Ei tämä tule minnekkään käyttöön, niin ei tietoturvalla väliä ole
E: Oho. En huomannutkaan tota POSTia tonne.
php-Niko kirjoitti:
Ei tämä tule minnekkään käyttöön, niin ei tietoturvalla väliä ole
Hyvä se on opetella kerralla tekemään kunnolla, ettei vahingossa jää reikiä sitten tuotanto-ohjelmiin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.