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

Was für ein Fehler ist in meinem Code ?

Hansii

Mitglied
Hallo.

Bekomme folgenden Fehler : http://www.info-bundesliga.de/registrieren.html

Da steht in der 20.ten Zeile. Was is denn da falsch ?

PHP:
<?php

$verbindung = mysql_connect("  Localhost  ", " Benutzername ", "Passwort")  
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("Datenbank") or die ("Datenbank konnte nicht ausgewählt werden");

$anrede = $_POST["anrede"];
$vorname = $_POST["vorname"];
$name = $_POST["name"];
$geburtstag = $_POST["geburtstag"];
$email = $_POST["email"];
$username = $_POST["username"];
$passwort = $_POST["passwort"];
$passwort2 = $_POST["passwort2"];
$einverstanden = $_POST["einverstanden"];

if($passwort != $passwort2 OR $username == "" OR $passwort == "")
  {
  echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href="registrieren.html">Zurück.</a>";
  exit;
  }
$passwort = md5($passwort);

$result = mysql_query("SELECT id FROM login WHERE username LIKE '$username'");
$menge = mysql_num_rows($result);

if($menge == 0)
  {
  $eintrag = "INSERT INTO Tabelle (anrede, vorname, name, geburtstag, email, username, passwort, einverstanden) VALUES ('$anrede', '$vorname', '$name', '$geburtstag', '$email', '$username', '$passwort', '$einverstanden')";
  $eintragen = mysql_query($eintrag);

  if($eintragen == true)
    {
    echo "Benutzername <b>$username</b> wurde erstellt. <a href="login.html">Login.</a>";
    }
  else
    {
    echo "Fehler beim Speichern des Benutzernamens. <a href="registrieren.html">Zurück.</a>";
    }

  }

else
  {
  echo "Benutzername schon vorhanden. <a href="registrieren.html">Zurück.</a>";
  }
?>



HTML:
<form action="registrieren.php" method="POST">
   Anrede<br>
   <select name="anrede">
    <option>Herr</option>
    <option>Frau</option>
   </select><br><br>
   Vorname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name<br>
   <input type="text" name="vorname" size="30" maxlength="30">
   <input type="text" name="name" size="30" maxlength="30"><br><br>
   Geburtstag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E-Mail<br>
   <input type="text" name="geburtstag" size="30" maxlength="30">
   <input type="email" name="email" size="30" maxlength="40"><br><br>
   Benutzername<br>
   <input type="text" name="username" size="30" maxlength="20"><br><br>
   Passwort&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Passwort wiederholen<br>
   <input type="password" name="passwort" size="30" maxlength="20">
   <input type="password" name="passwort2" size="30" maxlength="20"><br><br>
   <input type="checkbox" name="einverstanden">
   Hiermit erkläre ich mich Einverstanden mit den Nutzungsbedingungen, den AGB und dem Datenschutz.<br><br>
   <input type="submit" value="Registrieren">
  </form>

Danke für eure Hilfe. Ich finde in Zeile 20 keinen Fehler
 
Hey,

PHP:
  echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href="registrieren.html">Zurück.</a>";

Guck nochmal genauer auf das Syntax-Highlighting!
Mit " beendest du das Echo.
Versuch mal folgendes
PHP:
  echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"registrieren.html\">Zurück.</a>";
oder
PHP:
  echo 'Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href="registrieren.html">Zurück.</a>';

Und was machen die ganzen &nbsp; da? Das geht schöner und dynamischer!
 
Die beiden Links werde ich mir mal anschauen.

@bdt600 : Ist das schlimm, wenn man die Daten direkt an die DB sendet ?
@Trüffelkrieger : Ich habe nichts gegen CSS. Habe nur gedacht, dass es auch ohne CSS und ohne &nbsp; geht.

Trotzdem habe ich noch einen Fehlercode : Wenn man das Formular abschickt, kommt folgendes :

http://www.info-bundesliga.de/registrieren.html

Die Daten kommen aber an.
 
@bdt600 : Ist das schlimm, wenn man die Daten direkt an die DB sendet ?
Ich habe dir doch schon das entsprechende Stichwort geschrieben: SQL-Injections
Trotzdem habe ich noch einen Fehlercode : Wenn man das Formular abschickt, kommt folgendes :
Dann hast du noch einen Fehler im Script. Aber was sollen wir dazu sagen? Wir kennen dein aktuelles Script nicht.

Nachtrag: man kann in jedem Feld nur a eingeben und bei der Mail-Adresse a@de und es wird alles akzeptiert. Nicht gut, oder?
 
@bdt600 : Die Felder werden ja noch bearbeitet. Logisch ! Die bekommen bestimmte Zeichenlängen usw.... ! Die SQL Injections schaue ich mir jetzt mal an.
 
Ok. Das mit den SQL-Injections werde ich ändern. Vorher noch eine Frage : Was ist da jetzt der Fehler ? Habe überprüft, aber da fehlt nichts (kein " ' usw.).

Fehlercode : Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /mnt/webi/e0/81/53393381/htdocs/registrieren.php on line 26

PHP CODE :


PHP:
<?php

$verbindung = mysql_connect("Localhost", "Benutzername", "Passwort")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("Datenbank") or die ("Datenbank konnte nicht ausgewählt werden");

$anrede = $_POST["anrede"];
$vorname = $_POST["vorname"];
$name = $_POST["name"];
$geburtstag = $_POST["geburtstag"];
$email = $_POST["email"];
$username = $_POST["username"];
$passwort = $_POST["passwort"];
$passwort2 = $_POST["passwort2"];
$einverstanden = $_POST["einverstanden"];

if($passwort != $passwort2 OR $username == "" OR $passwort == "")
  {
  echo 'Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href="registrieren.html">Zurück.</a>';
  exit;
  }
$passwort = md5($passwort);

$result = mysql_query("SELECT id FROM login WHERE username LIKE '$username'");
$menge = mysql_num_rows($result);

if($menge == 0)
  {
  $eintrag = "INSERT INTO Tabelle (anrede, vorname, name, geburtstag, email, username, passwort, einverstanden) VALUES ('$anrede', '$vorname', '$name', '$geburtstag', '$email', '$username', '$passwort', '$einverstanden')";
  $eintragen = mysql_query($eintrag);

  if($eintragen == true)
    {
    echo 'Benutzername <b>"$username"</b> wurde erstellt. <a href="login.html">Login.</a>';
    }
  else
    {
    echo 'Fehler beim Speichern des Benutzernamens. <a href="registrieren.html">Zurück.</a>';
    }

  }

else
  {
  echo 'Benutzername schon vorhanden. <a href="registrieren.html">Zurück.</a>';
  }
?>

Danke
 
Wenn das Query in die Hose geht, dann bekommst Du keine Resource zurückgeliefert, sondern FALSE. Überprüfe das SQL-Statement.
 
Sorry. Mit PHP kenne ich mich derweil etwas besser aus, da ich heute mehrere Tutorials erarbeitet habe, wo die Grundlagen erklärt sind, allerdings nicht mit MySQL.


Mit dem Code

PHP:
$result = mysql_query("SELECT id FROM login WHERE username LIKE '$username'");

wird ja überprüft, ob der Benutzername schon vorhanden ist. Also fehlt was, was er tun soll, wenn der Benutzername schon da ist. Versteh ich das richtig ? Wenn ja, kann ich dass wieder mit einer if bzw. else Bedingung machen ?
 
PHP:
$result = mysql_query("SELECT id FROM login WHERE username LIKE '$username'")
   or die ("MySQL-Error: " . mysql_error());
 
Zurück
Oben