Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Nah ich meine den function code![]()
Das ist db_query():
$loginnickname = $_POST['nickname'];
$loginpasswort = $_POST['passwort'];
$query = db_query("SELECT nickname,passwort,aktiviert FROM Login WHERE nickname = %s", $loginnickname);
$sql = mysql_query($query) or die(mysql_error());
$ds = mysql_fetch_object($sql);
Query was empty
entweder:
$query = sprintf("SELECT nickname,passwort,aktiviert FROM Login WHERE nickname = '%s'", $loginnickname);
$sql = mysql_query($query) or die(mysql_error());
oder
$sql = db_query("SELECT nickname,passwort,aktiviert FROM Login WHERE nickname = '%s'", $loginnickname);
PHP:entweder: $query = sprintf("SELECT nickname,passwort,aktiviert FROM Login WHERE nickname = '%s'", $loginnickname); $sql = mysql_query($query) or die(mysql_error());
$loginnickname = $_POST['nickname'];
$loginpasswort = $_POST['passwort'];
$sql = db_query("SELECT `nickname`, `passwort`, `aktiviert` FROM `Login` WHERE `nickname` = '%s'", $loginnickname) or die(mysql_error());
$ds = mysql_fetch_object($sql);
Wenn du ActionScripter's oberen Code nimmst, bistd aber nicht gegen SQL-Injections geschützt.
Beachte, dass der Nickname eine Zeichenkette ist !
Das or die() is natürlich noch böse.
[...]
escapen? sql injections?
$loginnickname = $_POST['nickname'];
leutie weisheit mit löfe, jetzt muss ich mich echt mal aufregen. ihr tut immer so, als ob ihr dfeln gefressen hättet.
prinzipiell arbeitet man so, dass man die übergebenen parameter erst prüft und dann übergibt. ergo müsste die prüfung in folgender zeile vonstatten gehen:
[..]
Nein. Du sollst in der Query `feld`='xxx' stehen haben, wenn `feld` ein Textfeld ist.Also meinst du das wenn der User einen Nickk wie "123***" macht soll ich Ihn drauf hinweisen es sei nicht erlaubt?
Ganz am Ende handelt deine Klasse die Fehler bzw. kann man das ja in db_query() machen). Ich würd sagen, so lang lass es drinstehen. Ein MySQL-Fehler dürfte eh eigentlich nie auftreten.Also soll ich das mit dem die() wegmachen wenn ich alles getestet habe oder immer an jede MySql abfrage dran machen?
Du willst die Eingaben aber doch nicht schon vorher escapen ?prinzipiell arbeitet man so, dass man die übergebenen parameter erst prüft und dann übergibt.

Bevor du dem Typen aber in aller Ruhe den Unterschied zwichen mysql_query() und vsprintf() beibringst, servier ich doch lieber ne Zwischenlösung, die ein Erfolgserlebnis bringt. Wie genau der 11-Zeiler jetzt funktioniert, wird er irgendwann schon noch verstehen, wenn es soweit ist.der typ will den kram lernen und verstehen. von daher ist db_query alles andere als geeignet ... wie gesehen versteht er noch nichtmal, was der unterschied zwischen mysql_query und vsprintf ist ... man gibt euch auch nicht shakespeare zum lesen, wenn ihr englisch lernen wollt...
$query = "UPDATE `Login` SET `ip` = '$ip', `lastlogin` = '$date $time' WHERE `nickname` = '$loginnickname'";
$query = "UPDATE Login SET ip = '$ip', lastlogin = '$date $time' WHERE nickname = '$loginnickname'";
CREATE TABLE `login` (
`id` int(11) NOT NULL auto_increment,
`lastlogin` datetime NOT NULL,
`nickname` text collate latin1_general_ci NOT NULL,
`passwort` varchar(32) collate latin1_general_ci NOT NULL default '',
`vorname` text collate latin1_general_ci NOT NULL,
`nachname` text collate latin1_general_ci NOT NULL,
`mail` text collate latin1_general_ci NOT NULL,
`aktiviert` char(1) collate latin1_general_ci NOT NULL default '',
`aktivierungscode` int(15) NOT NULL default '0',
`ip` varchar(18) collate latin1_general_ci NOT NULL default '0',
`regtime` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=9 ;
Warum sollte ich eine Abfrage so Formatieren:
Und nicht so:PHP:$query = "UPDATE `Login` SET `ip` = '$ip', `lastlogin` = '$date $time' WHERE `nickname` = '$loginnickname'";
PHP:$query = "UPDATE Login SET ip = '$ip', lastlogin = '$date $time' WHERE nickname = '$loginnickname'";
wie gesagt nur geschmachssache...was hat deiner meinung nach ne pürfung mit escapen zu tun? das sind zwei unterschiedliche sachen...prinzipiell arbeitet man so, dass man die übergebenen parameter erst prüft und dann übergibt. ergo müsste die prüfung in folgender zeile vonstatten gehen:
ein nicht geprüfter parameter hat überhaupt nichts erst in einer sql-anweisung zu suchen. eine prüfung auf sql-injection ist ne nette sache, ist aber bei sauberer programmierung an dieser stelle nicht nötig.
was hat deiner meinung nach ne pürfung mit escapen zu tun? das sind zwei unterschiedliche sachen...
SELECT x,y,z FROM user WHERE username='$user' AND password='$pass'
... und Injection und Escapen haben nix miteinander zu tun ?wo bitte hab ich von escapen gesprochen? escape ist sache des query. injections abfangen sache der variablenzuweisung...

... und Injection und Escapen haben nix miteinander zu tun ?![]()
... und Injection und Escapen haben nix miteinander zu tun ?![]()
wo bitte hab ich von escapen gesprochen? escape ist sache des query. injections abfangen sache der variablenzuweisung...
ein nickname z.b. hat keine zeichen zu enthalten, die escaped werden müssen. ergo wäre das hier auch nicht nötig, wenn man die zuweisung sauber geprüft hat. ein passwort kann escape-sequenzen enthalten, es wird aber nie im klartext verwendet. durch eine codierung z.b. md5 entsteht wieder ein string, der ebenso nicht escaped werden muss ...
ergo sollte nach ordentlicher prüfung folgende anweisung sicher sein:
PHP:SELECT x,y,z FROM user WHERE username='$user' AND password='$pass'
ich weiss ja nicht, was du unter escape verstehst, aber hier seh ich keins ...
$loginnickname = $_POST['nickname'];