Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

Status Überprüfen via Session

Diskussion: Status Überprüfen via Session im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo zusammen, ich hab jetz schon gegoggelt und verschiedene Foren gelesen, jedoch keinen richtigen Lösungsansatz bzw. Denkanstoss bekommen. Mein ...

Antwort
Alt 13.04.09, 17:22   #1 (permalink)
 
Registriert seit: 25.05.08
Nohos Leistung: Facit NTK
Likes: 0
Status Überprüfen via Session

Anzeige

Hallo zusammen,

ich hab jetz schon gegoggelt und verschiedene Foren gelesen, jedoch keinen richtigen Lösungsansatz bzw. Denkanstoss bekommen. Mein problem besteht darin das sich bei mir die User Registrieren können und nach der Registrierung ein AktivierungsLink verschickt wird an die vom user angegebene E-Mail Adresse, funktioniert alles soweit auch wunderbar.

Sobald der user dann den Link anklickt den er auf seine E-Mail Adresse geschickt bekommt wird in einer MySQL Datenbank ein Feld mit einer 1 gefüllt.

Nun habe ich ein Problem mit meinem Login, ich kriege es nicht gebacken das sich der User erst einloggen kann nach dem er seinen Account Aktiviert hat.

Ich speichere das ganze in Sessions ( Username,Password und den Status), das sieht wie folgt aus:

PHP-Code:
$_SESSION['Username'] = $username;
$_SESSION['Password'] = $passwort;
$_SESSION['Status'] = $status
Die Daten für die Sessions hole ich dann via Select aus der Datenbank und speichere Sie in einer Variablen wie man oben schön zu sehen bekommt.

Auf der geschützen Seite Frage ich die Sessions dann via

PHP-Code:
if(!isset($_SESSION['Username']) && !isset($_SESSION['Password'])){echo 'Sorry aber Sie müssen sich erst einloggen bevor Sie zutritt zu dieser Seite erhalten';exit;}
if(!isset(
$_SESSION['Status'])=='0'){echo 'Sorry aber bitte Aktivier zu erst deinen Account';exit;} 
ab. Das ganze verwirrt mich etwas da das ganze Script funktioniert, bis eben auf die $_SESSION['Status'] Abfrage.

Was mache ich falsch ?
Nohos ist offline   Mit Zitat antworten
Alt 13.04.09, 19:02   #2 (permalink)
 
Benutzerbild von Eydeet
 
Registriert seit: 14.04.06
Eydeet Leistung: Facit NTK
Likes: 4
Standard

Soll das hier
Code:
if(!isset($_SESSION['Status'])=='0'){echo 'Sorry aber bitte Aktivier zu erst deinen Account';exit;}
überprüfen, ob der Status 0 ist?

Ich würde das eher so schreiben:
Code:
if ($_SESSION['Status'] == 0) {
    echo 'Sorry aber bitte Aktivier zu erst deinen Account';
    exit;
}
Falls du die Null wirklich als String speichern willst, musst du sie natürlich in Anführungszeichen schreiben. Das, was du da geschrieben hast zeigt mal wieder, wie merkwürdig das Typensystem von PHP ist.

Du zeigst mit deinem Code nur die Meldung an, wenn der Status nicht gesetzt ist, Name und Passwort aber schon.

Übrigens würden Zeilenumbrüche auch dir selbst dabei helfen, deinen Code später noch einmal zu verstehen und solche Fehler zu finden.
Eydeet ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 13.04.09, 19:12   #3 (permalink)
 
Registriert seit: 08.01.09
geeko Leistung: Facit NTK
Likes: 0
Standard

Moin,

der Fehler steckt in der Prüfung:

PHP-Code:
if(!isset($_SESSION['Status'])=='0'
Hierbei wird nämlich nur geprüft ob das Ergebnis von !isset() false ergibt. (PHP interpretiert 0 beim Vergleich mit boolean als false.)
Um zu prüfen ob $status nicht gesetzt wurde oder den Wert 0 enthält, müsste es so aussehen:

PHP-Code:
if(!isset($_SESSION['Status']) || $_SESSION['Status'] == 0
MfG

Edit: to late ...
geeko ist offline   Mit Zitat antworten
Alt 13.04.09, 19:20   #4 (permalink)
Themenstarter
 
Registriert seit: 25.05.08
Nohos Leistung: Facit NTK
Likes: 0
Standard

Grüße euch,

habs jetz mit beiden Varianten Probiert, funktioniert jedoch beides nicht.

ich denke mal das ich vielleicht doch einen Fehler in der Select Abfrage drine habe, obwohl er mir trotz mysql_error() nichts ausgibt an Fehlern.

Danke auf jeden Fall mal werde jetz nochmal die login.php überarbeiten

MfG
Nohos
Nohos ist offline   Mit Zitat antworten
Alt 13.04.09, 20:02   #5 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 77
Standard

Du hast den Status in der gleichen Tabelle wie Benutzername und Passwort?
da teste doch einfach, ob ein Datensatz mit gegebenem Benutzername und Passwort existiert und lass dir zusätzlich auch den Status im SELECT mit zurückgeben (btw: du könntest mal deine komplette Query posten, damit wir diese als Fehlerquelle erstmal ausschließen können....)
und nachdem du den Datensatz zurück bekommen hast, testest du das Status-Feld und nur wenn das 1 ist, wird eingeloggt und ansonsten kommt die Meldung "bitte account erst aktivieren"....
beavisbee ist offline   Mit Zitat antworten
Alt 14.04.09, 00:28   #6 (permalink)
Themenstarter
 
Registriert seit: 25.05.08
Nohos Leistung: Facit NTK
Likes: 0
Standard

Nabnd,

hab das jetz anders gelöst, hab den ganzen Abend mit mysql_result() rumprobiert aber irgendwie nich gebacken gekriegt.

Hab jetz den Inhalt der Spalte auf Aktiv oder eben ohne Inhalt gesetzt, also weg von den Zahlen, jetz funktionierts wunderbar.

Danke für die Antworten

MfG
Nohos
Nohos ist offline   Mit Zitat antworten
Alt 14.04.09, 04:40   #7 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 77
Standard

also ganz ehrlich: wenn ich jetzt sowas von Notlösungen hör bei so doch recht simplen Dingen, dann bekomm ich Bauchschmerzen, wenn ich daran denke, dass du die Seite dann vielleicht mal online bringen willst.... da sind doch Scheunentore schon vorprogrammiert?! Fängst du wenigstens alle User-Eingaben so ab, dass man sich nicht einfach via SQL-Injections einloggen kann?

Poste doch einfach mal bissl Code, um zu sehen, wie du es gelöst hast - vielleicht lassen dann meine Magenkrämpfe ein wenig nach (oder werden noch schlimmer? man weiß es nicht...)

ich kann nur immer wieder den wunderschönen Satz zitieren, den metax. hier im Forum mal geschrieben hat:
Zitat:
PHP zu Programmieren ist, wie auf einem Drahtseil zu balancieren, während man eine Stange Dynamit mit brennender Lunte in der Hand hält.
beavisbee ist offline   Mit Zitat antworten
Alt 14.04.09, 10:59   #8 (permalink)
Themenstarter
 
Registriert seit: 25.05.08
Nohos Leistung: Facit NTK
Likes: 0
Standard

mh nagut dann will ich mal ein bisschen code präsentieren

PHP-Code:
if (isset($_POST['input'])){$input $_POST['input'];}
if (isset(
$input['name_login']) && isset($input['pass_login']))
{
    
$pass $input['pass_login'];
    
$hash '2%&$/9862fgncqit#+-ßp#-.';
    
$saltedhash crypt($pass,$hash);
    
$username stripslashes(mysql_real_escape_string($input['name_login']));
    
$passwort sha1($saltedhash);
    
    
$abfrage "SELECT Username, Password, Status, Rang FROM User WHERE Username LIKE '".$username."' AND Password LIKE '".$passwort."' LIMIT 1";
    
$ergebnis mysql_query($abfrage) or die(mysql_error());
    
$row mysql_fetch_object($ergebnis);
    if(
$row->Password == $passwort && $row->Username == $username)
        {
            
$_SESSION['Username'] = $username;
            
$_SESSION['Password'] = $passwort;
            
$_SESSION['Status'] = $row->Status;
            
$_SESSION['Rang'] = $row->Rang;
            echo 
'Login erfolgreich. <br /><br /> <a href="./logged_in/">Bitte klicken Sie Hier falls die Automatische weiterleitung nicht funktionert.</a>';
        }
    else
        {
            echo 
'Benutzername und/oder Passwort sind falsch.';
        }

das ist jetz die login.php, ich denke mal erklären brauch ich sie nicht oder ? :-)
Nohos ist offline   Mit Zitat antworten
Alt 23.04.09, 18:27   #9 (permalink)
Member of Honour
 
Registriert seit: 02.10.01
Indi Leistung: Z3
Likes: 0
Standard

Du überprüfst da zwar Passwort und Usernamen zwei Mal, dir ist aber schon klar, was LIKE in der MySQL-Abfrage eigentlich macht oder?
Indi ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » Status Überprüfen via Session
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Session sichern Lilu (Web-) Design und webbasierte Sprachen 4 20.06.07 17:29
Online Status überprüfen dapartiou Applikationen 11 10.10.06 19:38
Session Hacken ? Dragon2003 (Web-) Design und webbasierte Sprachen 11 14.09.05 13:06
PHP, Dateiexistenz überprüfen Hirnbreaker (Web-) Design und webbasierte Sprachen 10 24.05.05 23:51
ICQ-Status in Homepage einfügen,bzw. On/Offline Status SiRRiuS (Web-) Design und webbasierte Sprachen 5 24.03.02 12:59


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