mysql Daten verändern

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Gohei
Mitglied
Beiträge: 144
Registriert: 11.12.2005 21:48

mysql Daten verändern

Beitrag 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:
Valerion
Mitglied
Beiträge: 70
Registriert: 11.08.2006 17:30

Re: mysql Daten verändern

Beitrag 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']; 
Mit Freundlichen Grüßen, Valerion.
Administrator von http://www.aquarion.org
Bitte postet PHP-Codes immer immer mit

Code: Alles auswählen

 und nicht mit [code]!
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: mysql Daten verändern

Beitrag 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.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Gohei
Mitglied
Beiträge: 144
Registriert: 11.12.2005 21:48

Re: mysql Daten verändern

Beitrag 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!!!!
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: mysql Daten verändern

Beitrag 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.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Valerion
Mitglied
Beiträge: 70
Registriert: 11.08.2006 17:30

Re: mysql Daten verändern

Beitrag 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
Mit Freundlichen Grüßen, Valerion.
Administrator von http://www.aquarion.org
Bitte postet PHP-Codes immer immer mit

Code: Alles auswählen

 und nicht mit [code]!
Gohei
Mitglied
Beiträge: 144
Registriert: 11.12.2005 21:48

Re: mysql Daten verändern

Beitrag 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:
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: mysql Daten verändern

Beitrag 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.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Valerion
Mitglied
Beiträge: 70
Registriert: 11.08.2006 17:30

Re: mysql Daten verändern

Beitrag 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
Mit Freundlichen Grüßen, Valerion.
Administrator von http://www.aquarion.org
Bitte postet PHP-Codes immer immer mit

Code: Alles auswählen

 und nicht mit [code]!
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: mysql Daten verändern

Beitrag 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.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Antworten

Zurück zu „Coding & Technik“