Formular mit SQL Eintrag

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

fox1989

Neues Mitglied
20 Mai 2021
6
0
1
32
Hallo miteinander,

Ich versuch seit letzter Woche eine Webseite zu programmieren, hab mich auch echt gut durchgekämpft bisher.

Aber an einem Code scheitere ich nun wirklich, vielleicht kann mir jemand sagen wo der Fehler ist. Oder ob das so gar nicht funkitoniert.

Ziel: Neuer Datensatz in SQL Tabelle eintragen

Code:
<!DOCTYPE html><html lang="de"><head>

<meta charset="UTF-8">

<title>Kunde hinzufügen</title>



</head><body>



<h1>Neuen Kunden hinzufügen</h1>



<form action="<?php

if(isset($_POST["Kunden hinzufügen"])){



//Verbindung zur Datenbank herstellen

$host_name = 'rdbms.strato.de';

$user_name = 'XX';

$password = 'XX';

$database = 'XX';

$connect = mysqli_connect($host_name, $user_name, $password, $database);

mysqli_query($connect, "SET NAMES 'utf8'");



//Nutzereingabe in Variablen speichern

$ID = $_POST["ID"];

$username = $_POST["Username"];

$Paypal = $_POST["Paypal"];

$Profil = $_POST["Profil"];







// String für SQL-Anweisung erstellen

$insertString = " INSERT INTO `customers`( `Username`, `Paypal`, `Profil`) VALUES ([$username ],[ $paypal],[ $Profil])

";



// SQL-Anweisung durchführen

$check = mysqli_query($connect, $insertString);



if($check) {

echo "Ein neuer Datensatz erfolgreich hinzugefügt";

}}

?>

" method="post">

<p><input name="Username"> Username</p>

<p><input name="Paypal"> Paypal</p>

<p><input name="Profil"> Profil Link</p>



<p><input type="submit" name="Kundehinzufügen" value="Kunde hinzufügen"> <input type="reset"></p>



</form>



<a href="LINK KUNDENDATEN">Zurück zur Übersicht</a>



</body></html>
 

tk1234

Aktives Mitglied
2 September 2020
133
28
28
Aber an einem Code scheitere ich nun wirklich, vielleicht kann mir jemand sagen wo der Fehler ist. Oder ob das so gar nicht funkitoniert.
"funktioniert nicht" ist keine Fehlerbeschreibung. Was passiert wenn du die Seite im Browser aufrufst? Fehlermeldung? Ggf. musst du die Datenbank nach einer Fehlermeldung fragen, von alleine ist die oft nicht besonders gesprächig.

Und Code bitte hier auch als Code einfügen, nicht als Zitat - das macht die Sache gleich besser lesbar.
PHP:
<form action="<?php
if(isset($_POST["Kunden hinzufügen"])){
Warum setzt du den PHP-Code als Wert des action-Attributes? Beschäftige dich mit dem Thema EVA-Prinzip. Außerdem musst du das action-Attribut ganz weglassen wenn du auf die gleiche Seite verweisen willst (es darf nicht leer sein).
PHP:
$Profil = $_POST["Profil"];
// […]
$insertString = " INSERT INTO `customers`( `Username`, `Paypal`, `Profil`)
    VALUES ([$username ],[ $paypal],[ $Profil])";
Mach. Das. Nicht. Das was du da machst ist gefährlich, du musst unbedingt den Kontextwechsel behandeln - so hast du eine dicke SQL-Injection-Lücke! Ich würde dir empfehlen prepared Statements zu verwenden und auf PDO umzusteigen (PDO kennt benannte Parameter, das ist übersichtlicher als wenn man unter mysqli mit prepared Statements arbeitet).
Zudem ist der Syntax des INSERT-Querys falsch, wo hast du das mit den eckigen Klammern her?

HTML:
<p><input name="Profil"> Profil Link</p>
<p><input type="submit" name="Kundehinzufügen" value="Kunde hinzufügen"> <input type="reset"></p>
Dein Formular ist kaputt: die Eingabefelder haben keine Beschriftung, verwende label-Elemente. Den reset-Button kannst du ersatzlos streichen, der ist für den Besucher nur ärgerlich wenn er da versehentlich draufklickt (wenn man ein Formular nicht abschicken will kann man auch einfach die Seite verlassen).
Der Button zum Abschicken wäre gerne ein richtiger <button>, das vereinfacht das Arbeiten mit dessen name/value-Paar (beim <button> ist das value-Attribut nicht die Beschriftung des Buttons. Übrigens, du fragst im PHP-Code nach dem falschen Element in $_POST um zu prüfen ob das Formular abgeschickt wurde: der Key des Elements ist der Wert des name-Attributs, schau dir einfach mal an was in $_POST steht (var_dump() bzw. print_r() hilft dir dabei).
 

fox1989

Neues Mitglied
20 Mai 2021
6
0
1
32
:oops: Danke erstmal für deine Antwort, ich muss erstmal einige deiner Begriffe googlen und werde dann hoffentlich darauf antworten anständig antworten zu können :D

Das mit den eckigen Klammern hab ich mir aus meiner Datenbank kopiert weil ich dachte ich könnte es mir einfach machen, vorher hatte ich die nicht, dachte vielleicht liegt es daran.

Gibt es einen Weg das zu umgehen das ich diesen Code selbstschreiben muss? Also ein Plugin wo das Formular auch in meine Eigene Datenbank einträgt? Hab es mit Ninja Form probiert, aber der trägt ja in die Wordpress Datenbank ein. Ich les seit Tagen zig Beiträgen dazu, wo Leute Codes posten. Ich hab so viele schon ausprobiert und abgeändert aber keiner hat meine gewünschte Funktion erfüllt.

Also aktuell passiert mit dem Code eigentlich nichts. Wenn ich unten auf Absenden klicke dann lädt die Seite wie neu und es passiert nichts.


Edit: Meine Codes kopiere ich mir diversen Seiten zusammen und pass sie etwas an. Ich hab keine Ahnung von PHP :D Ich hab mir die letzten Tage einfach Zeug zusammen gelesen.
 

fox1989

Neues Mitglied
20 Mai 2021
6
0
1
32
Warum setzt du den PHP-Code als Wert des action-Attributes? Beschäftige dich mit dem Thema EVA-Prinzip. Außerdem musst du das action-Attribut ganz weglassen wenn du auf die gleiche Seite verweisen willst (es darf nicht leer sein).
Meine erste vorgehensweise war mit einer insertcustom.php zu arbeiten - ich hab page.php kopiert und dort meinen PHP Code eingefügt und auf der Seite ein HTML Formular mit verweis auf die php Datei eingefügt.

Die hab ich hoch geladen unter Content bzw Theme (hab beides versucht)

Sorry ich bin echt blutiger anfänger - jedenfalls kam nach klick auf mein Formular einfach nur das die Seite nicht gefunden wurde. Ich nehm an mein Pfad war falsch.

Ich hab so viel gelesen und irgendwie weiss ich gar nicht mehr richtig wie ich weiter kommen soll damit. Deswegen dachte ich, ich schreib den Code halt direkt als Action
 

tk1234

Aktives Mitglied
2 September 2020
133
28
28
Gibt es einen Weg das zu umgehen das ich diesen Code selbstschreiben muss? Also ein Plugin wo das Formular auch in meine Eigene Datenbank einträgt?
Ein Plugin für welches System? Plugins kann es nur für Software - wie z.B. das von dir genannte Wordpress - geben, wie soll das für eine selbst geschriebene Software funktionieren? Und nein, einfach irgendwelche Codeschnipsel zusammenzukopieren und zu hoffen dass das funktioniert wird nicht gehen - du musst schon verstehen was du da machst, sonst kommst du auf keinen grünen Zweig und baust womöglich noch gravierende Sicherheitslücken (wie im Code oben zu sehen). Die Alternative wäre natürlich dass du dir jemanden suchst der dir das gegen Bezahlung schreibt.
 

fox1989

Neues Mitglied
20 Mai 2021
6
0
1
32
Ein Plugin für welches System? Plugins kann es nur für Software - wie z.B. das von dir genannte Wordpress - geben, wie soll das für eine selbst geschriebene Software funktionieren? Und nein, einfach irgendwelche Codeschnipsel zusammenzukopieren und zu hoffen dass das funktioniert wird nicht gehen - du musst schon verstehen was du da machst, sonst kommst du auf keinen grünen Zweig und baust womöglich noch gravierende Sicherheitslücken (wie im Code oben zu sehen). Die Alternative wäre natürlich dass du dir jemanden suchst der dir das gegen Bezahlung schreibt.
Ja Plugin für Wordpress wo ich auswählen kann was ich im Formular eintragen will und die Anbindung an die Datenbank leichter ist. Ich les mich jetzt mal in PDO ein. Ja ich weiss ich könnte jemand beauftragen, aber das geht mir nun ein bisschen gegens Ego :D ich bin seit Tagen dran, ich will nun selbst damit fertig werden. Die Gefahr der Sicherheitslücke ist zum Glück nicht so krass weil die Eingabe nur für eingeloggte User gehen wird - falls ich den Code jemals korrekt finde - und neben mir nur eine weitere Person einen User bekommt.
 

tk1234

Aktives Mitglied
2 September 2020
133
28
28
Ich hab so viel gelesen und irgendwie weiss ich gar nicht mehr richtig wie ich weiter kommen soll damit. Deswegen dachte ich, ich schreib den Code halt direkt als Action
So funktioniert das nicht. PHP läuft auf dem Server, HTML im Browser - du kannst also keinen Code direkt als Action setzen. Beschäftige dich als allererstes damit wie PHP grundsätzlich funktioniert und lass die Datenbank erstmal außen vor. Hilfreich sollte auch das Thema Affenformulare (->Suchmaschine) sein, was du mit insertcustoms.php bzw. page.php meinst weiß ich nicht so recht.

Und was meinst du mit "hoch geladen unter Content bzw Theme"? Verwendest du Wordpress? Dann bin ich raus, davon habe ich keine Ahnung (in dem Fall wäre auch ein Wordpress-Forum die bessere Anlaufstelle).
 

tk1234

Aktives Mitglied
2 September 2020
133
28
28
Die Gefahr der Sicherheitslücke ist zum Glück nicht so krass weil die Eingabe nur für eingeloggte User gehen wird - falls ich den Code jemals korrekt finde - und neben mir nur eine weitere Person einen User bekommt.
Das ist ein gefährlicher Irrglaube! Kontextwechsel müssen immer korrekt behandelt werden (das behebt in dem Fall ja die Sicherheitslücke), auch wenn der Code aktuell(!) nur für einzelne Personen zugänglich ist. Die gefährlichsten Angriffe kommen von innen, zudem muss ja noch nichtmal Vorsatz vorliegen, es kann ja auch durchaus sein dass der User versehentlich etwas kaputt macht da er z.B. was eingegeben hat mit dem du nicht gerechnet hast.
 

fox1989

Neues Mitglied
20 Mai 2021
6
0
1
32
So funktioniert das nicht. PHP läuft auf dem Server, HTML im Browser - du kannst also keinen Code direkt als Action setzen. Beschäftige dich als allererstes damit wie PHP grundsätzlich funktioniert und lass die Datenbank erstmal außen vor. Hilfreich sollte auch das Thema Affenformulare (->Suchmaschine) sein, was du mit insertcustoms.php bzw. page.php meinst weiß ich nicht so recht.

Und was meinst du mit "hoch geladen unter Content bzw Theme"? Verwendest du Wordpress? Dann bin ich raus, davon habe ich keine Ahnung (in dem Fall wäre auch ein Wordpress-Forum die bessere Anlaufstelle).
Ich hab ein Tutorial für diese Formular Sache gelesen.

Dort wurde ein HTML Code für ein Formular erklärt der auf eine search.php verweist.

Das wollte ich versuchen. Ich hatte das Formular via html auf der Seite. Aber wenn ich senden geklickt habe, hat es die .php datei nicht gefunden. Die hatte ich in Content geladen. Ja Wordpress.
 

fox1989

Neues Mitglied
20 Mai 2021
6
0
1
32
Das ist ein gefährlicher Irrglaube! Kontextwechsel müssen immer korrekt behandelt werden (das behebt in dem Fall ja die Sicherheitslücke), auch wenn der Code aktuell(!) nur für einzelne Personen zugänglich ist. Die gefährlichsten Angriffe kommen von innen, zudem muss ja noch nichtmal Vorsatz vorliegen, es kann ja auch durchaus sein dass der User versehentlich etwas kaputt macht da er z.B. was eingegeben hat mit dem du nicht gerechnet hast.
Ich google das mal, danke für deine Geduld
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.657
195
63
Bei WordPress solltest du kein Formular selber basteln, dafür gibt es Plugins.
 
Werbung:

Neueste Beiträge