kostenloser Webspace werbefrei: lima-city


Spamblocker fehler beim Variablen übertragen!

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    chatvz

    Kostenloser Webspace von chatvz

    chatvz hat kostenlosen Webspace.

    Hallo,
    ich möchte für meine HP einen Spamblocker programmieren. ich habe auch schon angefangen:
    <?php  
    include ("sql.php");?>
    
    
    <?php
    $sql = 'SELECT * FROM Spamblocker ORDER BY rand() LIMIT 0,1';  
    $result = mysql_query ($sql);  
    while ($data = mysql_fetch_array ($result)) {
    
    $bild = $data['Bild'];
    $code = $data['code'];
    $Frage = $data['Frage'];
    
    echo "
    <b>$Frage</b><br><br>
    <ul>";
    }?>
      <a href="<?php echo $_SERVER['PHP_SELF']; ?>
         ">Kann ich nicht lesen</a> 
         <img src='<?echo"$bild";?>' width='200px' height='70px' border='0'><br>
         </ul>
    <br>
    <?php if(!isset($_POST['submit'])) { ?>
    <form action="<?php $PHP_SELF ?>" method="post" name="form">
    
       <input name="code2" type="text" style="background:#ECFFD0; border: 1px solid #99CCFF; width:300px;"></td>
      <tr>
        <td><input name="submit" value="Senden" class="button" type="submit" style="background:#ECFFD0;"></td>
      </tr>
    <?
    
      $code2 = $_POST['code2'];
    }elseif($code == $code2){
       echo 'richtig.<br></p>';
    
      }else{
       echo 'falsch.';
    
    
    
      }
    
    
    ?>
      </form>

    Der User soll den Code der im Bild steht in dasInput feld eintippen mein problem ist wenn ich auf den button klicke um die eingabe ($code2) mit der Variable ($code) zu vergleichen lädt er die variable Code neu ! wie kann ich das verhindern?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi,
    So kann es nicht funktionieren. :-)
    Bei einem Reload würden alle Variablen sowieso wieder verworfen. Eine Lösung, die mir jetzt spontan eingefallen ist und sich einfach in dein Script einbauen lässt, wäre ein Mitschicken des Codes in einer Session und ein "Von-oben-herunter"-Programmieren.

    Das könnte in etwa so aussehen:
    <?php
    session_start();
    include ("sql.php");
    
    if($_POST["submit"])
      if($_POST["input_code"] == $_SESSION["code"]) {
        print("Richtig!");
        unset($_SESSION["code"]);
    }
    else {
      $result = mysql_query("SELECT Bild,Frage,code FROM Spamblocker ORDER BY RAND() LIMIT 1;");
      $data = mysql_fetch_object($result);
      $_SESSION["code"] = $data->code;
      
      echo $data->Frage."<br>";
      echo "<img src='$data->Bild' width='200px' height='70px' border='0'><br>"
      echo "<a href=''>Kann ich nicht lesen</a>";
    ?>
    <form action="" method="post">
    <table>
      <tr>
        <td>
          <input name="input_code" type="text" style="background:#ECFFD0; border: 1px solid #99CCFF; width:300px;">
        </td>
      <tr>
        <td>
          <input name="submit" value="Senden" class="button" type="submit" style="background:#ECFFD0;">
        </td>
      </tr>
    </table>
    </form>
    <?php
    }
    ?>

    Hab es jetzt nicht geprüft, weiß also nicht, ob es gleich tun wird. Falls es immernoch Probleme geben sollte, helf ich dir gerne weiter. :-)

    styVe (qap2-Team)

    Beitrag zuletzt geändert: 13.10.2009 19:20:19 von qap2
  4. Es muss natürlich noch die Funktion session_start(); ganz oben hingeschrieben werden, damit die Session überhaupt gespeichert wird, und nach dem neuen Seitenaufruf verfügbar ist. Cookies, Get oder ein Hidden-Feld im Formular währe auch noch Lösungen.
  5. Natürlich muss die Session erst noch gestartet werden. Bin davon ausgegangen, dass das schon früher im Seitenscript geschieht. :-)
    Cookies würde ich jetzt vielleicht nicht benutzen, weil sie eben auch deaktiviert werden können. Aber sonst würden alle anderen Lösungen natürlich auch funktionieren. :P
    Werde dem Script das session_start(); zur Sicherheit trotzdem noch anhängen. Danke für den Hinweis.

    styVe (qap2-Team)

    Beitrag zuletzt geändert: 13.10.2009 14:32:49 von qap2
  6. Autor dieses Themas

    chatvz

    Kostenloser Webspace von chatvz

    chatvz hat kostenlosen Webspace.

    qap2 schrieb: Hi, So kann es nicht funktionieren. :-) Bei einem Reload würden alle Variablen sowieso wieder verworfen. Eine Lösung, die mir jetzt spontan eingefallen ist und sich einfach in dein Script einbauen lässt, wäre ein Mitschicken des Codes in einer Session und ein "Von-oben-herunter"-Programmieren. Das könnte in etwa so aussehen:
    &lt;?php session_start(); include ("sql.php"); if($_POST["submit"]) if($_POST["input_code"] == $_SESSION["code"]) { print("Richtig!"); unset($_SESSION["code"]); } else { $result = mysql_query("SELECT Bild,Frage,code FROM Spamblocker ORDER BY RAND() LIMIT 1;"); $data = mysql_fetch_object($result) $_SESSION["code"] = $data-&gt;code; echo $data-&gt;Frage."&lt;br&gt;"; echo "&lt;img src='$data-&gt;Bild' width='200px' height='70px' border='0'&gt;&lt;br&gt;" echo "&lt;a href=''&gt;Kann ich nicht lesen&lt;/a&gt;"; ?&gt; &lt;form action="" method="post"&gt; &lt;table&gt; &lt;tr&gt; &lt;td&gt; &lt;input name="input_code" type="text" style="background:#ECFFD0; border: 1px solid #99CCFF; width:300px;"&gt; &lt;/td&gt; &lt;tr&gt; &lt;td&gt; &lt;input name="submit" value="Senden" class="button" type="submit" style="background:#ECFFD0;"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/form&gt; &lt;?php } ?&gt;
    Hab es jetzt nicht geprüft, weiß also nicht, ob es gleich tun wird. Falls es immernoch Probleme geben sollte, helf ich dir gerne weiter. :-) styVe (qap2-Team)

    Ok Danke für die Hilfe.
    Ganz klapt das aber nochnicht :-(
    Hier ist noch ein Fehler:
    $_SESSION["code"] = $data->code; (Zeile 13)

    Nochmal Hilfe^^
    LG
  7. Wie lautet der Fehler denn?

    Poste den Fehler vielleicht noch und guck auch noch, ob du zu Beginn session_start(); benutzt hast.
    Ansonsten: versicher dich auch noch, dass Groß- und Kleinschreibung stimmen. Das "code" könnte vielleicht groß geschrieben sein. :-)

    styVe (qap2-Team)

    *Edit* Fehler gefunden. Bei "$data = mysql_fetch_object($result)" Fehlt das Semikolon... mein Fehler, sorry.^^

    Beitrag zuletzt geändert: 13.10.2009 19:15:21 von qap2
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!