MySQL Datenbank füllen - Wo ist der Fehler?

Hey Leute!

Ich möchte gerne das neue User sich über meine HTML/PHP Maske registireren können.
Allerdings schaffe ich es nicht das die Daten auch tatsächlich eingetragen werden in die DB

Das ganze sieht bisjetzt so aus:

Code:
<html>
<head>
<title>anmeldung</title>
<meta name="author" content="sps">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<form action="anmeldung.php">
<b>Username: </b><input type="text" name="name"></input> <br>
<b>Passwort:  &nbsp&nbsp</b><input type="password "name="pwd"></input><br>
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp<input type="submit" method="post" action="anmeldung.php" value="Daten senden"></input>
<?php
if ($name !='' and $pwd !='') {
$connect = mysql_connect ("localhost","root","***")  or die ("Keine VErbindung möglich - Benutzername oder Passwort ist falsch ... vll auch der table?!");
$connect2 = mysql_select_db("user")
or die ("Die Datenbank existiert nicht.");
$insert = INSERT INTO user (name,passwort) 
}
else {
echo "Datenbank nicht erreichbar!";
}
?>
</form></body>
</html>

Die DB heißt übrigens "user" - was klappt da nicht?!

Also wenn mir da jemand helfen könnte - und das könnt ihr ;) - wäre das toll :)
Danke im Vorraus!!

Bye,

Tko?
 
hab jetzt mal die syntaxfehler entfernt...das ganze ist nicht getestet und nur mal so aus dem kopf gecodet
PHP:
<html>
  <head>
    <title>anmeldung</title>
    <meta name="author" content="sps">
  </head>
  <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
    <form action="anmeldung.php" method="post">
      <b>Username: </b><input type="text" name="name"></input> <br>
      <b>Passwort:  &nbsp&nbsp</b><input type="password "name="pwd"></input><br>
      &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp
      <input type="submit" method="post" action="anmeldung.php" value="Daten senden"></input>
<?php
if ( !empty($_POST['name']) AND !empty($_POST['password']) ) {
    $connect  = mysql_connect ("localhost","root","***")  or die ("Keine VErbindung möglich - Benutzername oder Passwort ist falsch ... vll auch der table?!");
    mysql_select_db("user") or die ("Die Datenbank existiert nicht.");
    mysql_query("INSERT INTO user (name,passwort) VALUES ( '".addslashes($_POST['name'])."' , '".addslashes($_POST['passwrod'])."');" );
} 
?>
    </form>
  </body>
</html>
 
Hi,

ersteinmal danke für deine Antwort.
Doch da hab ich noch gleich ein paasr Fragen zu =)!
*Schwups* die erste hat sich nach 3 min. google erledigt ;)
aber hier:

Code:
if ( !empty($_POST['name']) AND !empty($_POST['password'])

das "!empty" ist ein Ersatz für "!=" nehme ich an,warum nicht das kürzere != , geht es denn garnicht anders?
Und muss man unbedingt die globalen Variablen benützen, meine mich zu erinnern das somit das ganze mehr als anfällig für SQL-Injections wird.
Danke,

MfG,

Tko?
 
!empty überprüft, ob die variable leer ist.
!= kannst du nur die Variable mit einem String vergleichen

die Globalen Variablen sind normalerwiese sicherer, und udem unterstützen manche Server nur Globale Variablen.
Gegen SQL-Injection helfen einige passende funktionen vor dem reinschreiben.
 
Original von TeeKayo2

das "!empty" ist ein Ersatz für "!=" nehme ich an,warum nicht das kürzere != , geht es denn garnicht anders?
Und muss man unbedingt die globalen Variablen benützen, meine mich zu erinnern das somit das ganze mehr als anfällig für SQL-Injections wird.
Danke,

MfG,

Tko?

das empty hat 2 vorteile:
1) es ist schneller
2) es ueberprueft, die variable ueberhaupt vorhanden ist (wenn du ohne dies zu ueberpruefen auf diese zugreifst gibts eine NOTICE meldung von php)

"globalen Variablen":
bei deiner variante hast du folgende nachteile:
- RegisterGlobals muss in der php.ini auf on sein
- RegisterGlobals = on kann zu sicherheitsrisiken fuehren

bezueglich SQL-Injections:
dafuer ist das addslashes da....eigentlich muesste man noch schauen ob das ganze bereits mit magic_quote_gpc (oder wie das auch immer heisst) bereits gequotet wird und anhand dieser einstellung quoten odr nicht....dann waere eis eigetnlich erst vollkommen richtig.
ach ja....wenn du die moeglichkeit hast (also php 5.1) benutze doch die pdo klasse fuer eine db connection. dort hast du mit der 'prepare' moegichkeit das SQL-injection erschlagen :)
 
Hi,

Danke für eure Hilfe, das nötigste funktioniert soweit!!
Er schreibt Usernamen und Passwort in die Tabelle *freu*

Code:
<?php
if ($name !='' and $pwd !='') {
$connect = mysql_connect ("localhost","root","***")  or die ("Keine Verbindung möglich - Benutzername oder Passwort ist falsch ... vll auch der table?!");
mysql_select_db("user")or die ("Die Datenbank existiert nicht.");
mysql_query( "INSERT INTO `user` (`user`, `passwort`) VALUES ( '$name', '$pwd')");
echo "Dateneintrag war erfolgreich!";
}
else
{
echo "Irgendwo ist hier der Haken...";
}
?>
Musste da sganze n bisschen abändern damits geht aber das ja normal, das mit den Globasl werd ich mir aufjedenfall nochmal genauer anschauen,ich sage danke und wünsch noch einen angenehmen Tag!

MfG,

Tko?
 
@soox
das ist so nicht ganz korrekt...
wenn du addslashs beim eintragen in die db machst, schreibt er es dir so in die db richtig wäre es wenn man vorher prüft ob diverse unerlaubte zeichen sind und dazu eine fehler ausgabe macht... weil sonst haste ein paar spezis die ihr passwörter besonders geschützt machen wollen mit zeichen wie: ' " * // /*
und schon steht in der db z.b. pass\'wort und das weiss der user nicht der sich angemeldet hat.
also vorher prüfen oder im nachhinein per email oder direkt ausgeben bzw. bestätigung der daten die er eintragen möchte (im klartext) und dann nach der bestätigung erfolgt der eintrag...


ich hoffe es ist verständlich was ich damit meinte ? ;)
 
Original von Oi!Alex
wenn man vorher prüft ob diverse unerlaubte zeichen sind und dazu eine fehler ausgabe macht...

ich hoffe es ist verständlich was ich damit meinte ? ;)

warum sollte ich eine fehler ausgabe machen? da ist ja nirgends einen fehler....oder meinst du nur weil da ein paar asci zeichen drin sind?
mit addslash ( da gibts auch was db abhaengiges, welches nur die entsprechend benoetigten zeichen quotet) quote ich ja genau diese zeichen und in der query werden sie somit als daten behandelt.
das problem, dass da komische pw's in der db landet (also solche die bereits gequotet worden sind) kommt vor, sofern magic_quote_gpc eingeschaltet ist und man zusaetzlich mit addslashes noch einmal quotet --> man muss da halt ueberpruefen

hoffe ich hab das jetzt richtig verstanden und eine entsprechende antwort gegeben....ansonsten bitte nochmals genauer beschreiben?
 
*lach* du hast vollkommen recht gehabt! war ein denkfehler von mir sorry

irgend wie hatte ich gedacht das addslash den string verändert also mit \ vor bestimmten zeichen, was es auch tut, und dann so in die db einträgt so das dann in der db "pass\'word" drin steht
 
Zurück
Oben