kostenloser Webspace werbefrei: lima-city


datenbank + script fehler

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    gravedesign

    gravedesign hat kostenlosen Webspace.

    kann mir jemand erklären anhand meiner datenbank und script warum diese meldungen ausgegeben werden :
    Der Benutzer wurde nicht angelegt

    Dein Nickname ist schon vorhanden!

    Dein Nickname ist schon vorhanden!

    obwohl die datenbank leer ist?

    CREATE TABLE Spieler (
      Spieler_ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
      Statistik_ID INTEGER UNSIGNED NOT NULL,
      Nickname CHAR() NULL,
      Passwort CHAR NULL,
      EMail CHAR NULL,
      umod BOOL NULL,
      löschen BOOL NULL,
      sitting BOOL NULL,
      Skin INTEGER UNSIGNED NULL,
      Volk CHAR NULL,
      Volksbild CHAR NULL,
      Volksbeschreibung CHAR NULL,
      Plani_Sortierung CHAR NULL,
      Allianz INTEGER UNSIGNED NULL,
      Foerderation INTEGER UNSIGNED NULL,
      Premium BOOL NULL,
      Level INT NULL,
      Session VARCHAR(20) NULL,
      PRIMARY KEY(Spieler_ID),
      INDEX Spieler_FKIndex1(Statistik_ID)
    );
    <- die db

    script:
    <?php
    
     error_reporting(E_ALL);
     
     $message ="";     // ausgabe nachricht (zb fehlermeldungen  noch einbauen)
     $dbname ="";
     $dbuser = "";
     $dbhost = "mysql.lima-city.de";
     $dbpass = "";
     
     //variablen
    if(isset($_POST['submit']))
       { $nickname = $_POST['nickname'];
         $passwort = $_POST['passwort1'];
    	 $passwort2 = $_POST['passwort2'];
    	 $email = $_POST['email'];
    	 $email2 = $_POST['email2'];
    	 
     
    // Passwort vergleich und &Uuml;berpr&uuml;fung leereingabe
    if ($_POST['passwort1'] == "" || $_POST['passwort2'] == "")
      { echo "<p>Du hast in min. einem Feld kein Passwort eingetragen</p>";}; //<--- hier schon mit echo getestet 0 reaktion
        
    	
    if ($_POST['passwort1'] == $_POST['passwort2'])
        {$passwort= $_POST['passwort2'];}
       else {echo "<p>Die beiden Passwörter sind nicht identisch!</p>";};
      
       
    // E-Mail vergleich und &Uuml;berpr&uuml;fung leereingabe   
       
    if ($_POST['email'] == "" || $_POST['email2'] == "")
      echo "<p>Du hast in min. einem Feld keine E-Mail-Adresse eingetragen</p>";
    
    if ($_POST["email"] == $_POST['email2'])
        {$email   = $_POST['email2'];}
        else {$message.= "<p>Die beiden E-Mail-Adressen sind nicht identisch!</p>";};
    
        //Nickname auf Leereingabe &uuml;berpr&uuml;ft
    if ($nickname == "" )
      {$message.= "<P>Du hast keinen Nickname eingetragen!</p>"; };
    
    // Pw verschlüsseln
    $hash = crypt($passwort);
    
    
    // doppel registrierung verhindern + variablen noch ändern   !!!!!!!!!!
     if(empty($_POST['checkID']))
    {
        $_POST["checkID"] = md5(microtime() );
    }
    else
    { 
    if(preg_match('/^[a-f0-9]{32}$/',$_POST['checkID']));
    }
    
    
    //Verbindung mit der Datenbank
    $db = mysql_connect($dbhost,$dbuser,$dbpass)
    or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db($dbname) or die ("Datenbank konnte nicht ausgewählt werden");
     
    // Nickname und Emaildresse abfragen (ob vorhanden)
    //Nickname
    $sql = "SELECT * FROM Spieler WHERE Nickname = $nickname";
    $ergebnis = mysql_query($sql);
    if ($ergebnis == $nickname); 
     else $message="Dein Nickname ist schon vorhanden!";
    
    echo"<p>$ergebnis</p>";
    if ($sql != "")
      $message.="<p>Dein Nickname ist schon vorhanden!</p>";
    
    
    // Emailadresse
    $sql2 = mysql_query("SELECT Spieler.Email FROM spieler WHERE email ='".$email."' ");
    if ($sql2 != "")
      $message.="<p>Dein E-Mail-Adresse ist schon vorhanden!</p>"; 
      
    //agb kontrollkästchen
    //if ($_POST[agb] == "")
    // $message.="<p>Du musst die AGB akzeptieren!";
    
    // db eintragungen
    if ($message ==""){
    mysql_query("INSERT INTO Spieler (Nickname, Passwort, Email) VALUES (' ".$nickname."' , '".$hash."','". $email."' )");
    echo"<p> Der Benutzer wurde angelegt!</p>";}
    else
      echo"<p>Der Benutzer wurde nicht angelegt<p> $message";
    }
    ?>



    kann mir das jemand bitte erklären? wäre echt lieb

    mfg grave

    Beitrag zuletzt geändert: 5.10.2010 21:27:19 von gravedesign
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. demonic-legends

    Kostenloser Webspace von demonic-legends

    demonic-legends hat kostenlosen Webspace.

    Nehm mal schnell deine Datenbank daten aus dem beitrag ;)

    Sonst vergisst du es und später räumt jeder deine Datenbank leer =D

    Beitrag zuletzt geändert: 5.10.2010 21:15:24 von demonic-legends
  4. Autor dieses Themas

    gravedesign

    gravedesign hat kostenlosen Webspace.

    dank dir=) demonic-legends

    mfg grave
  5. // Nickname und Emaildresse abfragen (ob vorhanden)
    //Nickname
    $sql = "SELECT * FROM Spieler WHERE Nickname = $nickname";
    $ergebnis = mysql_query($sql);
    if ($ergebnis == $nickname); 
     else $message="Dein Nickname ist schon vorhanden!";
    
    echo"<p>$ergebnis</p>";
    if ($sql != "")
      $message.="<p>Dein Nickname ist schon vorhanden!</p>";


    Sehr merkwürdige Zeilen sind da drin zu finden. Zum einen:

    if ($ergebnis == $nickname); else $message="Dein Nickname ist schon vorhanden";

    Wenn die Bedingung zutrifft passiert... öhm.. ja was? Außerdem... wie willst du die Variable $nickname mit einer db-Anfrage vergleichen? Wo ist denn ein fetch_array oder fetch_assoc? Sprich es fehlt ein $row = mysql_fetch_array($ergebnis); und daher kann die if-Bedingung nicht zutreffen, ergo immer else-Fall. Du müsstest vergleichen: if($nickname == $row["Nickname"])

    Dann geht es weiter mit:

    if ($sql != "")

    Diese Bedingung kann nur immer zutreffen, da du ja einige Zeilen höher schreibst: $sql = "SELECT * FROM Spieler WHERE Nickname = $nickname"; ergo $sql ist immer ungleich "", da ja $sql mit deinem Query-String definiert ist.

    Deshalb kommen deine beiden Meldungen mit "Dein Nickname ist schon vorhanden".

    if ($message ==""){
    mysql_query("INSERT INTO Spieler (Nickname, Passwort, Email) VALUES (' ".$nickname."' , '".$hash."','". $email."' )");
    echo"<p> Der Benutzer wurde angelegt!</p>";}
    else
      echo"<p>Der Benutzer wurde nicht angelegt<p> $message";


    Die Fehlermeldung, der User sei nicht eingetragen worden stammt von diesem Code, da ja durch die vorherigen Fehler die Variable $message nicht leer ist.

    Zu guterletzt steht in deinem create_table folgendes: Nickname CHAR() NULL,
    Die () hast du bei allen nachfolgenden CHAR's weg gelassen. Ich weiß allerding nicht, ob dies auch eine Fehlerursache ist, zumindest aber ist es merkwürdig.

  6. ole-reglitzki

    Kostenloser Webspace von ole-reglitzki

    ole-reglitzki hat kostenlosen Webspace.

    Außerdem hast du in der Zeile
    $sql = "SELECT * FROM Spieler WHERE Nickname = $nickname";

    den $nickname Teil nicht als Variable, sondern als String.

    Solche Einbindungen würde ich an deiner Stelle sowieso nicht nach deiner Art - variablen in Befehl mit aufnehmen - machen, da du diese Daten vom User bekommst.
    bei PDO heißt der befehl, um dies zu lösen: bindValue(1, $nickname);
    Wie er bei mysql heißt, weiß ich nicht.
  7. Autor dieses Themas

    gravedesign

    gravedesign hat kostenlosen Webspace.

    ich hab es jetzt hinbekommen^^ funktioniert prima

    eine frage hab ich noch und zwar die fehler möchte ich auf der regisrierungsseite erscheinen lassen wenns welche gibt bzw die erfolgsmeldungen wie setzt ich das am einfachsten um?
  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!