Seite 1 von 2
mysql Daten verändern
Verfasst: 24.04.2009 19:00
von Gohei
Hi zusammen!
Könnt ihr mir weiterhelfen? Irgendetwas mache ich falsch, nur was? Ich wollte ein Formular erstellen, mit dem ich MySql Daten aktualisieren kann. Aber wenn ich es abschicke, listet er sich einfach dazu...
Code: Alles auswählen
<?php
include("mysql.inc");
$furni = "furni";
$wert = "wert";
if (!empty($furni) && !empty($wert)) {
mysql_query("UPDATE furni_table SET wert='$wert' WHERE furni='$furni';") or die("<font color=\"#FF0000\"><b>Es trat folgender Fehler bei der Datenbankaktion auf:</b>".mysql_error()."</font>");
echo"<b>Erfolgreich eingetragen!</b>";
}
?>
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
<form method="post" action="test.php">
<table>
<tr>
<td><small><b>Furni</b></small></td>
<td><input type="text" name="furni" style="width: 380px"></td>
</tr>
<tr>
<td><small><b>Euro</b></small></td>
<td><input type="text" name="wert" style="width: 380px"></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="Eintragen" value="Eintragen">
</td>
</tr>
</table>
</form>
</body>
</html>
Ich bin euch sehr Dankbar, wenn ihr mir helfen könnt!

Re: mysql Daten verändern
Verfasst: 25.04.2009 16:09
von Valerion
ähm...wie soll er da überhaupt irgendwas ändern, wenn du die Werte davor schon setzt?
vll. eher das hier:
Re: mysql Daten verändern
Verfasst: 25.04.2009 17:04
von oxpus
Aufpassen dabei, dass die Werte vorher geprüft wurden, bevor sie in die Datenbank geschrieben werden.
Mit htmlspecialchars(), bzw. intval() kann man die meisten "Angriffsversuche" per SQL-Injection schon abwehren.
Das Script sollte daher zumindest diesen Grundschutz beinhalten:
Code: Alles auswählen
$furni = mysql_real_escape_string(trim(htmlspecialchars($_POST['furni'])));
$wert = intval($_POST['wert']);
if (!empty($furni) && !empty($wert)) {
mysql_query("UPDATE furni_table SET wert='$wert' WHERE furni='$furni';") or die("<font color=\"#FF0000\"><b>Es trat folgender Fehler bei der Datenbankaktion auf:</b>".mysql_error()."</font>");
echo"<b>Erfolgreich eingetragen!</b>";
Wobei ich jetzt mal ausgehe, dass $furni ein String und $wert eine Ganzzahl sein soll. Sofern $wert auch ein String ist, sollte dieses genau so formatiert und Konvertiert werden, wie $furni.
Re: mysql Daten verändern
Verfasst: 25.04.2009 17:07
von Gohei
Vielen Dank mein Held!!!
Hat funktioniert!!!
Ich musste aber diese dann unter dem empty fügen, sonst zeigte es mir immer an, dass 'furni' und 'wert' nicht existieren würden
Code: Alles auswählen
if (!empty($furni) && !empty($wert)) {
$furni=$_POST['furni'];
$wert=$_POST['wert'];
aber anonsten klappt jetzt alles!
VIELEN DANK!!!!
Re: mysql Daten verändern
Verfasst: 25.04.2009 17:45
von oxpus
Nicht wirklich.
Die Werte müssen ja erst in die Variablen auf den $_POST-Daten übernommen werden, um sie prüfen zu können.
Ich würde daher auch eher aus
ein
machen.
Sofern $wert eine Zahl ist, kann != '' dafür auch weggelassen werden.
Re: mysql Daten verändern
Verfasst: 25.04.2009 20:40
von Valerion
Naja, ich würde mysql_real_escape_string nehmen, sprich:
Code: Alles auswählen
$furni=mysql_real_escape_string($_POST['furni']);
$wert= (int) $_POST['wert'];
damit wird $furni escaped und $wert ist immer eine Ganzzahl
Re: mysql Daten verändern
Verfasst: 27.04.2009 20:11
von Gohei
@oxpus
Ja danke, jetzt funzt das auch richtig bei mir!
Soll ich denn htmlspecialchars(), bzw. intval() auch für INSERT einsetzen?
Danke nochmals für die Hilfe!

Re: mysql Daten verändern
Verfasst: 27.04.2009 22:32
von oxpus
Gohei hat geschrieben:@oxpus
Ja danke, jetzt funzt das auch richtig bei mir!
Fein. Freut mich zu hören, äh, lesen.
Gohei hat geschrieben:Soll ich denn htmlspecialchars(), bzw. intval() auch für INSERT einsetzen?
Immer, wenn Werte in SQL-Anweisungen eingebunden werden, deren Daten aus $_POST-, bzw. $_GET-Daten kommen, also aus Formularen, bzw. URL's.
Nur so lassen sich durchgängig SQL-Injections abfangen und Sicherheitslücken vermeiden.
Gohei hat geschrieben:Danke nochmals für die Hilfe!

Keine Ursache, dafür bin ich ja (neben den anderen) da.
Re: mysql Daten verändern
Verfasst: 28.04.2009 14:28
von Valerion
Das einfachere ist aber einfach mysql_real_escape_string zu verwenden...das ist genau dafür gemacht worden, man braucht halt eine DB-Verbindung.
http://de.php.net/manual/de/function.my ... string.php
Re: mysql Daten verändern
Verfasst: 28.04.2009 16:15
von oxpus
Ich würde das alleine nicht als ausreichend betrachten.
Zumal bei übergebenen Zahlen auch angehangene Wörter mit gespeichert würden und genau in diesen Teilen könnte man z. B. SQL-Incection-Codes einschleusen.
Daher sollten zumindest Zahlen auch als solche aus $_POST/$_GET übernommen werden, um hier keine Lücken zu lassen.