ilch Forum » Allgemein » HTML, PHP, SQL,... » Problem mit eingabe Script

Geschlossen
  1. #1
    User Pic
    MonkeyOnKeyboard Moderator
    Registriert seit
    10.02.2014
    Beiträge
    437
    Beitragswertungen
    20 Beitragspunkte
    Ich habe ein Problem mit meinem eingabe // überprüfungs script.

    Ich übergebe in einem Auth() Script mehrere variablen in dieses. greife sie mit get ab und versuche sie weiter zu verarbeiten. nun habe ich viele überprüfungen drin. mit db unterstützung. meines erachtens zu viele while schleifen.

    nun funktioniert das script leider auch nicht mehr.

    es bleibt hängen bei der ausgabe code wird überprüft.

    kann jemand helfen. ich komm echt nicht weiter...



    
    <?php
    
    
        date_default_timezone_set('Europe/Berlin');
    
        $mysqli = new MySQLi("localhost", "dbuser", "dbpass", "clantools");
        if ($mysqli->connect_errno) {
            echo "Failed to connect to MySQL: ({$mysqli->connect_errno}) {$mysqli->connect_error}";
        }
    
        $result = mysqli_query($mysqli,"SELECT * FROM clanmember_ra1se where '".$_GET['account_name']."' = Playername");
    
        //while($row = mysqli_fetch_array($result))
        //  {
        //
        //      if ($_GET['clantag'] = $row['Clantag']) {
    
        if (mysqli_num_rows($result) != 0)
        {
    
    
                echo '
                <!DOCTYPE html>
                <html>
                <head>
                <title>Code Eingabe</title>
                </head>
                <body>
                <form action="?" method="get">
                  <input type="hidden" name="account_name" value="'.$_GET['account_name'].'">
                  <input type="hidden" name="clantag" value="'.$_GET['clantag'].'">
                  <input type="hidden" name="role" value="'.$_GET['role'].'">
                  <input type="hidden" name="role_i18n" value="'.$_GET['role_i18n'].'">
                  <p>Code: <input type="text" name="code" /></p>
                  <p><input type="radio" name="activity" id="leitend" value="leitend" />Leitender FK</p>
                  <p><input type="radio" name="activity" id="gespielt" value="gespielt" />Gespielt</p>
                  <p><input type="radio" name="activity" id="bereit" value="bereit" />Bereit</p>
                  <p><input type="submit" name="absenden" value="Code senden"/></p>
                </form>
    
                </body>
                </html>
                ';
    
                if ( empty ($_GET['code']) != TRUE and isset($_GET['absenden']))
                    {
                        // wenn beide Bedingungen zutreffen, 
                        // dann folgende Anweisungen ausführen
    
                        if (isset ($_GET['activity'])){
                             if ($_GET['activity']=="leitend"){
                                  $status = 'leitend';
                             }
                             if ($_GET['activity']=="gespielt"){
                                  $status = 'gespielt';
                             }
                             if ($_GET['activity']=="bereit"){
                                  $status = 'bereit';
                             }
                        }
                        $eingabe = date("Y-m-d H:i:s", time());
    
    
                        //$mysqli = new MySQLi("localhost", "dbuser", "dbpass", "clantools");
                        //if ($mysqli->connect_errno) {
                        //      echo "Failed to connect to MySQL: ({$mysqli->connect_errno}) {$mysqli->connect_error}";
                        //}
    
                        $result_code = mysqli_query($mysqli,"SELECT * FROM code_ra1se where '".$_GET['code']."' = code");
    
    
    
                        if (mysqli_num_rows($result_code) != 0)
                            {
                                echo '<br>';
                                echo '<center>Code wird gepr&uuml;ft</center>';
                                echo "<br>";
                                echo "<br>";
                                echo "<br>";
                                echo "<br>"; 
    
                            while($row = mysqli_fetch_array($result_code))
                             {
    
    
                                $result = mysqli_query($mysqli,"SELECT * FROM eingabe_code_ra1se where '".$_GET['account_name']."' = spielername");
    
                                while($row = mysqli_fetch_array($result))
                                    {
    
                                        if ($_GET['code'] != $row['code']) {
    
    
    
    
    
                                        //echo ''.$row['gueltigkeit'].' > '.$eingabe.''; 
    
                                        if ($row_code['gueltigkeit'] > $eingabe){
    
    
    
                                            $sql = "INSERT INTO eingabe_code_ra1se (spielername,code,clantag,eingabezeit,role,role_i18n,activity ) VALUES ('".$_GET['account_name']."', '".$_GET['code']."', '".$_GET['clantag']."', '".$eingabe."', '".$_GET['role']."', '".$_GET['role_i18n']."', '".$status."')";
    
                                            if ($mysqli->query($sql) == TRUE) {
                                                    echo "<b><center>Code erfolgreich &uuml;bermittelt!</center><br> BITTE SEITE SCHLIE&szlig;EN!!</b> <br>";
                                            } else {
                                                    echo "Error: " . $sql . "<br>" . $mysqli->error;
                                            }
    
                                            $mysqli->close();
    
                                            } else {
    
    
                                                echo "<b><center>Code ist nicht g&uuml;ltig!</center></b> <br>";
    
                                            }
    
                                        } else {
    
                                                echo "<b><center>Du hast den Code breits eingegeben!</center></b> <br>";
    
                                        }
    
                                    }
    
                                }
                                }  else {
    
                                        echo "<b><center>Der Code existiert nicht!</center></b> <br>";
    
                                }
                    }
            } else {
    
                echo "<b><center>Du bist nicht berechtigt den Code hier einzugeben!</center></b> <br>";
    
            }
    
    ?>


    betroffene Homepage: clantools.r1sing.de
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    In Zeile 99 verwendest du $row_code. Diese Variable ist allerdings nicht definiert, du hast beide mal zuvor $row = mysqli_fetch... verwendet.

    Dein Code ist unsicher gegenüber SQL Injections, wenn du Daten die vom Benutzer kommen wie $_GET oder $_POST Variablen, musst du unbedingt de.php.net/manual/en/mysqli.real-escape-string.php verwenden.

    Beispiel:

    $result = mysqli_query($mysqli, "SELECT * FROM clanmember_ra1se where '" . $mysqli->real_escape_string($_GET['account_name']) . "' = Playername");


    Weiter als Hinweis, die 2 SQL Abfrage sollte nicht in der while Schleife sein, da sich die Bedingung durch die Schleife nie ändert und die Abfrage deshalb nur einmal ausgeführt werden musst.

    Falls du genau weiß, dass nur ein Zeile in deinem Ergebnis sein wird, benötigst du auch keine while Schleife und kannst einfach mysqli_fetch_*** direkt so aufrufen. (Allerdings ggf. darauf achten, dass auch gar kein Ergebnis zurückkommen kann).

    Als letzter Hinweis noch, das $mysqli->close(); steckt bei dir tief in deiner if Strukur und wird dadruch nur in bestimmten Fällen ausgeführt. Es wird abber immer geöffnet und sollte demzufolge auch immer geschlossen werden, ganz am Ende. (Wird allerdings auch ohne den expliziten Aufruf getan).
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten