In Mysql Datenbank schreiben
Hallo Alle Zusammen!
Ich möchte von einer HTML-Seite aus über ein Formular in eine MySql-Datenbank schreiben, es soll eine Art Anmeldeformular für eine Passwort abfrage werden! aber was ist hier falsch?
<html>
<head>
<meta http-equiv="Content-Language" content="de">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Login</title>
</head>
<body>
<form>
Vorname:<input action="schreibn.php" name="vorname" type="text" method="post"><br>
Nachname:<input action="schreibn.php" name="nachname" type="text" method="post"><br>
Username:<input action="schreibn.php" name="username" type="text" method="post"><br>
Passwort:<input action="schreibn.php" name="passwort" type="password" method="post"><br>
E-mail:<input action="schreibn.php" name="email" type="text" method="post"><br>
<input type="submit" name="abschicken">
</form>
<?php
// login.php
//
// Die MySQL-Datenbank heißt in diesem Beispiel "beispiele",
// die Tabelle heißt "users" und hat die Spaltennamen "user"
// und "pw". Das Passwort steht als md5-Hash in der Datenbank
//
// ********************************************************
// Hier den Hostnamen, User und Passwort eingeben
// ********************************************************
$sql = mysql_connect("xxxxxxxxx", "xxxxxx", "xxxxxxx") or
die ("MySQL-Fehler: Verbindung zum Datenbankserver fehlgeschlagen!");
// ********************************************************
// Hier den Namen der Datenbank eingeben
// ********************************************************
mysql_select_db("xxxxxxxxxxxx") or
die ("MySQL-Fehler: Datenbank nicht gefunden");
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$username = $_POST["username"];
$passwort = $_POST["passwort"];
$email = $_POST["email"];
$eintrag = "INSERT INTO links (user, pw, vorname,
nachname, email) VALUES ('$vorname', '$nachname',
'$username', '$passwort','$email')";
$eintragen = mysql_query($eintrag);
?>
</body>
</html>
die schreibn php:
<?
// login.php
//
// Die MySQL-Datenbank heißt in diesem Beispiel "beispiele",
// die Tabelle heißt "users" und hat die Spaltennamen "user"
// und "pw". Das Passwort steht als md5-Hash in der Datenbank
//
// ********************************************************
// Hier den Hostnamen, User und Passwort eingeben
// ********************************************************
$sql = mysql_connect("******", "****", "****") or
die ("MySQL-Fehler: Verbindung zum Datenbankserver fehlgeschlagen!");
// ********************************************************
// Hier den Namen der Datenbank eingeben
// ********************************************************
mysql_select_db("****") or
die ("MySQL-Fehler: Datenbank nicht gefunden");
$vorname = $_GET["vorname"];
$nachname = $_GET["nachname"];
$username = $_GET["username"];
$passwort = $_GET["passwort"];
$email = $_GET["email"];
$eintrag = "INSERT INTO links (user, pw, vorname,
nachname, email) VALUES ('$vorname', '$nachname',
'$username', '$passwort','$email')";
$eintragen = mysql_query($eintrag);
?>
Antwort schreiben
Antwort 1 von TByte vom 11.05.2020, 19:20 Options
Ich hab mir nur dein HTML angesehen. Villeicht liege ich falsch. Aber kommt action="schreibn.php" nicht in das Form tag?
mfg
TByte
PS.:Steig um auf Perl/CGI, mit dem passendem Modul geht alles.
Antwort 2 von katy vom 12.05.2020, 07:35 Options
Hallo schojo,
TByte liegt richtig, du schickst das Formular nie ab, da das dazu nötige action-Attribut im Formular fehlt. In den input-Elementen hat es dagegen nichts zu suchen.
Was der PHP-Teil in der HTML-Seite soll ist mir schleierhaft, denn der wird nie ausgeführt. Du hast ja nicht vor, die Seite selbst über action aufzurufen, oder? POST ist schon der richtige Übertragungsweg für Passwörter und anderes sensibles, aber wieso fragst du in schreibn.php dann GET ab?
katy
Antwort 3 von schojo vom 12.05.2020, 12:06 Options
Vielen Dank , für die raschen Antworten! aber dumme frage: wie führ ich es denn aus?
Antwort 4 von katy vom 12.05.2020, 12:31 Options
Hallo schojo,
ich weiß, es ist eine dumme Antwort auf eine dumme Frage, aber: Was meinst du?
katy
Antwort 5 von schojo vom 12.05.2020, 13:15 Options
Hallo!
also: mein Problem ist, dass ich die Variablen nicht in mein php skript bekomme! kann ich das nicht auch nur mit einem Skript machen? und wie führe ich dann die aktion aus, dass die Daten an meine DB übertragen werden!?
Antwort 6 von schojo vom 12.05.2020, 14:34 Options
nochmal hallo^^ also ich hab jetzt die sache a bissl vereinfacht mit nur 3 feldern in der db und da hab ich jez folgenen skript gebastelt:
<html><head></head><body>
<form method="get">
Vorname:<input name="vorname" type="text"><br>
<input type="submit" name="abschicken">
</form>
<?
// login.php
//
// Die MySQL-Datenbank heißt in diesem Beispiel "beispiele",
// die Tabelle heißt "users" und hat die Spaltennamen "user"
// und "pw". Das Passwort steht als md5-Hash in der Datenbank
// ********************************************************
// Hier den Hostnamen, User und Passwort eingeben
// ********************************************************
$sql = mysql_connect("xxxxxxxx", "xxxx", "xxxxxxx") or
die ("MySQL-Fehler: Verbindung zum Datenbankserver fehlgeschlagen!");
// ********************************************************
// Hier den Namen der Datenbank eingeben
// ********************************************************
mysql_select_db("xxxxxxxxx") or
die ("MySQL-Fehler: Datenbank nicht gefunden");
$vorname = $_GET["vorname"];
echo ( $vorname )
$eintrag = INSERT INTO testdatenbank VALUES;
($vorname, 'test', 'datum');
$eintragen = mysql_query($eintrag);
?>
</body>
</html>
aber jetzt hab ich ne fehlermeldung und weiß leider ned was des bedeutet:
Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in /usr/export/www/vhosts/funnetwork/hosting/schojo/test.html on line 25
Vielleicht weiß ja jemand weiter........schönen feiertag
Antwort 7 von TByte vom 12.05.2020, 16:13 Options
Versuchs doch mal mit Perl, das kannst du leicht erlernen, weil es in der Syntax PHP sehr ähnelt. Nur dass es viel leistungsstärker ist - und - dass du auch deine Seite per action selbst aufrufen kannst. In eine MySQL Datenbank lässt sich auch schreiben, da musst du nur das passende Modul finden. (Ich schick dir den Link, wenn ich ih gefunden hab). Ausserdem kannst du sogar vom Code aus Graphiken basteln, per GD. Das schöne an Perl ist auch, dass du überhaupt kein MySQL brauchst, denn Perl schreibt und liest auch deine eigenen Dateien. So kannst du auch noch kosten bei deinem Provider sparen, weil du nur noch CGIs brauchst.
Also, lass es dir mal durch den Kopf gehen, denn im großn und ganzen ist Perl leistungsstärker (und lässt sich auch als nicht CGI ausführen.)
mfg
TByte
Antwort 8 von katy vom 12.05.2020, 17:44 Options
Hallo TByte
perl hat mit dem Problem nichts zu tun. Wenn du nichts dazu beitragen willst als immer wieder Perl anzupreisen wäre Schweigen besser.
Hallo schojo
prinzipiel läuft das so ab:
im Formular auf einer HTML-Seite steht
<form action="ziel.php" method="post"> (oder method="get")
...
(input- und sonstwas-Elemente)
...
</form>
Der Browser schickt die eingegebenen Daten per POST/GET an den Server und zwar direkt an das Script "ziel.php"
Dort werden sie verarbeitet.
Also handelt es sich immer um 2 Dateien:
1 * HTML mit Formular
1 * PHP zur Verarbeitung
Es gibt nun den Sonderfall, dass manche Menschen alles in eine Datei schreiben. Wenn die aufgerufen wird wird beim Starten untersucht, ob schon POST/GET-Daten da sind. Falls nein wird der HTML-Teil an den Browser geschickt, falls ja wird der PHP-Verarbeitungs-Teil abgearbeitet und erst einmal nix an den Browser geschickt.
Wie du schon erkennst muss dazu der PHP-Teil vor dem HTML-Teil liegen, denn nur der PHP-Teil kann ja entscheiden ob POST/GET-Daten vorliegen.
So wie bei dir macht das keinen Sinn.
Wird's nun klarer?
katy
Antwort 9 von TByte vom 12.05.2020, 22:58 Options
trotzdem, perl find ich besser...
---
Aber mir fällt auf, jedes gute LogIn programm sollte erstmal per JS chekcken, ob überhaupt was abgeschickt wird, und wenn das Feld leer ist, dann das abschicken verhindern und den Benutzer darauf aufmerksam machen sollte.
Also, hier:
function check() {
if (document.formular.eingabe.value="") {
alert("Ungültier Name/E-Mail!");
return 0;
}
Und dann:
<form action="ziel.php" name="formular" id="formular">
<input type="text" name="eingabe" id="eingabe">
<input type="submit" onclick="check()">
</form>
Aber das nur nebenbei.
mfg
TByte
Antwort 10 von katy vom 13.05.2020, 08:26 Options
Hallo TByte,
auch JavaScript hat mit dem Problem nix zu tun. Willst du hier nur verwirren? Außerdem hat dein Script deutliche Mängel, aber darauf möchte ich jetzt nicht eingehen.
katy
Antwort 11 von TByte vom 13.05.2020, 12:56 Options
DOCH, das hat was mit dem Problem zutun. Wenn er nicht will, dass sein Skript andauernd von irgendwelchen Spinnern mit leeren Antworten belastet wird, dann soll das hier auch noch rein, ansonsten lautet sein nächster Thread "Kennt jemand ein JS, damit ich leereinsendungen für mein PHP verhindern kann?".
mfg
TByte
Antwort 12 von schojo vom 13.05.2020, 13:49 Options
ähmm also sorry aber ich muss katy recht geben, die leute, die des benutzen sollen, die machen des 1mal in ihrem leben => egal
Antwort 13 von katy vom 13.05.2020, 14:04 Options
Hallo TByte,
eins nach dem anderen. Momentan bekommt schojo gar keine Daten. Wenn er denn je sein Script zum Laufen bekommt, kann er sicherlich noch an der Optimierung arbeiten.
Und JavaScript ist niemals ein Mittel um falsche oder unerwünschte oder fehlende Antworten auszufiltern, denn JavaScript kann - wie du sicherlich weißt oder zumindest wissen solltest - umgangen werden. Es ist immer nur zusätzlich. Die Prüfung muss immer auf dem Server erfolgen.
Und daher ist JavaScript bei diesem Arbeitsstand absolut irrelevant.
katy
Antwort 14 von schojo vom 13.05.2020, 14:08 Options
wie gesagt, sicher musses ned sein, weil damit arbeiten circa 3 Persone offline^^
Antwort 15 von katy vom 13.05.2020, 14:12 Options
Hallo schojo,
wie ist denn der Stand deiner Arbeit? Hast du denn indessen mal HTML und PHP in 2 Dateien verteilt?
katy
Antwort 16 von schojo vom 13.05.2020, 14:20 Options
jawohl hab ich, funktioniert aber immer noch nicht^^
des is die HTML
<html><head></head><body>
<form method="post" action="schreibn.php">
<center><table border="0">
<tr>
<td>Vorname:</td>
<td><input name="vorname" type="text"></td>
</tr>
<tr>
<td>Nachname:</td>
<td><input name="nachname" type="text"></td>
</tr>
<tr>
<td>Nickname:</td>
<td><input name="nachname" type="text"></td>
</tr>
<tr>
<td>Passwort:</td>
<td><input name="passwort" type="text"></td>
</tr>
<tr>
<td>Email:</td>
<td><input name="email" type="text"></td>
</tr>
</table>
<input type="submit" name="SENDEN">
</form></center>
</body>
</html>
und dann die php :
<?
$sql = mysql_connect("localhost", "xxxxxxx", "slk77amg") or
die ("MySQL-Fehler: Verbindung zum Datenbankserver fehlgeschlagen!");
mysql_select_db("schojo_01") or
die ("MySQL-Fehler: Datenbank nicht gefunden");
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$username = $_POST["username"];
$passwort = $_POST["passwort"];
$email = $_POST["email"];
$eintrag = "INSERT INTO anmeldung (vorname, nachname, username, passwort, email) VALUES ('$vorname', '$nachname','$username', '$pw', '$email')";
$eintragen = mysql_query($eintrag);
?>
aber was mein Problem immer noch ist, wie führe ich die INSERT INTO aus?
LIEBEN DANK
Antwort 17 von Tumulus vom 13.05.2020, 22:11 Options
hallo,
dir fehlt noch der ausführungsbefehl !
nämlich:
$ausführen = mysql_exec($eintragen)
ich habe nämlich das gleiche problem. auch ich bastle an einer html-site, die über php eine sql-db befüllen sollte. ich habs allerdings auch noch nicht geschafft....