• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

zufallszahl "absichern"??

Status
Für weitere Antworten geschlossen.

wolf360

Neues Mitglied
Hey ich hab mal ein kleines spiel gmacht bloß klappts net...

hier mal das script:
PHP:
    <?php
  //Zufallszahl
  $random = rand(10,20);
  $test1 = $rand;

  echo $random;

  ?>

  <!--Eingabefeld-->
  <form method="post">
  <input name="test" type="text"></input>
  <input type="submit"></input>
  </form>

   <?php
  //Überprüfung
   if($_POST['test'] < $test1){
    echo "zu klein";
    }
   if($_POST['test'] > $test1){
    echo "zu groß";
    }
   if($_POST['test'] == $test1){
    echo "richtig";
    }
    ?>

klar den fehler weiß ich... sobald man auf absenden geht, wird eine neue zahl erzeugt, daher wollt ich fragn, wie sichert man die zufallszahl ab, bis "richtig" kommt ?! weil zZ kommt immer die Ausgabe "zu groß"...

danke schon mal für die hilfe!

gruß wolf360
 
Zuletzt bearbeitet von einem Moderator:
Überprüf' mal die Namen deiner Felder und Variablen!
Als erstes weist du mit

PHP:
$random = rand(10,20);
$test1 = $rand;

Eine falsche Variable zu! Nämlich $rand statt $random!
Später prüfst du dann auf diese Variable, die es ja nicht gibt.
Das die Zufallswerte neu erzeugt werden, kannst du mit Sessions unterbinden,
wenn die Session gesetzt ist, wird kein neuer Wert eingetragen,
wenn sie nicht gesetzt ist, also zu Beginn, oder wenn 'gewonnen' wurde,
wir der Zufallswert in die Session eingetragen!

Ich hab dir das unten mal gemacht, schau 's dir einfach an und frag', wenn
was unverständlich ist!

PHP:
<?php

session_start();
if (!isset($_SESSION['zahlen'])) {
  $_SESSION['zahlen'] = array();
}

//Zufallszahl
if (!isset($_SESSION['zufallszahl'])) {
  $_SESSION['zufallszahl'] = rand(10,20);
}

?>

<!--Eingabefeld-->
<form method="post">
<input name="userzahl" type="text"><br>
<input type="submit"></input>
</form>
<!-- Ende Eingabefeld -->

<?php

//Überprüfung
if (isset($_POST['userzahl'])) {

  if($_POST['userzahl'] < $_SESSION['zufallszahl']){

    if (!in_array($_POST['userzahl'], $_SESSION['zahlen'])) {

      $_SESSION['zahlen'][] = $_POST['userzahl'];

    }
    echo "Zu klein (".$_POST['userzahl'].")<br>";
    echo "Ihre Zahlen:<br>";
    echo implode(',', $_SESSION['zahlen']);

  }
  elseif ($_POST['userzahl'] > $_SESSION['zufallszahl']) {

    if (!in_array($_POST['userzahl'], $_SESSION['zahlen'])) {

      $_SESSION['zahlen'][] = $_POST['userzahl'];

    }
    echo "Zu groß (".$_POST['userzahl'].")<br>";
    echo "Ihre bisherigen Zahlen:<br>";
    echo implode(', ', $_SESSION['zahlen']);

  }
  elseif ($_POST['userzahl'] == $_SESSION['zufallszahl']) {

    echo "Richtig!!!<br>";
    echo "Ihre Versuche: ". count($_SESSION['zahlen']);
    unset($_SESSION['zufallszahl']);
    unset($_SESSION['zahlen']);
    echo "<br>";
    echo "<a href=\"".$_SERVER['PHP_SELF']."\">Nochmal!</a>";

  }

}

?>
 
Zuletzt bearbeitet:
Setze unten bei der überprüfung nach der Zahl ein else-Zweig, indem du eingibst:
Bitte gebe eine Zahl ein oder so.

MfG, matibaski
 
aber es kann doch trotzdem leute gebn die buchstaben eingeben und das will ich verhinder?!

PHP:
<?php

session_start();
if (!isset($_SESSION['zahlen'])) {
  $_SESSION['zahlen'] = array();
}

//Zufallszahl
if (!isset($_SESSION['zufallszahl'])) {
  $_SESSION['zufallszahl'] = rand(10,20);
}

?>

<!--Eingabefeld-->
<form method="post">
<input name="userzahl" type="text"><br>
<input type="submit"></input>
</form>
<!-- Ende Eingabefeld -->

<?php

//Überprüfung
if (isset($_POST['userzahl']) && $_POST['userzahl'] != "") {

  if (is_numeric($_POST['userzahl'])) {

    if($_POST['userzahl'] < $_SESSION['zufallszahl']){

      if (!in_array($_POST['userzahl'], $_SESSION['zahlen'])) {

        $_SESSION['zahlen'][] = $_POST['userzahl'];

      }
      echo "Zu klein (".$_POST['userzahl'].")<br>";
      echo "Ihre Zahlen:<br>";
      echo implode(',', $_SESSION['zahlen']);

    }
    elseif ($_POST['userzahl'] > $_SESSION['zufallszahl']) {

      if (!in_array($_POST['userzahl'], $_SESSION['zahlen'])) {

        $_SESSION['zahlen'][] = $_POST['userzahl'];

      }
      echo "Zu groß (".$_POST['userzahl'].")<br>";
      echo "Ihre bisherigen Zahlen:<br>";
      echo implode(', ', $_SESSION['zahlen']);

    }
    elseif ($_POST['userzahl'] == $_SESSION['zufallszahl']) {

      echo "Richtig!!!<br>";
      echo "Ihre Versuche: ";
      echo count($_SESSION['zahlen'])+1;
      unset($_SESSION['zufallszahl']);
      unset($_SESSION['zahlen']);
      echo "<br>";
      echo "<a href=\"".$_SERVER['PHP_SELF']."\">Nochmal!</a>";

    }

  }
  else {

    echo "Eingabe muss eine Ganzzahl sein!";
    echo "<br>";
    echo "<a href=\"".$_SERVER['PHP_SELF']."\">Nochmal!</a>";

  }

}
else {

  echo "Bitte geben Sie eine Zahl ein!";
  echo "<br>";
  echo "<a href=\"".$_SERVER['PHP_SELF']."\">Nochmal!</a>";

}

?>


Du testest die Usereingabe mit is_numeric()!
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben