Hallo und frohes Fest @all ,
hab da ein Problem mit formular und in datenbank schreiben, alle feldnamen und postdatennamen sind richtig geschrieben... Ich finde den Fehler nicht !
Die Fehlermeldung lautet:
HTML-Code:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/localhost/htdocs/logic/matbuch.php on line 83
Den Parsefehler findest du selber, wenn du den String mal zerlegst!
Ansonsten:
1. Die Ausgaben im Formular, solltest du mindestens mit htmlentities() bearbeiten
2. $PHP_SELF beruht auf register_globals=on und erlaubt "XSS Injections"
3. verhinderst du nirgendwo "SQL Injections"
4. Sehe ich keine magic_quotes Abhandlung
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/localhost/htdocs/logic/matbuch.php on line 83
...
Wer was warum ich such schon nen stundchen ?
Versuche es so:
PHP-Code:
$sql = "INSERT INTO " .$_CONFIG['db']['tbl.bilderfassung'] ." (beid, Datum, Wo, tid, sid, Status, Produktart, Menge_klein, Menge_gross, Manuel, Re_Nr) VALUES ('',{$_POST['Datum']},{$_POST['wo']},{$_POST['tid']},{$_POST['sid']},{$_POST['Status']},{$_POST['Proart']},{$_POST['Mengek']},{$_POST['Mengeg']},{$_POST['Manuel']},{$_POST['renr']})";
@mysql_query($sql) or die ( mysql_error() );
zzgl. rambi's Empfehlungen!
__________________
Gruss vt1816
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (Skype, Mail, PN, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
@vt1816
danke das geht aber warum, die lösung die ich vorher hatte geht bei anderen Programmeilen und Masken problemlos auf gleichem server.
@rampi
rampi: 1. Die Ausgaben im Formular, solltest du mindestens mit htmlentities() bearbeiten
Dlanor: warum ? wo soll mir das helfen ? Alle form eingaben werden mit scanner erfasst.
rampi: 2. $PHP_SELF beruht auf register_globals=on und erlaubt "XSS Injections"
Dlanor: brauche ich nicht ist offline anwendung auf homeserver ..
rampi :3. verhinderst du nirgendwo "SQL Injections"
Dlanor siehe bei 1 & 2
rampi: 4. Sehe ich keine magic_quotes Abhandlung
Dlanor: wer oder was ist das ?
Und nun möchte ich gerne werte von variabeln in eine tabele speichern es kommt nun der selbe fehler grummel
Das sieht so aus...
Nunja.. jetzt muß ich mich richtig konzentrieren, um eine freundliche Antwort zu schreiben. ;)
Also, ich habe die Begriffe extra so gewählt, damit du bei Google und im Handbuch schnell fündig wirst. Und deine Begründungen, für die Ablehnung, führen zu "schlampigem" Code. Damit schränkst du die Portabilität sinnlos ein.
Aber evtl. ist das ja das einzige Script, welches du je schreiben wirst... Wenn nicht, werden deine Erfahrungen dich sicherlich irgendwann "in Spur" bringen.
@rampi
Danke für die freundliche erklärung, das wird mit sicherheit nicht das einzige sein was ich schreiben werde.... und sicherlich bin ich bemüht einen sauberen code zu erzeugen werde mich also bessern...
Wenn ich das mit den htmlentities() richtig verstanden habe müste ich also korrekter weise
die werde der Post-daten so behandeln:
PHP-Code:
$datum = htmlentities($_POST['Datum']) ;
und dann $Datum in sql eintragen
Was dann aber ein neues Problem mich erzeugt, siehe meine antwort unten, wo ich werte mit variabel in die db eintragen möchte.
die anderen punkte werde ich noch googeln.
Für die Datenbank musst Du die Parameter gegen Datenbankfehler absichern, sogenannte sql injections.
Für Mysql tust Du das mittels mysql_real_escape_string().
Dabei kommt es nicht auf Bösartigkeit an. Wenn die Parameter nicht behandelt werden, kannst Du zum Beispiel Produktart mit ' erfassen und auch kein Wo? mit '.
...
$sqlvk = "INSERT INTO ".$_CONFIG['db']['tbl.kasse']." (kid,Datum,Buchungsnr,Eingang,Ausgang,Stand,Bestand_K,Bestand_G) VALUES ('',{$_POST['Datum']},'$buid','$geld','$aus','$standn','$matK','$matG')";
@mysql_query($sqlvk) or die ( mysql_error() );
}
Du siehts den Unterschied?
__________________
Gruss vt1816
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (Skype, Mail, PN, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Beim vorfüllen von Formularen immer IMMER htmletities() oder seine Brüder verwenden.
Alle Strings müssen vor der Verwendung in MySQL Statements durch mysql_real_escape_string() geschaufelt werden.
Beide sollten zu einem Reflex werden, weil:
1. Verhindern dass es deine Formulare oder sonstigen HTML Krams (sporadisch) zerreißt
2. "zufällig" ungültige SQL Statements
3. SQL Injections
4. XSS Injections