passwort abfrage
mark
- php
schönen guten morgen..
bin noch recht neu in php
habe mal ne kleine frage
vor disem script hiet steht ein formular mit den eingabefeldern
mpguest=username
mpdoor=passwort
funktioniert alles so weit
habe in einer datenbank die sachen gespeichert
nur weiß ich nicht wie die abfrage aussehehn muss
$mpguest == $mpuser_sql && $mppass == $mppass_sql
das hier ist zu wenig kann man sich trotzdem einlogen mit keinem namen oder mit eienm nicht vorhandenen in der datenbank
daz einzige was kunktioniert ist ich kann mich nicht einloggen wenn ich einen namen aus den datenbank nehme aber ein falsches passwort nehme dann geht es... wie kann ich die abfrage erweiter das es funst???
<?
$mpguest = $_POST['mpguest'];
$mpdoor = $_POST['mpdoor'];
$mppass = md5($mpdoor);
$select_log = mysql_query("select * from mp_master where mpuser='$mpguest'");
while($row_log = mysql_fetch_array($select_log))
{
$mpuser_sql = $row_log[0];
$mppass_sql = $row_log[1];
}
if($mpguest == $mpuser_sql && $mppass == $mppass_sql)
{
session_start();
session_register("SESSION_pass");
$SESSION_pass = $mppass_sql;
}
mark
schönen guten morgen..
bin noch recht neu in php
habe mal ne kleine fragevor disem script hiet steht ein formular mit den eingabefeldern
mpguest=username
mpdoor=passwort
funktioniert alles so weit
habe in einer datenbank die sachen gespeichert
nur weiß ich nicht wie die abfrage aussehehn muss$mpguest == $mpuser_sql && $mppass == $mppass_sql
das hier ist zu wenig kann man sich trotzdem einlogen mit keinem namen oder mit eienm nicht vorhandenen in der datenbank
daz einzige was kunktioniert ist ich kann mich nicht einloggen wenn ich einen namen aus den datenbank nehme aber ein falsches passwort nehme dann geht es... wie kann ich die abfrage erweiter das es funst???<?
$mpguest = $_POST['mpguest'];
$mpdoor = $_POST['mpdoor'];$mppass = md5($mpdoor);
$select_log = mysql_query("select * from mp_master where mpuser='$mpguest'");
while($row_log = mysql_fetch_array($select_log))
{
$mpuser_sql = $row_log[0];
$mppass_sql = $row_log[1];
}if($mpguest == $mpuser_sql && $mppass == $mppass_sql)
{
session_start();
session_register("SESSION_pass");
$SESSION_pass = $mppass_sql;
}
mark
ich muss ja eigentlich nur wissen ob $mpuser_sql und $mppass_sql
leer sind aber wie schreibe ich das in die abfrage???
so geht es nicht:
$mpuser_sql !="" && $mppass_sql !=""
wie kann ich da noch machen?
mark
Hello,
ich muss ja eigentlich nur wissen ob $mpuser_sql und $mppass_sql
leer sind aber wie schreibe ich das in die abfrage???
so geht es nicht:$mpuser_sql !="" && $mppass_sql !=""
In der Datenbank dürfen keine leeren Datansätze stehen; dafür musst Du sorgen.
Und als zusätzliche Hürde überprüft man dann noch die Anmeldeparameter bei der Anmeldung. Selbst wenn dann mal ein leerer Datensatz in die Tabelle gerutscht sein sollte (was ja schon ein schwerer Fehler ist) kann dann keine Abfrage darauf gemacht werden.
if (isset($_POST['mpguest'] and isset($_POST['mpdoor']))
{
$mpguest = trim(stripslashes($_POST['mpguest']));
$mpdoor = trim(stripslashes($_POST['mpdoor']));
}
else
{
## Fehlermeldung, dass was fehlt
exit;
}
if((strlen($mpguest)==0) or (strlen($mpdoor)==0))
{
## Fehlermeldung, dass was fehlt
exit;
}
## und hier dann so weiter, wie vorhin beschrieben.
## MySQL_escape_string() nicht vergessen!
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
ich muss ja eigentlich nur wissen ob $mpuser_sql und $mppass_sql
leer sind aber wie schreibe ich das in die abfrage???
so geht es nicht:$mpuser_sql !="" && $mppass_sql !=""
In der Datenbank dürfen keine leeren Datansätze stehen; dafür musst Du sorgen.
Und als zusätzliche Hürde überprüft man dann noch die Anmeldeparameter bei der Anmeldung. Selbst wenn dann mal ein leerer Datensatz in die Tabelle gerutscht sein sollte (was ja schon ein schwerer Fehler ist) kann dann keine Abfrage darauf gemacht werden.if (isset($_POST['mpguest'] and isset($_POST['mpdoor']))
{
$mpguest = trim(stripslashes($_POST['mpguest']));
$mpdoor = trim(stripslashes($_POST['mpdoor']));
}
else
{
## Fehlermeldung, dass was fehlt
exit;
}if((strlen($mpguest)==0) or (strlen($mpdoor)==0))
{
## Fehlermeldung, dass was fehlt
exit;
}## und hier dann so weiter, wie vorhin beschrieben.
## MySQL_escape_string() nicht vergessen!Harzliche Grüße aus http://www.annerschbarrich.de
Tom
danke schön vielen vielen dank
kann ich hier sowas schreiben??
if($select_log and (mysql_num_rows($select_log)==1))
{
session_start();
$_SESSION['sess_id'] = session_id();
$_SESSION['pass'] = $mppass_sql;
$_SESSION['login'] = time();
$query ='1';
----> $_SESSION['query'] = $query;
}
if ($_SESSION['query']=='1')
{
echo"passwortgeschützter bereich"
}
geht das so oder ist das schlecht?
Hello,
<?
## wenn get_magic_quotes_gpc == true ist, stipslashes verwenden,
## aber auf jeden Fall die Escapes für MySQL durchführen:
$mpguest = mysql_escape_string(stripslashes($_POST['mpguest']));
$mpdoor = (stripslashes($_POST['mpdoor']));
## dann benötigt man nicht vorher die mysql_escape_string-Funktion...
$mppass = md5($mpdoor);
$select_log = mysql_query("select * from mp_master where mpuser='$mpguest'
and mppass = '$mppass' ");
if($select_log and (mysql_num_rows($select_log)==1))
{
session_start();
$_SESSION['sess_id'] = session_id();
$_SESSION['pass'] = $mppass_sql;
$_SESSION['login'] = time();
}
So ungefähr geht das auch. Man sucht einen Datensatz, bei dem Logiiname und Passwort zueienander passen. Es muss genau einen geben. Das setze natürlich voraus, dass es den Anmeldenamen nicht mehrfach in der Tabelle gibt.
Außerdem solltst Du sesseio_register() und seine Brüder nicht mehr verwenden, sondern die Direkzuweisung an ein Element des Array $_SESSION vornehmen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
<?
## wenn get_magic_quotes_gpc == true ist, stipslashes verwenden,
## aber auf jeden Fall die Escapes für MySQL durchführen:$mpguest = mysql_escape_string(stripslashes($_POST['mpguest']));
$mpdoor = (stripslashes($_POST['mpdoor']));## dann benötigt man nicht vorher die mysql_escape_string-Funktion...
$mppass = md5($mpdoor);$select_log = mysql_query("select * from mp_master where mpuser='$mpguest'
and mppass = '$mppass' ");if($select_log and (mysql_num_rows($select_log)==1))
{
session_start();
$_SESSION['sess_id'] = session_id();
$_SESSION['pass'] = $mppass_sql;
$_SESSION['login'] = time();
}So ungefähr geht das auch. Man sucht einen Datensatz, bei dem Logiiname und Passwort zueienander passen. Es muss genau einen geben. Das setze natürlich voraus, dass es den Anmeldenamen nicht mehrfach in der Tabelle gibt.
Außerdem solltst Du sesseio_register() und seine Brüder nicht mehr verwenden, sondern die Direkzuweisung an ein Element des Array $_SESSION vornehmen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
coool danke....
und wie kann ich jetzt quasi auf den nachfolgenden seiten prüfen ob er noch eingeloggt ist?
damit ich quasi diese abfrage nicht auf jeder seite schreiben muss??
if($mppass_sql == ???)
{
echo $content;
}
oder wie mache ich das jetzt?
und wozu brauch ich das?
$_SESSION['login'] = time();
Hello,
if($select_log and (mysql_num_rows($select_log)==1))
{
session_start();
$_SESSION['sess_id'] = session_id();
$_SESSION['pass'] = $mppass_sql;
$_SESSION['login'] = time(); ## das sollte man vorher in eine Variable
$_SESSION['lastclick'] = time(); ## packen, damit auch in beiden dasselbe drinsteht
}
So ungefähr geht das auch. Man sucht einen Datensatz, bei dem Logiiname und Passwort zueienander passen. Es muss genau einen geben. Das setze natürlich voraus, dass es den Anmeldenamen nicht mehrfach in der Tabelle gibt.
coool danke....
bitte.
und wie kann ich jetzt quasi auf den nachfolgenden seiten prüfen ob er noch eingeloggt ist?
damit ich quasi diese abfrage nicht auf jeder seite schreiben muss??
Du prüfst als erstes, ob ein Cookie für session_name() bzw den Sessionnamen, den Du benutzt gesendet wurde
$sessionnname = ... ;
if (isset($_COOKIE[$sessionname]) and strlen($_COOKIE[$sessionname]==32)
{
session_start();
}
## von hier ab sind die Sessionvraiablen vorhanden
if (isset($_SESSION['login']) and ($_SESSION['login'] > 0)) ## ist er überhaupt angemeldet?
{
## hier kann man dann noch prüfen, wie lange der Surfer schon angemeldet ist.
if (isset($_SESSION['lastclick'])
and ($_SESSION['lastclick']-($_SESSION['login']) <= MAXWAIT))
{
## alles OK
$_SESSION['lastclick'] = time();
## weitermachen lassen
}
else
{
## Session zwangslöschen und
## Neuanmeldung anfordern.
}
}
Mal Dir auf jeden fall ein Bild, was wann zu prüfen ist in welcher Reihenfolge.
Es empfiehlt sich aber, die Rechte in der DB jedes Mal zu prüfen. Dann kann man die nämlich auch während einer Session des Users ändern und beim nächsten Click gelten diese bereits.
Also müsstest Du die Verfahren noch etwas modifizieren.
Außerdem solltest Du dich entscheiden, ob Du Cookies vorschreiben willst. Sonst wäre es ja Quatsch, danach zu Fragen. Ich würde das aber empfehlen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom