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! :oops:

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?

Code: Alles auswählen

$furni = "furni";
$wert = "wert"; 
vll. eher das hier:

Code: Alles auswählen

$furni=$_POST['furni'];
$wert=$_POST['wert']; 

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!!! :grin:

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

Code: Alles auswählen

if (!empty($furni) && !empty($wert))
ein

Code: Alles auswählen

if ($furni != '' && $wert != '')
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? :oops:

Danke nochmals für die Hilfe! :wink:

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? :oops:
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! :wink:
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.