php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 08-12-2011, 13:22
Angi
 Registrierter Benutzer
Links : Onlinestatus : Angi ist offline
Registriert seit: Nov 2011
Beiträge: 12
Angi befindet sich auf einem aufstrebenden Ast
Standard Leere Felder werden in DB eingetragen

Hallo liebe Forumsmitglieder,

ich setze mich nun beim PHP lernen mit MySQL und Datenbanken auseinander und habe dazu ein Skript geschrieben. Das Skript erfüllt zwar einerseits die gewünschte Aufgabe aber andererseits macht es etwas zu viel.

Ich habe eine Datenbank erstellt (PHP myAdmin) "Sportclub" mit den Feldern ID(auto increment) Vorname, Nachname und Wohnort . Über ein Formular sollen Vorname, Nachname und Wohnort eingegeben werden und nach dem aktivieren des senden Buttons in die Datenbank gespeichert werden. Dies funktioniert auch bestens.

Dann habe ich eine if/Else Anweisung geschrieben damit bei Fehleingaben die Daten nicht in die DB eingetragen werden und eine Fehlermeldung erscheint

Nun zum Fehler den ich einfach im Skript nicht erkenne; wenn ich das Formular ohne Eingabe mit senden Button abschicke kommt statt der Fehlermeldung, die Erfolgsmeldung "ein Datensatz wurde erfolgreich hinzugefügt" und wenn ich in der Datenbank nachschaue ist tatsächlich ein Eintrag vorhanden mit leeren Feldern .

Nun weiss ich nicht ob der Fehler im Skript liegt oder eventuell an der Datenbank die ich erstellt habe. Habe auch schon eine zweite Datenbank erstellt und dort genau das gleiche Problem.

Hier mal mein PHP Skript:
PHP-Code:
[LEFT]<html>
<head>

<?php

//Einen Datensatz hinzufügen
if (isset($_POST["gesendet"]))
{
mysql_connect("","root");
mysql_select_db("sportclub");

$nn $_POST["na"];
$vn $_POST["vn"];
$wo $_POST["wo"];


$sqlab "INSERT INTO mitglieder (Name, Vorname, Wohnort) 
values ('$nn', '$vn', '$wo')"
;


mysql_query($sqlab);

$num mysql_affected_rows();
if (
$num>0)
{
echo 
"<p><font color='#00aa00'>";
echo 
"Es wurde 1 Datensatz hinzugefügt";
echo 
"</font></p>";
}
else
{
echo 
"<p><font color='#ff0000'>";
echo 
"Es ist ein Fehler aufgetreten, ";
echo 
"es wurde kein Datensatz hinzugefügt";
echo 
"</font></p>";
}
}
?>
</head>
<body>
<p>Geben Sie bitte einen vollständigen Datensatz ein<br />
und senden Sie das Formular ab:</p>

<form action = "Sportclub.php" method = "post">
<p><input name="na" /> Name</p>
<p><input name="vn" /> Vorname</p>
<p><input name="wo" /> Wohnort</p>
<p><input type="submit" name="gesendet" />
<input type="reset" /></p>
</form>

<p>Alle Datensätze <a href="sportclub_tabelle.php">anzeigen</a></p>
</body>[/LEFT]
</html>
ich weiss nicht ob ihr auch noch das Dump-File der Datenbank benötigt. Mir würde es schon weiterhelfen wenn ich weiss ob dieses Skript fehlerfrei ist, dann weiss ich das ich auf der Datenbankseite nach diesem Fehler suchen muss.

Herzlichen Dank
Angi
Mit Zitat antworten
  #2 (permalink)  
Alt 08-12-2011, 13:33
ezkimo
 Registrierter Benutzer
Links : Onlinestatus : ezkimo ist offline
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 279
ezkimo befindet sich auf einem aufstrebenden Ast
ezkimo eine Nachricht über ICQ schicken
Standard

Erstmal solltest Du Dein Script gegen SQL Injection schützen. So wie es jetzt ist, beinhaltet es auf jeden Fall eine potentielle Sicherheitslücke.

Du überprüfst die Eingaben auch gar nicht. Du übernimmst alles so, wie es aus dem Formular kommt. Selbst wenn die Inhalte der Variablen leer sind, wird ein Eintrag in der Datenbank vorgenommen. Überprüfe, ob die Inhalte der $_POST Variablen gefüllt sind und schon ist Dein Problem gelöst.
__________________
MM Newmedia | MeinBlog
Mit Zitat antworten
  #3 (permalink)  
Alt 08-12-2011, 13:39
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Auch ein Formular mit leeren Feldern kann versendet werden.
Prüfe die anderen Felder und nicht den AbsendeButton.

Tipp:
Vermutlich suchst du !empty() und &&
__________________
Wir werden alle sterben
Mit Zitat antworten
  #4 (permalink)  
Alt 08-12-2011, 14:44
Angi
 Registrierter Benutzer
Links : Onlinestatus : Angi ist offline
Registriert seit: Nov 2011
Beiträge: 12
Angi befindet sich auf einem aufstrebenden Ast
Standard

Hallo ezkimo und combie

Danke für die Wegweiser.
Das Thema "SQL Injection" muss ich mir gleich im nächsten Schritt zur Gemüte führen.


Angi
Mit Zitat antworten
  #5 (permalink)  
Alt 08-12-2011, 16:28
Angi
 Registrierter Benutzer
Links : Onlinestatus : Angi ist offline
Registriert seit: Nov 2011
Beiträge: 12
Angi befindet sich auf einem aufstrebenden Ast
Standard

Hallo Teatchers
Ich konnte das Skript nun erfolgreich fertig stellen und werde es nachfolgend einfügen. Ich hoffe es ist o.k. dass ich die fertigen Scripts hier einstelle den leider bin ich noch nicht in der Situation anderen helfen zu können, aber ich denke diese Lösungen helfen vielleicht auch dem einen oder anderen Anfänger.

SQL Injection scheint doch ein recht grosses und natürlich auch wichtiges Thema zu sein. Habe nun ein zwölfseitiges PDF Dokument heruntergeladen und werde mich auch hier im Forum mal darüber informieren.
Momentan erstelle ich die Scripts alle nur lokal als Übungszweck.

Hier nun das Skript:
PHP-Code:
[LEFT]<html>
<head>

<?php

//Einen Datensatz hinzufügen
if (isset($_POST["gesendet"]))

{
mysql_connect("","root");
mysql_select_db("sportclub");

$nn $_POST["na"];
$vn $_POST["vn"];
$wo $_POST["wo"];


$sqlab "INSERT INTO mitglieder (Name, Vorname, Wohnort) 
values ('$nn', '$vn', '$wo')"
;



if ((!empty(
$nn)) && (!empty($vn)) && (!empty($wo)) )
{
mysql_query($sqlab);
$num mysql_affected_rows();
if (
$num>0

echo 
"<p><font color='#00aa00'>";
echo 
"Es wurde 1 Datensatz hinzugefügt";
echo 
"</font></p>";
}
else
{
echo 
"<p><font color='#ff0000'>";
echo 
"Es ist ein Fehler aufgetreten, ";
echo 
"es wurde kein Datensatz hinzugefügt";
echo 
"</font></p>";
}
}

?>
</head>
<body>
<p>Geben Sie bitte einen vollständigen Datensatz ein<br />
und senden Sie das Formular ab:</p>

<form action = "Sportclub.php" method = "post">
<p><input name="na" /> Name</p>
<p><input name="vn" /> Vorname</p>
<p><input name="wo" /> Wohnort</p>
<p><input type="submit" name="gesendet" />
<input type="reset" /></p>
</form>

<p>Alle Datensätze <a href="sportclub_tabelle.php">anzeigen</a></p>
</body>[/LEFT]
</html>
Danke
Angi
Mit Zitat antworten
  #6 (permalink)  
Alt 08-12-2011, 18:32
Malachite
 Registrierter Benutzer
Links : Onlinestatus : Malachite ist offline
Registriert seit: Aug 2011
Beiträge: 57
Malachite befindet sich auf einem aufstrebenden Ast
Standard

Zum Thema SQL Injection empfehle ich dir, dich mit Prepared Statements auseinanderzusetzen. Außerdem solltest du, wenn vom Server angeboten, die MySQLi-Schnittstelle benutzen.
Mit Zitat antworten
  #7 (permalink)  
Alt 08-12-2011, 19:22
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Malachite Beitrag anzeigen
Außerdem solltest du, wenn vom Server angeboten, die MySQLi-Schnittstelle benutzen.
Warum nicht PDO?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 08-12-2011, 20:30
Angi
 Registrierter Benutzer
Links : Onlinestatus : Angi ist offline
Registriert seit: Nov 2011
Beiträge: 12
Angi befindet sich auf einem aufstrebenden Ast
Standard

OK, über MySQLi-Schnittstelle habe ich schon gelesen, aber noch nicht näher befasst.

Für was steht PDO?
Mit Zitat antworten
  #9 (permalink)  
Alt 08-12-2011, 20:37
Malachite
 Registrierter Benutzer
Links : Onlinestatus : Malachite ist offline
Registriert seit: Aug 2011
Beiträge: 57
Malachite befindet sich auf einem aufstrebenden Ast
Standard

PDO = PHP Data Objects
Mit Zitat antworten
  #10 (permalink)  
Alt 08-12-2011, 20:37
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

PHP: PDO - Manual
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #11 (permalink)  
Alt 08-12-2011, 22:13
Angi
 Registrierter Benutzer
Links : Onlinestatus : Angi ist offline
Registriert seit: Nov 2011
Beiträge: 12
Angi befindet sich auf einem aufstrebenden Ast
Standard

Danke
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
daten werden nicht in db eingetragen keifler SQL / Datenbanken 8 13-12-2010 11:39
Daten werden nicht eingetragen Zauberer1305 HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 2 07-02-2004 23:51
[Variablen] Daten werden nicht in DB eingetragen! Proggy SQL / Datenbanken 2 11-10-2003 13:20
Leere felder nicht anzeigen Imion SQL / Datenbanken 103 30-12-2002 23:30
Felder zählen in denen etwas eingetragen wurde. Larsidotnet SQL / Datenbanken 12 23-11-2001 11:35

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:45 Uhr.