mySQL problem...
Geizhals » Forum » Programmierung » mySQL problem... (45 Beiträge, 293 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
mySQL problem...
26.04.2007, 13:41:41
Hallo, ich hab eine bitte, ich bin jetzt irgendwie blind und find den fehler nicht.

also ich bekomm diesen fehler.
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1

sonst bekam ich diesn fehler wenn ich zb ("") statt ('') o.s.ä verwendet hab....ok hier der code, es ist ein anmeldescript und gleichzeitig soll dieser script bei erfolgreichen eintrag dann automatisch verbinden. eingetragen wird. aber es ging zunächst der passwort match nicht, weitergeleitet wurde es dann aber auf die membersseite(weil die passwörter doch gleich waren), ...aber bei absichtlichen falsch eintragen kam ein error. den hab ich jetzt beseitigt ,jetzt pfunziwunzifunztatatut der passwort match , nur kommt es zu keiner weiterleitung auf die membersseite ^^ ..irgendwo is ein fux..


if ($_POST['passwort'] == $_POST['passwort2'])
{ $nname = $_POST['nname'];
      $passwort = md5($_POST['passwort']);
      $name = $_POST['name'];
	  $nachname = $_POST['nachname'];
	  $land = $_POST['land'];
	  $age = $_POST['age'];
	  $email = $_POST['email'];
	  $forumsig = $_POST['forumsig'];
	  $seit = $_POST['seit'];

include("config.php");
		$date = date("g:i, j F Y");
       if( $addplayer = mysql_query("INSERT INTO mitglieder (nname, passwort, 
                                                name, nachname, land, 
                                                age, email , forumsig, seit)". 
		"VALUES ('".$nname."',
		'".$passwort."',
		'".$name."',
		'".$nachname."',
		'".$land."','".$age."',
		'".$email."','".$forumsig."', '".$date."')"))
		
$result = mysql_query($addplayer) or die("Error: " . mysql_error());   


session_start();
$uid= $_POST['uid'];
$nname= $_POST['nname'];
$passwort= md5($_POST['passwort']);

$q="SELECT nname,passwort,uid,rechte FROM mitglieder WHERE ((nname='$nname') 
AND (passwort='$passwort')) LIMIT 1";
$result= mysql_query($q);
("Could not execute query : $q." . mysql_error());

if (!$result)
{ echo "<div align=center><b>Oops! Your login is wrong. Please click back and 
try again.</b></div>"; }
else
{
$r=mysql_fetch_array($result);
$login_username=$r['nname'];
$login_userid=$r['uid'];
$login_userright=$r['rechte'];
$_SESSION['benutzer'] = $login_username;
$_SESSION['uid'] = $login_userid;
$_SESSION['rechte'] = $login_userright;
Header("Location: http://*****************/members.php?content=danke");} 
}else{echo" Passwörter stimmen nicht überein";}



is ein bisserl lang, aber anders gehts leider nicht..tut mir leid

danke für die hilfe
mfg
mck
--------
"Me fail english? That's Omposible" -  Ralph Wiggum
Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
.
Re: mySQL problem...
26.04.2007, 15:08:29
Grober Ablauf-Vorschlag:

Du baust dir ein Include-File, das zuerst mal schaut, was im Secret-Cookie (Session) drin ist...
Wenn ein Secret-Cookie herkommt, prüfst in deiner DB, ob es ein gerade valides ist und welchem Benutzer es gehört. Dadurch hast du den Benutzer identifiziert, der sich gerade anmeldet.

Wenn kein gültiges (also evtl. auch keines) vorhanden ist, schickst ihn zur Anmeldemaske....
Nach Prüfung in der DB kann hier ein (möglichst langes, nicht sequenziell aufsteigendes) Secret-Cookie generieren, dem Client schicken und in der DB bei dem User als aktuelles hinterlegen.

In jeder Sicherheitsrelevanten PHP-Seite machst einfach ein require() auf obige Datei und fertig.

Beim Abmelden aus deiner Applikation wird einfach das Secret in der DB gelöscht.

Vorteil:
- Es werden nicht dauernd Username/PW hin-und-hergeschickt. Wenn einer ein Cookie mitsnifft, kann er es nur für die Dauer der Session mißbrauchen.
- Es ist recht einfach und performant.
- Gut gekapselt

Natürlich darfst natürlich  nicht vergessen, auch die Cookie-Inhalte alle zu Escapen - schließlich kann sich jede Eve die auch laufend selbst erzeugen und so SQL-Injection probieren.
Ebenfalls mußt Du sicherstellen, daß die Cookies nicht fortlaufend sind... Wenn ich Eve spiele und ein Cookie wie secret="12345" erhalte, werde ich es sicher mal spaßhalber  mit dem Cookue "12346" probieren bzw. mich selbst öfters anmelden um das Schema der Cookie-Generierung zu erraten |-D

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
......
Re(6): mySQL problem...
26.04.2007, 16:25:01
Liege ich da falsch ???


Nah liegst überhaupt ned, der Aufruf wird bereits mit gesetzten Cookies getan. Die Cookies werden von PHP in einem Array sortiert.

Aber man hat natürlich selbst dfür zu sorgen welcher Inhalt in den Cookies steht. Ich würd niemals ein Cookie setzen mit plain Pass - außer zum Testen mal.

Aber ich hab des eh immer anders, da ich ja ablehne Webdesigner zu spielen arbeite ich mit Smarty und da hab ich nur eine Klasse mal die die POSTS/GETS abfängt...


public function __construct ()
{
$this->m_oConfig = new config();
$this->m_oActions = new actions();
$this->loadEnv();

}

private function workEnv()
{
}

private function loadEnv()
{
    $this->m_oActions->set ($_GET, "g");
    $this->m_oActions->set ($_POST, "p");
}


Hat für mich den Vorteil das ich das in meiner actionklasse das systematisch nach meinen Vorgaben ordnen kann..


public function get ($what)
{
// Gets the posted/getted/userset Values from array in order.
$result = "";
if (array_key_exists ($what, $g_actions))
$result = $this->g_actions[$what];
if (array_key_exists ($what, $p_actions))
$result = $this->g_actions[$what];
if (array_key_exists($what, $u_actions))
$result = $this->u_actions[$what];

if (strlen($result) == 0)
return FALSE;
else
return $result;
}


Somit hast schöne Collectorenklassen die man natürlich weiter wieder serialisieren kann oder ähnliches anhand der Userdaten.. ist aber..muß ich zugeben Recycle Code der schon seit php5 Release ned angegriffen wurde ;)


Remember what the dormouse said: Feed your head!

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung