
- 1
- 2

DeathlyDennis
unregistriert
anmeldung spinnt wegen ;
Hallo,
ich hab ein paar probleme bei der anmeldung!
wenn man bei der anmeldung eintippt:
;
am ende, dann spinnt das script. sagt error nähe input. wie kann ich das verhindern?
danke dennis
PS.: Auf meiner Homepage!!!
ich hab ein paar probleme bei der anmeldung!
wenn man bei der anmeldung eintippt:
;
am ende, dann spinnt das script. sagt error nähe input. wie kann ich das verhindern?
danke dennis
PS.: Auf meiner Homepage!!!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »DeathlyDennis« (15. September 2004, 14:28)
DeathlyDennis
unregistriert
und wo wird das gemacht??
mein code:
mein code:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
function create_user(&$inhalt)
{
//User eintragen
global $conn;
extract($_POST);
$succ_inhalt = "";
if(empty($realname))
$succ_inhalt .= "<li>Sie müssen ihren wirklichen Namen angeben</li>\n";
if(empty($nick))
$succ_inhalt .= "<li>Sie müssen einen Nicknamen angeben</li>\n";
$nick2 = mysql_fetch_object(mysql_query("SELECT nick FROM ".USER_TABLE." WHERE nick='$nick'",$conn));
if($nick == $nick2->nick)
$succ_inhalt .= "<li>Dieser Nickname ist bereits vergeben</li>\n";
if(empty($femail))
$succ_inhalt .= "<li>Sie müssen ihre E-Mail Adresse angeben</li>\n";
elseif(!preg_match("=[a-z0-9\.\_\-]{3,}@[a-z0-9\-]{3,}.[a-z\.\-]{2,5}=i",$femail))
$succ_inhalt .= "<li>Die E-Mail Adresse, die sie angegeben haben ist nicht korrekt.</li>\n";
if(empty($fpass) || empty($fpassw))
$succ_inhalt .= "<li>Sie müssen ein Passwort angeben</li>\n";
elseif($fpass != $fpassw)
$succ_inhalt .= "<li>Passwort und Passwort-Wiederholung stimmen nicht überein</li>\n";
if(empty($ftag) || empty($fmonat) || empty($fjahr))
$succ_inhalt .= "<li>Sie müssen ihr Geburtsdatum angeben</li>\n";
if(empty($plz))
$succ_inhalt .= "<li>Sie müssen ihre Postleitzahl angeben</li>\n";
if(empty($region))
$succ_inhalt .= "<li>Sie müssen ihre Region angeben</li>\n";
if(empty($land))
$succ_inhalt .= "<li>Sie müssen ihr Heimatland angeben</li>\n";
if(empty($beschreibung))
$succ_inhalt .= "<li>Sie müssen eine kurze beschreibung von sich angeben</li>\n";
if(empty($hobbys))
$succ_inhalt .= "<li>Sie müssen uns sagen, was für Hobbys sie haben</li>\n";
if(empty($mag_schon) || empty($mag_nicht))
$succ_inhalt .= "<li>Sagen sie uns doch, was sie mögen / nicht mögen</li>\n";
{
$succ_inhalt = "<br /><ul style=\"color:#ff0000;\">\n".$succ_inhalt."</ul>\n";
$inhalt = str_replace("{succ_inhalt}",$succ_inhalt,$inhalt);
foreach($_POST as $key=>$value)
$inhalt = str_replace('{'.$key.'}',$value,$inhalt);
$inhalt = str_replace('{randomize}', $r, $inhalt);
$inhalt = ($_POST['geschlecht']=="m")? str_replace("{geschlecht_m}"," checked=\"checked\"",$inhalt):str_replace("{geschlecht_w}"," checked=\"checked\"",$inhalt);
$inhalt = ($_POST['geschlecht']=="m")? str_replace("{geschlecht_w}","",$inhalt):str_replace("{geschlecht_m}","",$inhalt);
return false;
}
else
{
//kein Fehler => speichern
$fpass = md5($fpass);
$zeit = time();
$geb_date = mktime(0,0,0,$fmonat,$ftag,$fjahr);
mysql_query("INSERT INTO ".USER_TABLE." VALUES('','$fpass','$nick','$realname','$femail','$geschlecht',$geb_date,$plz,'$land','$region','$beschreibung','$hobbys','$mag_nicht','$mag_schon','','',1,$zeit)",$conn) or die(mysql_error());
$groesse = 500*1024;
if(isset($_FILES['bild']) && !$_FILES['bild']['error'] && $_FILES['bild']['size']<=$groesse)
{
$id = mysql_insert_id();
//Upload vollziehen
$img_src = "./bilder/".$id.".jpg";
move_uploaded_file($_FILES['bild']['tmp_name'], $img_src);
mysql_query("UPDATE ".USER_TABLE." set bild='$id.jpg' WHERE id=$id",$conn);
//evtl. noch resizen
$maxw = 300;
$im = imagecreatefromjpeg($img_src);
list($src_width, $src_height) = getimagesize($img_src);
if($src_width > $maxw)
{
//resize muss volzogen werden
$new_width = $maxw;
$new_height = $src_height * $maxw / $src_width;
$new_image = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($new_image, $im, 0, 0, 0, 0, $new_width,$new_height, $src_width, $src_height);
imagejpeg($new_image, $img_src, 100);
}
mysql_query("UPDATE ".USER_TABLE." SET bild='$id.jpg' WHERE id=$id",$conn);
//fertig
}
echo 'Danke dass sie sich in dieser Community registriert haben.<br />
Wir wünschen ihnen noch einen angenehmen Aufenthalt.<br />
Sie können sich jetzt über die beiden Login-Felder einloggen.';
} //kein Fehler ende
return true;
}
|
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »DeathlyDennis« (15. September 2004, 15:20)
Zitat
Original von Alfons_G
Eingaben, welche in einer Datenbank gespeichert werden, soll man IMMER mit addslashes() maskieren.
wer lesen kann ist klar im vorteil.

überall da wo der user ein ; eingeben kann.
ansonsten kann der user nämlich deine tabellen löschen usw

jperl
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
DeathlyDennis
unregistriert
meint ihr soetwas?
$nick = str_replace(";","\;",$nick);
mysql_query("INSERT INTO ".USER_TABLE." VALUES('','$fpass','$nick','$realname','$femail','$geschlecht',$geb_date,$plz,'$land','$region','$beschreibung','$hobbys','$mag_nicht','$mag_schon','','',1,$zeit)",$conn) or die(mysql_error());
$nick = str_replace(";","\;",$nick);
mysql_query("INSERT INTO ".USER_TABLE." VALUES('','$fpass','$nick','$realname','$femail','$geschlecht',$geb_date,$plz,'$land','$region','$beschreibung','$hobbys','$mag_nicht','$mag_schon','','',1,$zeit)",$conn) or die(mysql_error());
Wieso benutzt du einen Befehl nicht, wenn man ihn dir sagt?
Und nutze endlich die PHP Tags
|
|
PHP-Quelltext |
1 2 3 4 5 |
$nick = addslashes($nick);
mysql_query("INSERT INTO ".USER_TABLE." VALUES('','$fpass','$nick','$realname','$femail','$geschlecht',$geb_date,$p
lz,'$land','$region','$beschreibung','$hobbys','$mag_nicht','$mag_schon',''
,'',1,$zeit)",$conn) or die(mysql_error());
|
Und nutze endlich die PHP Tags
nyuuu
DeathlyDennis
unregistriert
hallo,
also so?
meint ihr das so`?
also so?
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$nick = addslashes($nick);
$fpass = addslashes($fpass);
$realname = addslashes($realname);
$femail = addslashes($femail);
$geschlecht = addslashes($geschlecht);
$geb_date = addslashes($geb_date);
$plz = addslashes($plz);
$land = addslashes($land);
$region = addslashes($region);
$beschreibung = addslashes($beschreibung);
$hobbys = addslashes($hobbys);
$mag_nicht = addslashes($mag_nicht);
$mag_schon = addslashes($mag_schon);
mysql_query("INSERT INTO ".USER_TABLE." VALUES('','$fpass','$nick','$realname','$femail','$geschlecht',$geb_date,$p
lz,'$land','$region','$beschreibung','$hobbys','$mag_nicht','$mag_schon',''
,'',1,$zeit)",$conn) or die(mysql_error());
|
meint ihr das so`?
Zitat
Original von DeathlyDennis
hallo,
also so?
![]()
PHP-Quelltext
1 2 3 4 5 6$nick = addslashes($nick); $fpass = addslashes($fpass); $realname = addslashes($realname); $femail = addslashes($femail); $geschlecht = addslashes($geschlecht); $geb_date = addslashes($geb_date);
meint ihr das so`?
Igitt,register globals siond on urgh.
machs z.b. so:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 |
<?php
foreach($_POST as $key=>$name){
$_POST[$key]=mysql_escape_string ($name);}
$nick = $_POST["nick"];
$fpass = $_POST["fpass"];
//....
?>
|
Diese Funktion ist besser und so sieht die Sache auch besser aus und ist sicherer und braucht keine register globals .-)
http://de3.php.net/manual/de/function.my…cape-string.php
Wieso eigentlich nicht gleich so?
Solche Schleifen mögen praktisch sein, aber damit kannst nun jeder ziemlich jede Variable setzen die man möchte
|
|
PHP-Quelltext |
1 2 3 |
<?php
foreach($_POST as $key=>$name){
${$key}=mysql_escape_string ($name);}
|
Solche Schleifen mögen praktisch sein, aber damit kannst nun jeder ziemlich jede Variable setzen die man möchte
nyuuu
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Matt« (15. September 2004, 15:54)
Zitat
Original von Matt
Wieso eigentlich nicht gleich so?
![]()
PHP-Quelltext
1 2 3<?php foreach($_POST as $key=>$name){ ${$key}=mysql_escape_string ($name);}
Solche Schleifen mögen praktisch sein, aber damit kannst nun jeder ziemlich jede Variable setzen die man möchte![]()
hä?
ich verstehe nicht was du meinst....
Wenn ich das mit meinem $_POST mache und die Variablen auch per
$vari=$_POST["var"]; initialisiere UND register globals =off habe, dann kann ein user von mir aus $_POST["var2"]; setzen, aber solange ich nicht
$var2=$_POST["var2"] mache wird $var2 ja nicht beeinflusst.
Deine Schleife hingegen hebelt register globals eigentlich aus... (wenn man seine variablen nicht explizit nochmals initiert. siehe das berühmte $auth beispiel)
@Matt: also hä?
@dennis: du hattest vorher dieses adslashes beisoiel gepostet, darüber muss das hin (am besten ganz am anfang des scripts und für jede variable die du vom formular übernimmst musst du dann
$variable=$_POST["variable"]; machen.
Das addslashes brauchst du dann nicht mehr
Zitat
Original von Peter
Zitat
Original von Matt
Wieso eigentlich nicht gleich so?
![]()
PHP-Quelltext
1 2 3<?php foreach($_POST as $key=>$name){ ${$key}=mysql_escape_string ($name);}
Solche Schleifen mögen praktisch sein, aber damit kannst nun jeder ziemlich jede Variable setzen die man möchte![]()
hä?
ich verstehe nicht was du meinst....
Wenn ich das mit meinem $_POST mache und die Variablen auch per
$vari=$_POST["var"]; initialisiere UND register globals =off habe, dann kann ein user von mir aus $_POST["var2"]; setzen, aber solange ich nicht
$var2=$_POST["var2"] mache wird $var2 ja nicht beeinflusst.
Deine Schleife hingegen hebelt register globals eigentlich aus... (wenn man seine variablen nicht explizit nochmals initiert. siehe das berühmte $auth beispiel)
@Matt: also hä?
@dennis: du hattest vorher dieses adslashes beisoiel gepostet, darüber muss das hin (am besten ganz am anfang des scripts und für jede variable die du vom formular übernimmst musst du dann
$variable=$_POST["variable"]; machen.
Das addslashes brauchst du dann nicht mehr
Das einzige Hä meinerseits: $auth Beispiel? Berühmt
Wie wo was?Mein letzter Satz bezieht sich auf meine eigene Kreation.
1 - 1 = 0 War wohl nichts meinerseits...
Ne, den letzten Satz hatte ich in rrtum bezogen auf deinen Code geschrieben, nach der Erkenntnis wollte ich ihn dann nicht mehr löschen und schrieb ein eigenes Beispiel
nyuuu
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 |
<?php
if(($user=="admin")&&($pass=="richtig")){
$auth=true;}
if($auth==true){
echo "du bist eingeloggt";}
?>
|
Wenn ich das jetzt mit
domain.de/test.php?auth=true aufrufe bin ich eingeloggt mit register globals, bzw deinem Script ;-)
Sagt dir das jetzt was?
ist doch eigentlich sehr bekannt ;-)
^-^
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Peter« (15. September 2004, 16:50)
Sagen tut es mir nichts, aber ich verstehe es.
Und dass das mit meinem Skript geht, hab ich ja geschrieben.
Ich würde das ja auch nie nutzen
Mh...ups, mein IRC Bot ist betroffen
Für die, die sowas verhindern wollen:
www.php.net/define
Und dass das mit meinem Skript geht, hab ich ja geschrieben.
Ich würde das ja auch nie nutzen

Mh...ups, mein IRC Bot ist betroffen

Für die, die sowas verhindern wollen:
www.php.net/define
nyuuu
DeathlyDennis
unregistriert
habs mal so gemacht!
aber er prüft nur denn ersten zeichen!!! wieso net alle?
|
|
PHP-Quelltext |
1 2 3 4 |
if(empty($land))
$succ_inhalt .= "<li>Sie müssen ihr Heimatland angeben</li>\n";
elseif(!preg_match("=[a-zA-Z0-9]=i",$land))
$succ_inhalt .= "<li>Sie verwenden für ihre Heimatland Sonderzeichen!</li>\n";
|
aber er prüft nur denn ersten zeichen!!! wieso net alle?

- 1
- 2




.