Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

MySQL Datenbank füllen - Wo ist der Fehler?

Diskussion: MySQL Datenbank füllen - Wo ist der Fehler? im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hey Leute! Ich möchte gerne das neue User sich über meine HTML/PHP Maske registireren können. Allerdings schaffe ich es ...

Antwort
Alt 13.01.06, 19:42   #1 (permalink)
 
Registriert seit: 12.10.05
TeeKayo2 Leistung: Facit NTK
Likes: 0
MySQL Datenbank füllen - Wo ist der Fehler?

Anzeige

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?
TeeKayo2 ist offline   Mit Zitat antworten
Alt 13.01.06, 19:52   #2 (permalink)
Moderator
 
Registriert seit: 17.10.01
soox Leistung: Facit NTK
Likes: 0
Standard

hab jetzt mal die syntaxfehler entfernt...das ganze ist nicht getestet und nur mal so aus dem kopf gecodet
PHP-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" 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>
soox ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 14.01.06, 09:45   #3 (permalink)
Themenstarter
 
Registriert seit: 12.10.05
TeeKayo2 Leistung: Facit NTK
Likes: 0
Standard

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?
TeeKayo2 ist offline   Mit Zitat antworten
Alt 14.01.06, 12:23   #4 (permalink)
 
Registriert seit: 22.05.05
Ranger Leistung: Facit NTK
Likes: 0
Standard

!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.
Ranger ist offline   Mit Zitat antworten
Alt 14.01.06, 12:27   #5 (permalink)
Moderator
 
Registriert seit: 17.10.01
soox Leistung: Facit NTK
Likes: 0
Standard

Zitat:
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
soox ist offline   Mit Zitat antworten
Alt 14.01.06, 18:05   #6 (permalink)
Themenstarter
 
Registriert seit: 12.10.05
TeeKayo2 Leistung: Facit NTK
Likes: 0
Standard

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?
TeeKayo2 ist offline   Mit Zitat antworten
Alt 20.01.06, 09:41   #7 (permalink)
 
Registriert seit: 17.01.06
Oi!Alex Leistung: 8086
Likes: 7
Standard

@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 ?
Oi!Alex ist offline   Mit Zitat antworten
Alt 20.01.06, 20:21   #8 (permalink)
Moderator
 
Registriert seit: 17.10.01
soox Leistung: Facit NTK
Likes: 0
Standard

Zitat:
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?
soox ist offline   Mit Zitat antworten
Alt 21.01.06, 08:55   #9 (permalink)
 
Registriert seit: 17.01.06
Oi!Alex Leistung: 8086
Likes: 7
Standard

*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
Oi!Alex ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » MySQL Datenbank füllen - Wo ist der Fehler?
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
der Postfix Mailserver + MySQL Datenbank... keksinat0r Internet Allgemein 39 26.03.07 22:48
FTP-kennungen aus mysql-datenbank flame Linux/UNIX 3 10.09.05 08:37
Daten in mySQL Datenbank speichern sfil Code Kitchen 5 30.08.04 21:34
MYSQL Datenbank auslesen/hacken MayDay (In)security allgemein 8 03.05.04 16:37
Datenbank mit unbestimmter Anzahl Daten füllen... ph0x (Web-) Design und webbasierte Sprachen 8 16.05.02 08:38


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61