Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Angänger braucht Hilfe

1 view
Skip to first unread message

Petra Lampe

unread,
May 29, 2009, 4:08:30 AM5/29/09
to
Hallo,

bin neu hier und habe folgendes dummes Problem:

Ich möchte über eine Webseite realisieren, das sich User in eine mysql
Datenbank eintragen können.

Folgendes Script habe ich verfasst:

<?

$Name = $_POST["Name"];
$Level = $_POST["Level"];
$Rang = $_POST["Rang"];
$Email = $_POST["Email"];

if (($Name == "") OR ($Level == "") OR ($Rang == "") OR ($Email == "")) {
echo "Fehler: Eintrag unvollständig.";
die;
}


include ("dbconnect.php");


$sql_befehl = mysql_query("INSERT INTO tabelle (Name,Level,Rang,Email)
VALUES
('".$_POST['Name']."','".$_POST['Level']."','".$_POST['Rang']."','".$_POST['Email']."')");

if($sql_befehl)
{ echo "Dein Eintrag wurde in die Warteliste hinzugefügt."; }


mysql_close($datenbank);
?>

Das Problem ist jetzt, dass wenn ich alle Felder im Formular ausgefüllt
habe und auch Abschicken klicke, jedesmal die Meldung kommt Eintrag
unvollständig....

Da aber alle Felder ausgefüllt wurden, dürfte die Meldung gar nicht
kommen, sondern die Daten müssten verarbeitet werden, meiner Meinung
nach, denn die Abfrage sollte ja nur erscheinen, wenn jemand ein Feld
nicht ausgefüllt hat.

Kann mir hier jemand auf die Sprünge helfen?

Vielen Dank schon mal :-)

LG
Petra

Enrico Labedzki

unread,
May 29, 2009, 4:54:09 AM5/29/09
to
Petra Lampe schrieb:

>
> <?
>
> $Name = $_POST["Name"];
> $Level = $_POST["Level"];
> $Rang = $_POST["Rang"];
> $Email = $_POST["Email"];
>
> if (($Name == "") OR ($Level == "") OR ($Rang == "") OR ($Email == "")) {
> echo "Fehler: Eintrag unvollständig.";
> die;
> }
>
>
> include ("dbconnect.php");
>
>
> $sql_befehl = mysql_query("INSERT INTO tabelle (Name,Level,Rang,Email)
> VALUES
> ('".$_POST['Name']."','".$_POST['Level']."','".$_POST['Rang']."','".$_POST['Email']."')");
>
>
> if($sql_befehl)
> { echo "Dein Eintrag wurde in die Warteliste hinzugefügt."; }
>
>
> mysql_close($datenbank);
> ?>
>
> Das Problem ist jetzt, dass wenn ich alle Felder im Formular ausgefüllt
> habe und auch Abschicken klicke, jedesmal die Meldung kommt Eintrag
> unvollständig....
>
> Da aber alle Felder ausgefüllt wurden, dürfte die Meldung gar nicht
> kommen, sondern die Daten müssten verarbeitet werden, meiner Meinung
> nach, denn die Abfrage sollte ja nur erscheinen, wenn jemand ein Feld
> nicht ausgefüllt hat.
>
> Kann mir hier jemand auf die Sprünge helfen?
>

Ja Poste mal BITTE das ganze Formular!

Mfg Enrico

Enrico Labedzki

unread,
May 29, 2009, 5:00:02 AM5/29/09
to
Enrico Labedzki schrieb:

>
> Ja Poste mal BITTE das ganze Formular!
>
>

Mfg Enrico

PS.: Ah ja und die Verwendete PHP Version auch gleich mit.

Thomas Kaessner

unread,
May 29, 2009, 5:28:55 AM5/29/09
to
Enrico Labedzki schrieb:

> Petra Lampe schrieb:
>
>> <?
>>
>> $Name = $_POST["Name"];
>> $Level = $_POST["Level"];
>> $Rang = $_POST["Rang"];
>> $Email = $_POST["Email"];
>> [..]

>> Kann mir hier jemand auf die Sprünge helfen?
>>
>
> Ja Poste mal BITTE das ganze Formular!
>
> Mfg Enrico

Du hast auch den Verdacht, dass sein Formular ein get und
kein post macht?

@Petra - du könnest ja mal ein print_r($_GET) und
print_r($_POST) in die Fehlergeschichte setzen, damit Du
siehst was ankommt.

Viele Grüße
Thomas

David Fuhr

unread,
May 29, 2009, 7:42:56 AM5/29/09
to
Petra Lampe wrote:
>
> $sql_befehl = mysql_query("INSERT INTO tabelle (Name,Level,Rang,Email)
> VALUES
> ('".$_POST['Name']."','".$_POST['Level']."','".$_POST['Rang']."','".$_POST['Email']."')");

Warum definierst du oben die Variablen $Name, $Level usw und verwendest
dann doch die $_POST-Variablen?

Außerdem sollte ALLES, was in MySQL-Queries kommt mit
mysql_real_escape_string() behandelt werden, sonst hast du gleich dein
erstes Sicherheitsloch. ;)

> Das Problem ist jetzt, dass wenn ich alle Felder im Formular ausgefüllt
> habe und auch Abschicken klicke, jedesmal die Meldung kommt Eintrag
> unvollständig....

Ein var_dump($_POST) vor dem if-Statement sollte dir sagen ob was mit
POST ankommt. Für Firefox gibt's auch die UrlParams-Extension:
https://addons.mozilla.org/firefox/addon/1290

Gruß

Niels Braczek

unread,
May 29, 2009, 8:19:07 AM5/29/09
to
David Fuhr schrieb:

> Außerdem sollte ALLES, was in MySQL-Queries kommt mit
> mysql_real_escape_string() behandelt werden, sonst hast du gleich dein
> erstes Sicherheitsloch. ;)

Nicht ALLES, sondern nur Strings werden mit mysql_real_escape_string()
vorbereitet.
Für Ganzzahlen verwendet man intval() oder (int).
Für andere Datentypen sind andere Maskierungs-/Validierungsmaßnahmen
erforderlich.

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · e-Commerce · Joomla! Content Management |
------------------------------------------------------------------

Claus Reibenstein

unread,
May 29, 2009, 11:43:02 AM5/29/09
to
Niels Braczek schrieb:

> David Fuhr schrieb:
>
>> Außerdem sollte ALLES, was in MySQL-Queries kommt mit
>> mysql_real_escape_string() behandelt werden, sonst hast du gleich dein
>> erstes Sicherheitsloch. ;)
>
> Nicht ALLES, sondern nur Strings werden mit mysql_real_escape_string()
> vorbereitet.
> Für Ganzzahlen verwendet man intval() oder (int).
> Für andere Datentypen sind andere Maskierungs-/Validierungsmaßnahmen
> erforderlich.

Wir reden von MySQL. Da kannst Du getrost alles mit
mysql_real_escape_string() behandeln. Den Rest erledigt die DB. Die sagt
Dir schon Bescheid, wenn die Daten nicht passen.

Gruß. Claus

Claus Reibenstein

unread,
May 29, 2009, 11:52:33 AM5/29/09
to
Petra Lampe schrieb:

> <?

Short Open Tags sind bäh. Solltest Du Dir abgewöhnen. Manche Provider
lassen sie erst gar nicht zu.

> $sql_befehl = mysql_query("INSERT INTO tabelle (Name,Level,Rang,Email)
> VALUES
> ('".$_POST['Name']."','".$_POST['Level']."','".$_POST['Rang']."','".$_POST['Email']."')");

Auweia!

Erst einmal sollte man Daten, die von außen kommen, _niemals_ ungeprüft
bzw. ungefiltert weiterreichen, sondern sie vorher so behandeln, dass
sie keinen Unfug anrichten können. In diesem Fall wäre
mysql_real_escape_string() die richtige Methode.

Alternativ würde ich Dir empfehlen, Dich auch mit PDO auseinander zu
setzen. Damit erledigen sich solche Probleme von ganz alleine.

> Das Problem ist jetzt, dass wenn ich alle Felder im Formular ausgefüllt
> habe und auch Abschicken klicke, jedesmal die Meldung kommt Eintrag
> unvollständig....

Hast Du mal geprüft, welche Daten tatsächlich ankommen? print_r() oder
var_dump() helfen Dir dabei.

Gruß. Claus

Niels Braczek

unread,
May 29, 2009, 12:14:01 PM5/29/09
to
Claus Reibenstein schrieb:
> Niels Braczek schrieb:

>> Nicht ALLES, sondern nur Strings werden mit mysql_real_escape_string()
>> vorbereitet.
>> Für Ganzzahlen verwendet man intval() oder (int).
>> Für andere Datentypen sind andere Maskierungs-/Validierungsmaßnahmen
>> erforderlich.
>
> Wir reden von MySQL. Da kannst Du getrost alles mit
> mysql_real_escape_string() behandeln. Den Rest erledigt die DB. Die sagt
> Dir schon Bescheid, wenn die Daten nicht passen.

Deswegen ist das noch lange nicht sauber (und damit empfehlenswert).

Claus Reibenstein

unread,
May 29, 2009, 12:43:39 PM5/29/09
to
Niels Braczek schrieb:

> Claus Reibenstein schrieb:
>
>> Niels Braczek schrieb:
>>

>>> Für andere Datentypen sind andere Maskierungs-/Validierungsmaßnahmen
>>> erforderlich.
>>
>> Wir reden von MySQL. Da kannst Du getrost alles mit
>> mysql_real_escape_string() behandeln. Den Rest erledigt die DB. Die sagt
>> Dir schon Bescheid, wenn die Daten nicht passen.
>
> Deswegen ist das noch lange nicht sauber (und damit empfehlenswert).

Das steht außer Zweifel. Nur "erforderlich" sind die von Dir genannten
Maßnahmen bei MySQL nicht.

Gruß. Claus

Thomas Fuchs

unread,
May 29, 2009, 1:51:31 PM5/29/09
to
Claus Reibenstein schrieb:
> Petra Lampe schrieb:

>> <?

> Short Open Tags sind bäh. Solltest Du Dir abgewöhnen.

Warum werden dann in allen Beispielen und in der Dokumentation vom Zend
Framework genau diese bösen Short-Tags benutzt? Wenn man die Nachteile
kennt und keine Software für jeden 0815-Webspace baut, dann sind die
Short-Tags eigentlich auch eine feine Sache.

>> $sql_befehl = mysql_query("INSERT INTO tabelle (Name,Level,Rang,Email)
>> VALUES
>> ('".$_POST['Name']."','".$_POST['Level']."','".$_POST['Rang']."','".$_POST['Email']."')");

> Erst einmal sollte man Daten, die von außen kommen, _niemals_ ungeprüft


> bzw. ungefiltert weiterreichen, sondern sie vorher so behandeln, dass
> sie keinen Unfug anrichten können.

ACK!

> Alternativ würde ich Dir empfehlen, Dich auch mit PDO auseinander zu
> setzen. Damit erledigen sich solche Probleme von ganz alleine.

Bitte was? Auch mit PDO hat man diese Probleme, wenn man Werte nicht
entsprechend maskierst. Wenn du Prepared Statements meinst dann gebe ich
dir Recht, allerdings hat das mit PDO nichts zutun.

Petra Lampe

unread,
May 29, 2009, 2:43:33 PM5/29/09
to
Enrico Labedzki schrieb:

Das ist das ganze Formular.
es gibt eine normale HTML Eingabeseite und die übergibt die Daten per
POST an dieses Script hier.

Das HTML sieht so aus:

<html>
<head>
<title></title>
</head>
<body>
<form name="Tafelrunde" action="speichern.php" methode="post"> <font
face="arial" size="3">
Name: <input name="name" type="text" size="10" maxsize="40" <p> Level:
<input name="level" type="text" size="2" maxsize="2" <p> Rang: <input
name="rang" type="text" size="10" maxsize="10" <p>
Email:<input name="email" type="text" size="10" maxsize="20"<p><br>
<input type="submit" name="eintragen" value="Eintragen"> <input
type="reset" name="abbruch" value=" Eingaben löschen"> </font>
</form>
</body>
</html>

LG
Petra

Petra Lampe

unread,
May 29, 2009, 2:44:34 PM5/29/09
to
Enrico Labedzki schrieb:

Hab ich schon.
PHP 4 ist die verwendete Version.

LG
Petra

Petra Lampe

unread,
May 29, 2009, 3:06:01 PM5/29/09
to
Thomas Kaessner schrieb:

Gut mach ich.
Sage dann Bescheid.

Danke auch den andern :-)

LG
Petra

Enrico Labedzki

unread,
May 29, 2009, 3:18:10 PM5/29/09
to
Petra Lampe schrieb:

>> PS.: Ah ja und die Verwendete PHP Version auch gleich mit.
>
> Hab ich schon.
> PHP 4 ist die verwendete Version.
>
> LG
> Petra

Ne hattest Du nich. Aber Egal....!

Ich seh Immer noch keine HTML FORMULARE????

Horch wenn Du Hilfe benötigst dann Präsentier wenigstens dein Problem
aufm Silbertablett.

Danke Enrico

Enrico Labedzki

unread,
May 29, 2009, 3:20:18 PM5/29/09
to
Thomas Kaessner schrieb:

>>>
>> Ja Poste mal BITTE das ganze Formular!
>>
>> Mfg Enrico
>
> Du hast auch den Verdacht, dass sein Formular ein get und
> kein post macht?
>

So was in der Art. Ich würde lieber Wissen wie die Formular aussehen
denn Ich hege den Verdacht das Verkehrt Zugesendet wird.

Man wird Ja noch Sehen.

Mfg Enrico

Ulrich

unread,
May 29, 2009, 3:20:54 PM5/29/09
to
       
> <form name="Tafelrunde" action="speichern.php" methode="post">


Ich würde als erstes mal im Formular methode in method ändern.

Enrico Labedzki

unread,
May 29, 2009, 3:21:59 PM5/29/09
to
Petra Lampe schrieb:

Schau mal deine Groß und Klein Schreibung an, dann Haste dein Problem
gefunden.

Mfg Enrico

Petra Lampe

unread,
May 29, 2009, 3:22:47 PM5/29/09
to
Enrico Labedzki schrieb:

> Petra Lampe schrieb:
>
>>> PS.: Ah ja und die Verwendete PHP Version auch gleich mit.
>>
>> Hab ich schon.
>> PHP 4 ist die verwendete Version.
>>
>> LG
>> Petra
>
> Ne hattest Du nich. Aber Egal....!

Doch das Formular hatte ich gleich in Dein erstes Posting reinkopiert.
seh ich ja auch :-)

Nur die PHP Version, dazu hatt ich da nix geschrieben.


>
> Ich seh Immer noch keine HTML FORMULARE????

Tja, meine ertse Antwort auf Dein Posting, da steht es drin.

Aber für Dich also auch nochmal hier:

<html>
<head>
<title></title>
</head>
<body>
<form name="Tafelrunde" action="speichern.php" methode="post">
<font face="arial" size="3">
Name: <input name="name" type="text" size="10" maxsize="40" <p>
Level: <input name="level" type="text" size="2" maxsize="2" <p>
Rang: <input name="rang" type="text" size="10" maxsize="10" <p>
Email:<input name="email" type="text" size="10" maxsize="20"<p><br>
<input type="submit" name="eintragen" value="Eintragen"> <input
type="reset" name="abbruch" value=" Eingaben löschen">
</font>
</form>
</body>
</html>
>

> Horch wenn Du Hilfe benötigst dann Präsentier wenigstens dein Problem
> aufm Silbertablett.

Das nutzt nix, wenn der andere es nicht findet ;-)


>
> Danke Enrico

Bitte Petra

Claus Reibenstein

unread,
May 29, 2009, 3:32:12 PM5/29/09
to
Petra Lampe schrieb:

> <form name="Tafelrunde" action="speichern.php" methode="post">

¯¯¯¯¯¯¯

Das Attribut heißt "method".

Gruß. Claus

Enrico Labedzki

unread,
May 29, 2009, 3:34:28 PM5/29/09
to
Petra Lampe schrieb:

Schau bitte in dem HTML Formular nach name="Name" usw. denn selbst bei
einem POST oder GET wird GROß und klein -Schreibung berücksichtigt.

Mfg Enrico

PS.: Und NEIN da ist kein HTML mit bei gewesen.

Claus Reibenstein

unread,
May 29, 2009, 3:42:05 PM5/29/09
to
Thomas Fuchs schrieb:

> Claus Reibenstein schrieb:


>
>> Alternativ würde ich Dir empfehlen, Dich auch mit PDO auseinander zu
>> setzen. Damit erledigen sich solche Probleme von ganz alleine.
>
> Bitte was? Auch mit PDO hat man diese Probleme, wenn man Werte nicht
> entsprechend maskierst. Wenn du Prepared Statements meinst dann gebe ich
> dir Recht, allerdings hat das mit PDO nichts zutun.

Ja, ich meinte Prepared Statements, und die haben sehr viel mit PDO zu
tun. Prepared Statements sind ein wesentlicher (wenn nicht sogar _der_
wesentliche) Bestandteil von PDO. Ohne PDO keine Prepared Statements.

Gruß. Claus

Thomas Fuchs

unread,
May 29, 2009, 4:01:01 PM5/29/09
to
Claus Reibenstein schrieb:
> Thomas Fuchs schrieb:

>> Bitte was? Auch mit PDO hat man diese Probleme, wenn man Werte nicht
>> entsprechend maskierst. Wenn du Prepared Statements meinst dann gebe ich
>> dir Recht, allerdings hat das mit PDO nichts zutun.

> Ohne PDO keine Prepared Statements.

Nein? Wenn du das sagst...

<http://de.php.net/manual/de/mysqli-stmt.prepare.php>
<http://de.php.net/manual/de/function.pg-prepare.php>
<http://de.php.net/manual/de/function.oci-parse.php>

...

VG
Thomas

Petra Lampe

unread,
May 29, 2009, 4:47:58 PM5/29/09
to
Enrico Labedzki schrieb:
> Petra Lampe schrieb:
>> Enrico Labedzki schrieb:
>>> Petra Lampe schrieb:
>>>
>>>>
[......snip.]

>>
>> Das HTML sieht so aus:
>>
>> <html>
>> <head>
>> <title></title> </head> <body> <form
>> name="Tafelrunde" action="speichern.php" methode="post"> <font
>> face="arial" size="3">
>> Name: <input name="name" type="text" size="10" maxsize="40" <p>
>> Level: <input name="level" type="text" size="2" maxsize="2" <p>
>> Rang: <input name="rang" type="text" size="10" maxsize="10" <p>
>> Email:<input name="email" type="text" size="10"
>> maxsize="20"<p><br> <input type="submit" name="eintragen"
>> value="Eintragen"> <input type="reset" name="abbruch" value="
>> Eingaben löschen"> </font> </form>
>> </body> </html>
>>
>> LG
>> Petra
>
> Schau mal deine Groß und Klein Schreibung an, dann Haste dein Problem
> gefunden.

Aha....schaun wir mal...:-)
Thanks.
LG Petra

Petra Lampe

unread,
May 29, 2009, 4:48:40 PM5/29/09
to
Claus Reibenstein schrieb:

Stimmt...hüstel...

LG
Petra

Petra Lampe

unread,
May 29, 2009, 4:50:26 PM5/29/09
to
Enrico Labedzki schrieb:
> Petra Lampe schrieb:
>> Enrico Labedzki schrieb:
>>> Petra Lampe schrieb:
>>>
[.snip]

>>
>> Bitte Petra
>
> Schau bitte in dem HTML Formular nach name="Name" usw. denn selbst bei
> einem POST oder GET wird GROß und klein -Schreibung berücksichtigt.
>
> Mfg Enrico
>
> PS.: Und NEIN da ist kein HTML mit bei gewesen.

Enrico, Du hast es doch schon beantwortrt und dadrauf hab ich Dir
geantwortet ebend zwei Postinmgs vorher...lol..

Trotzdem Danke ;-)
LG
Petra

Petra Lampe

unread,
May 29, 2009, 4:51:07 PM5/29/09
to
Ulrich schrieb:

>
>> <form name="Tafelrunde" action="speichern.php" methode="post">
>
>
> Ich würde als erstes mal im Formular methode in method ändern.
>

Jo..thx..
LG
Petra

Claus Reibenstein

unread,
May 29, 2009, 5:28:55 PM5/29/09
to
Thomas Fuchs schrieb:

> Claus Reibenstein schrieb:
>


>> Ohne PDO keine Prepared Statements.
>
> Nein? Wenn du das sagst...
>
> <http://de.php.net/manual/de/mysqli-stmt.prepare.php>

Ok, hast gewonnen :-)

> <http://de.php.net/manual/de/function.pg-prepare.php>
> <http://de.php.net/manual/de/function.oci-parse.php>

Die haben nichts mit MySQL zu tun.

Gruß. Claus

Thomas Fuchs

unread,
May 30, 2009, 8:50:12 AM5/30/09
to
Claus Reibenstein schrieb:

> Thomas Fuchs schrieb:
>> Claus Reibenstein schrieb:

>>> Ohne PDO keine Prepared Statements.

;-)

Egal, Prepared Statements sind ja kein Alleinstellungsmerkmal von MySQL.
Aber hier geht der Punkt an dich, es ging im OP ja schliesslich nicht um
PG oder Oracle :-)

0 new messages