Ich bin gerade dabei, ein Login auf Datenbank Basis zu versuchen!
Leider will das nicht ganz so, wie ich will!
[php]$sql = „SELECT login FROM user WHERE login = ‚0‘“;
$result = mysql_query($sql);
while($row = mysql_fetch_object($result)){
if($row->login == 0){
echo „Sie haben keine Berechtigung diese Seite zu sehen!“;
}
if($row->login == 1) {
echo „Herzlich Willkommen im Internen Bereich!“;
echo „<form action="intern.php" method="get"><input type="submit" name="logout" value="Logout">“;
}
}[/php]Wieso funktioniert denn nicht die if´s in der while-schleife?
MfG Marcel
Edit:
Oki 1. Fehler entdeckt, die 2. Abfrage müsste != 0 sein! Trotzdem geht es nicht!
Mit dem kleinen Schnipsel blick ich leider nicht durch. Wenn ich nicht den vollen Quelltext inkl. dem Inhalt der DB kenne, dann kann ich dir nur schlecht helfen…
[PHP]$sql = " CREATE TABLE user(
id int( 10 ) NOT NULL AUTO_INCREMENT ,
user text NOT NULL,
passwort text NOT NULL,
email text NOT NULL,
name text NOT NULL,
user_group varchar(10) NOT NULL default ‚user‘,
login varchar(10) NOT NULL default ‚0‘,
PRIMARY KEY (id)
) ";[/PHP]
CREATE TABLE user (
id int( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,
user VARCHAR(20) NOT NULL,
passwort CHAR(40) /*SHA1*/ NOT NULL, /*bei MD5 währe anstadt der 40 eine 32 einzutragen*/
email VARCHAR(100) NOT NULL,
name 50 NOT NULL,
user_group VARCHAR(10) NOT NULL default 'user',
login INT(1) NOT NULL default '0'
)
also usernamen auf 20 zeichen zu begrenzen ist wohl angebracht… länger währe eher als hack versuch einzuordnen
passwort verschlüsselt hat natürlich immer ne feste länge also 40 für SHA1 ^^
emails da sind wa mal groszügig und lassen platz für 100 zeichen
name selbst bei zweitnamen wird wohl kaum über 50 zeichen gehen
und login sieht so aus als wenn da immer nur 1 oder 2 raus kommt… also INT(1)
ansonsten berichtige mich bitte ^^
//Edit: zu deinem code… du liest alle aus deren login status nicht 0 ist und prüfst dann ob der llogin status 1 oder 0 ist… na merkst was?
Gut habe die WHERE BEdingung hinausgemacht, sowie die 2. if Abfrage zu == 1 umgeändert!
Es wäre bestimmt auch besser mit Cookie und/oder Sessionen zu arbeiten oder, hatte da schon mal angefangen, ging aber nicht?
Wenn ich jetzt eines der beiden machen sollte, was für Werte wäre optimal in einem Cookie oder Session zu speichern?
Ok dann speicher ich die id des Users und frage dann auf der Seite ab, ob in der Datenbank die Spalte login des jeweiligen Users auf 1 steht, ok, danke so werde ich es machen!
um ehrlich zu sein, ich verstehe überhaupt nicht, auf was da eigentlich getetstet wird.
ein normaler vorgang ist doch der:
user loggt sich ein, ist user und passwort korrekt, login ok, sonst login nein.
eine abfrage müsste also (einmalig) auf username und zugehöriges passwort erfolgen. bei einem korrekten login, setzt man $_SESSION[‚login‘] = 1, sonst auf 0.
habe alle deine scripote ein session_start() am anfang kannst du immer auf die variable hin prüfen und musst deine datenbank nicht permanent quälen.
ein löschen der session würde ich nicht machen, da eine gelöschte session unter umständen wieder aufgenommen werden kann. setz deine sessions variable lieber von anfang an auf null für ein nicht login und auf einen anderen wert für login ok. und darauf prüfst du dann.