Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst PHP und seine Formular tücken

Mitglied: L0g1t3ch

L0g1t3ch (Level 1) - Jetzt verbinden

18.01.2010 um 17:43 Uhr, 4325 Aufrufe, 9 Kommentare

Ich arbeite schon sehr lange mit PHP und bin ehrlich gesagt jetzt soweit in den nächsten Waffenladen zu gehen
mir eine Pupgun zu holen und den nächst besten idioten abzuknallen. Wobei das wohl meine Büro insassen wären.

Ich habe ein Formular gebaut um daten in eine Datenbank tabelle zuschreiben siehe hier:

wie ihr seht verweißt diese Datei auf "addbeitrag.php" also hier der quelltext zu addbeitrag.php

soooweit so gut... leider schreibt der mir aber in die Datenbank Tabelle Test keinerlei daten rein... was er tun sollte...
Die Tabelle besteht aus 4 Feldern

ID
uberschrift
gkurz
glang

kann mir bitte jmd mit rat und tat zur seite stehen xD

Lieben Gruß
Ben
Mitglied: marcoj90
18.01.2010 um 17:56 Uhr
ganz einfach in deiner if bedingung lässt du den query string zusammensetzen aber nicht ausführen
in deiner konstellation ergibt die if bedingung immer true

sinnvoller wäre

wenn du im if alle variablen auf inhalt prüfst, zumindest die die nicht leer sein sollen

z.B.:

if(isset(htmlspecialchars($_POST['blahblupp'])) and htmlspecialchars($_POST['blahblupp']) != "")

und um den query auszuführen den du in $sql stehen hast musst du noch

mysql_query($sql);

ausführen das is eigendlich alles soweit dann sollte es gehen
Bitte warten ..
Mitglied: L0g1t3ch
18.01.2010 um 17:59 Uhr
ich hatte die abfrage ob daten drin stehen vorher rausgenommen da ich das skript ersteinmal so zum laufen kriegen wollte...
die abfrage wird doch auch nicht zu 100% benötigt oder? wenn ich per hand zum test daten reinschreib is doch okay

und den querry führ ich ja in zeile 33 quasi aus oder nicht?

vielen dank für deine prompte antwort
Bitte warten ..
Mitglied: marcoj90
18.01.2010 um 18:08 Uhr
ups sry überlesen man sollte bis zur letzten zeile lesen ^^


hab gerad nochmal genau gekugt hast du mal mit "echo $sql" geschaut ob da auch ein vernünftiger query rauskommt
denn ich glaub ma das die { } da nix zu suchen haben und durch . (Punkt) und " ersetzt werden müssen

vorher:

VALUES
(
'{$_POST['uberschrift']}',
'{$_POST['gkurz']}',
'{$_POST['glang']}',
)" )

nachher:

VALUES
(
' ".$_POST['uberschrift']." ',
' ".$_POST['gkurz']." ',
' ".$_POST['glang']." ',
)" )
Bitte warten ..
Mitglied: dog
18.01.2010 um 18:16 Uhr
Meine Meinung: Du arbeitest noch nicht lange genug mit PHP, denn da ist ein Haufen Quark!

<?

Niemals Short open Tags benutzen!

@

Niemals auf diese Weise Fehler unterdrücken, wenn man nicht genau weis, wie man sie wieder auffangen muss und wie man sie in der Entwicklung trotzdem sichtbar macht!

OR die(mysql_error());

Copy und Paste Klassiker, hat in der Praxis aber nichts verloren.

if ($sql

Über die Sinnlosigkeit dieser Zeile hat sich marco ja schon ausgelassen

'{$_POST['uberschrift']}',

SQL-Injection lässt grüßen!

mysql_query($sql);

Abgesehen von den ganzen Fehlern sollten die Daten trotzdem eingetragen werden, darum gilt wie immer:

hinzufügen und auf den Fehler warten...

@marco

Die {} sind für Strings die evaluiert werden (doppelte Anführungszeichen) korrekte Steuerzeichen (werden aber sehr selten benutzt):

Bitte warten ..
Mitglied: marcoj90
18.01.2010 um 18:43 Uhr
ok ok is ja auch n weilchen her das ich mal mit php gearbeitet hab ^^

ich hab nu einfach mal sein scripts neu geschrieben so wie ich es lösen würd vielleicht hilft es ihm ja
keine garantie auf flüchtigkeitsfehler

Bitte warten ..
Mitglied: dog
18.01.2010 um 19:50 Uhr
Eine nette SQL-Injection hast du so trotzdem drinne.
Mysql Steuerzeichen != HTML Steuerzeichen
Bitte warten ..
Mitglied: RoterFruchtZwerg
18.01.2010 um 20:42 Uhr
Zitat von marcoj90:
ok ok is ja auch n weilchen her das ich mal mit php gearbeitet hab ^^

ich hab nu einfach mal sein scripts neu geschrieben so wie ich es lösen würd vielleicht hilft es ihm ja
keine garantie auf flüchtigkeitsfehler


Da wird einem ja schwindelig... htmlspecialchars ersetzt HTML Steuerzeichen durch ihre HTML Entities. Die Funktion kommt sinnvollerweise bei der Ausgabe eines Strings im Kontext eine HTML Dokumentes zum Einsatz. Das ist hier nicht der Fall, also hat sie hier auch nichts zu suchen.
Erst recht aber hat sie beim Vergleich mit einem Leerstring absolut keinen Sinn. Wie könnte denn ein nicht leerer String aussehen, der sich bei der Ersetzung in HTML Entities in einen Leerstring wandelt?
PHP ist ausserdem so nett und erlaubt den Vergleich mit einer nicht gesetzten Variable mit einem Leerstring (oder False) und gibt dafür True zurück, sofern man nicht einen Vergleich der Variablentypen erzwingt. Das isset() kann man sich also in den meisten Fällen sparen.

Übergebene Strings in SQL Statements gehören entsprechend den Regeln der SQL Datenbank escaped, die richtige Funktion dafür ist mysql_real_escape_string();

Funktioniert haben trotzdem alle hier genannten Lösungen nicht, weil das SQL Query fehlerhaft war. Nach dem letzten übergebenen Wert in VALUES () bzw. nach den Feldnamen war noch ein Komma.

Bedenke bitte, falls du vor hast diese Daten auch irgendwo wieder auszugeben, dass du htmlspecialchars() korrekt einsetzt.

greetz RFZ
Bitte warten ..
Mitglied: dog
18.01.2010 um 21:23 Uhr
Hehe, das Komma war wirklich zu kein um es zu sehen, man hätte es aber ganz schnell gemerkt wenn man wirklich mal error_reporting benutzt hätte

PHP ist ausserdem so nett und erlaubt den Vergleich mit einer nicht gesetzten Variable mit einem Leerstring (oder False) und gibt dafür True zurück, sofern man nicht einen Vergleich der Variablentypen erzwingt. Das isset() kann man sich also in den meisten Fällen sparen.

PHP erlaubt das zwar, aber auch nur mit einer E_NOTICE - weshalb man es nicht machen sollte.
Schlauerweise benutzt man in so einem Fall das empty()-Sprachkonstrukt

Bitte warten ..
Mitglied: L0g1t3ch
19.01.2010 um 10:31 Uhr
´werde eure sachen morgen beherzigen... jedoch arbeite ich schon eine weile mit php aber mit jetzt net so der übercrack xD und ja ich habe copy und paste aus meinen alten scripten gemacht wo noch das handbuch neben mir lag... deswegen sich warscheinlich auch unnötige sachen im script xD


Der Ben
Bitte warten ..
Ähnliche Inhalte
PHP
PHP Formular für MSSQL
gelöst Frage von MCAJ10PHP13 Kommentare

Hallo zusammen, ich bin neu in der Materie und habe folgendes Problem: Ich möchte ein Web-Formular erstellen welches nur ...

PHP
PHP Formular für ORACLE Datenbank
gelöst Frage von Mr.RobotPHP

Hallo Freunde, ich bin Systemintegrator in einem mittelständischen Unternehmen. Wir haben gerade ein Warenwirtschaftsprojekt + Umzug hinter uns und ...

JavaScript
Jquery Formular absenden
gelöst Frage von tobmesJavaScript1 Kommentar

Hi Experten, ich versuche mich gerade an jquery. Ich habe bis jetzt die Formular immer direkt mittels PHP übermittelt. ...

PHP
Komplexes WP Formular
Frage von pcguyPHP4 Kommentare

Guten Morgen Ich möchte ein komplexes Formular in Wordpress erstellen, das nur der Admin benutzen darf. Die Daten aus ...

Neue Wissensbeiträge
Monitoring

Unabhängiger Ansatz - IoT (frei von Cloud- oder Appzwang) - Hier mit Schaltsteckdosen

Anleitung von beidermachtvongreyscull vor 23 StundenMonitoring1 Kommentar

Tach Kollegen, ich erzähle Euch mal von meiner Ausgangslage und den/m Problem(chen) Ich benutze ein NAS zur Lagerung meiner ...

Microsoft
Microsoft Advanced Threat Protection for Linux
Information von Dani vor 3 TagenMicrosoft

Microsoft Defender Advanced Threat Protection (MD ATP) support for Linux with kernel version 3.10.0-327 or later, including the following ...

Humor (lol)
! ! Today ist SysAdmin-Day ! !
Information von VGem-e vor 4 TagenHumor (lol)5 Kommentare

Moin, "Happy Birthday" an alle Systemadministratoren, Mausschubser, System-/EDV-Betreuer, SysOps etc!! Siehe auch. Edit (Video hinzugefügt): Gruß VGem-e

Exchange Server
Basic Authentication and Exchange Online
Information von Dani vor 6 TagenExchange Server

Today we are pleased to announce some new changes to Modern Authentication controls in the Microsoft 365 Admin Center, ...

Heiß diskutierte Inhalte
Google Android
Handy gehackt ? - Gegemassnahmen
Frage von hushpuppiesGoogle Android26 Kommentare

Hallo zusammen, folgendes Szenario: Kollegin kommt heute zu mir und erzählt, dass ihre Tochter gestern über WhatsApp von einem ...

Google Android
Smartphone - Internes Radio auf Bluetooth Lautsprecher abspielen
Frage von emeriksGoogle Android25 Kommentare

Hi, vielleicht kann ja einer von Euch auch sowas beantworten. Ich habe hier ein Samsung Smartphone - S10 Lite. ...

Cloud-Dienste
Cisco 8841 - Enter activation code
gelöst Frage von c0d3.r3dCloud-Dienste21 Kommentare

Guten Morgen, ich habe gerade von einem Mitarbeiter den Hinweis bekommen, dass sein Telefon (Cisco 8841) einen Welcome-Screen mit ...

Windows Server
DCPromo bleibt bei Migration Server 2008R2 auf 2016 hängen
gelöst Frage von Leo-leWindows Server20 Kommentare

Hallo Forum, wir sind gerade dabei, unsere beiden DCs auf Server 2016 zu migrieren. Aktuell hängt der zusätzlich ins ...

Weniger Werbung?
Administrator Magazin
07 | 2020 In der Juli-Ausgabe beleuchtet das IT-Administrator Magazin den Themenschwerpunkt "Monitoring & Support". Darin zeigt die Redaktion unter anderem, wie Sie die Leistung von Terminalservern im Blick behalten und welche Neuerungen das Ticketsystem OTRS 8 mitbringt. Auch die Überwachung von USV-Anlagen darf nicht fehlen. In ...