php user daten per fomular speichert keine umlaute in der SQL

latinum_1982

Erfahrenes Mitglied
Hallo

ich habe folgendes problem

ich möchte die user daten per formulat ändern aber in der sql wird umlaute so gespeichert
"Ã********Ã****Ã?&Acirc"

so schaut mein code aus

PHP:
<?php 
// ZUM BEARBEITEN VON USER DATEN

if(isset($_POST['doSave']) && $_POST['doSave'] == 'Speichern') {
  
// Filter POST data for harmful code (sanitize)
foreach($_POST as $key => $value) {
	$data[$key] = filter($value);

}


mysql_query("UPDATE users SET
			`user_name` = '$data[name]',
			`adresse` = '$data[adresse]',
			`ort` = '$data[ort]',
			`plz` = '$data[plz]',
			`tel` = '$data[tel]'
			WHERE id = '$_GET[id]'
			 ");
 

$msg[] = "Ihre Daten wurden erfogreich ge&auml;ndert";
 }

$rs_settings = mysql_query("select * from users where id='$_GET[id]'"); 

?>

und hier das formular

PHP:
<?php while ($row_settings = mysql_fetch_array($rs_settings)) {?>
<form action="" id="contactForm" method="post" name="myform" >

<ul class="forms">
        <li class="odd"> <span class="name">UserName</span>
          <input type="text" name="name" class="mid" value="<?php echo $row_settings['user_name']; ?> " /> </li>
        <li class="odd"> <span class="name">Adresse</span>
          <input type="text" name="adresse" class="mid" value="<?php echo $row_settings['adresse']; ?> " /> </li>
        <li class="odd"> <span class="name">Ort</span>
          <input type="text" name="ort" class="mid" value="<?php echo $row_settings['ort']; ?> " /> </li>
        <li class="odd"> <span class="name">PLZ</span>
          <input type="text" name="plz" class="mid" value="<?php echo $row_settings['plz']; ?> " /> </li>
        <li class="odd"> <span class="name">Telefon</span>
          <input type="text" name="tel" class="mid" value=" <?php echo $row_settings['tel']; ?> " /> </li>

</ul>

<input class="btn" name="doSave" type="submit" id="doSave" value="Speichern">
</form>

hab schon einiges ausprobiert aber aber die lösung noch nicht gefunden :(
vielleicht könnt ihr mir ja weiter helfen

LG aus österreich
 
Liegt vermutlich an der filter methode...


Achja.. das isn scherz oder?^^

PHP:
$rs_settings = mysql_query("select * from users where id='$_GET[id]'");
Eine ungefilterte GET Variable in einem SQL Query?o0
 
Hmm mal überlegen... Weil SQL Injection?^^

Naja egal.. Wie gesagt liegt es warscheinlich
an deiner filter methode
mit der du die POST Variablen filterst.
 
ja das ist mir schon bewust aber ich mach das ja zu lehrzwecken davon wird nix online gestellt...

ich mach das ja nur deswegen weil ich so besser lehrnen kann
 
falls du noch Hilfe brauchst solltest du mal die filter() methode posten.

Und zum besser dran lernen... lern es lieber direkt richtig..
Schlechte Angewohnheiten fließen auch gerne ma in richtigen Code rein^^
 
okey ich werd mir noch mehr in zug heuen und alles überarbeiten...

naja mit die POST filter methpden hab ich mich eigendlich noch nicht beschäftigt
 
PHP:
<?php 
if(isset($_POST['doSave']) && $_POST['doSave'] == 'Speichern') {
  
// Filter POST data for harmful code (sanitize)
foreach($_POST as $key => $value) {
	$data[$key] = mysql_real_escape_string($value);

}


mysql_query("UPDATE users SET
			`user_name`		=  '".mysql_real_escape_string($data['name'])."',
			`adresse`		=  '".mysql_real_escape_string($data['adresse'])."',
			`ort`			=  '".mysql_real_escape_string($data['ort'])."',
			`plz`			=  '".mysql_real_escape_string($data['plz'])."',
			`tel`			=  '".mysql_real_escape_string($data['tel'])."'
			WHERE id = '$_GET[id]'
			 ");
 

$msg[] = "Ihre Daten wurden erfogreich ge&auml;ndert";
 }

$rs_settings = mysql_query("select * from users where id='$_GET[id]'"); 

?>
 
H4ckHunt3r hat gesagt.:
falls id wie ich vermute nur eine zahl ist... diese kannst du einfach durch die methode intval() filtern.
http://de3.php.net/manual/de/function.intval.php

Und die POST variablen musst du nur einmal filtern.
Du filterst diese zwei mal.
Einmal oben in der Schleife und einmal darunter im Query^^


achja und das
PHP:
isset($_POST['doSave']) &&
ist unnötig, da wenn
PHP:
$_POST['doSave'] == 'Speichern'
wahr ist, muss doSave ja zwangsläufig gesetzt sein ;)
 
Zuletzt bearbeitet:
Zurück