Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Jotain harjoitusta PHP:hen

php-Niko [11.09.2006 21:24:57]

#

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

Kentti [11.09.2006 21:56:38]

#

$_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...

Metabolix [11.09.2006 23:10:29]

#

$_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();
}
?>

tsuriga [11.09.2006 23:23:57]

#

$_SERVER['SCRIPT_NAME']

timoh @ mureakuha kirjoitti:

index.php/%22%3E%3Cscript%3Escriptiä tähän%3C/script%3E%3Cspan

Ja sitten se $_SERVER['PHP_SELF'] -muuttujasta on tullut

index.php/"><script>scriptiä tähän</script><span">

php-Niko [12.09.2006 06:45:30]

#

Ei tämä tule minnekkään käyttöön, niin ei tietoturvalla väliä ole


E: Oho. En huomannutkaan tota POSTia tonne.

Blaze [12.09.2006 09:04:29]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta