• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

if->session - Problem

Status
Für weitere Antworten geschlossen.

Mars@Gera

Mitglied
Hy, sorry aber ich verzweifel gerade an einer Kleinigkeit, die in einem anderen Projekt von mir Reibungslos verläuft.

- Formualr->zum einloggen->sind eigegebene Daten richtig, so fülle Session mit 1 wenn nicht mit 0.

- ist Sessioninhalt == 1 -->index.php wenn nicht --> admin.php(einloggen)

- Überprüfung auf index.php: ist Sessioninhalt !== 1 -->admin.php

Code:
PHP:
<?php
//hier ein auszug aus der Datei
if($user_name !== $row->user_name AND $user_pass !== $row->user_pass){
                $group = 0;
                echo "<center><font color=\"red\"><b>Es ist ein Fehler aufgetreten:</b></font><br />Der Username oder das Passwort ist leer oder unbekannt!</center>";
        }elseif($user_name === $row->user_name && $user_pass === $row->user_pass){
                                        
                $group = "1";
                                
                //Leitet weiter in den Adminbereich, wenn die UserGruppe stimmt
                if (isset($_SESSION['group']) !== "1"){
                         header("Location:admin.php");
                }else{
                         header("Location:index.php");
                }
        }
?>

Überprüfung auf index.php
PHP:
<?php
if($_SESSION["group"] !== 1){
    header('Location:admin.php');
}else{
?>

Könnte mir jemand helfen?

MfG Marcel
 
Hallo,

PHP:
if (isset($_SESSION['group']) !== "1")
Also meines Wissens gibt isset immer einen boolschen Wert zurück, kann also niemals (gerade bei !==, weil bitweise oder wie man das noch gleich nennt) gleich dem String "1" sein. Deine If-Clause kann also nicht unwahr werden.

Ich hoffe ich konnte dir helfen - du hast nämlich auch gar nicht so richtig geschrieben, was nicht funktioniert :)

Gruß
Voodoo
 
Also, funtioniert es wenn, du das isset wegnimmst, oder nicht?

Außerdem sehe ich irgendwie die Stelle, an der du $_SESSION['group'] überhaupt mal setzt, nicht.

Setzt mal error_report auf e_all. Dann kommt vermutlich "unknown offset 'group'" oder so.

Ich würde es eher irgendwie so machen:
PHP:
<?php
if ( $user_name === $row->user_name && $user_pass === $row->user_pass ) {
    $_SESSION['group'] = "1";    
    header("Location:index.php");
} else {
    $_SESSION['group'] = "0";
    echo "<center><font color=\"red\"><b>Es ist ein Fehler aufgetreten:</b></font><br />Der Username oder das Passwort ist leer oder unbekannt!</center>";
} 
?>
Dann noch eine Überprüfung in der index.php
PHP:
if($_SESSION["group"] !== 1)
    header('Location:admin.php');
und es sollte funktionieren.
Natürlich musst du in jeder Datei die Session starten.

Ach ja, und nach dem HTTP-Protokoll muss Location eigentlich einen absoluten Pfad beinhalten.

Gruß
Voodoo
 
Wieso macht ihr

PHP:
if(Variable !== Bedienung)
und
PHP:
if(Variable === Bedienung)
?

Das ist doch jeweils ein = zu viel? :O
 
=== oder !== überprüft zusätzlich auch noch den Typ.

Code:
(true == 1)
ergibt true, weil true auch als 1 interpretiert wird, aber

Code:
(true === 1)
ergibt false, weil true vom Typ Boolean ist und 1 vom Typ Integer.
 
Zuletzt bearbeitet:
Ich muss jetzt auch noch mal eine Offtopic-Frage einwerfen.
Wozu nutzt man das denn? Ich mein, ich habe doch eigentlich keinen Grund integer und boolean miteinander zu vergleichen.
Und wenn ich eine Zehl ausversehen als String deklariert hab freue ich mich eigentlich eher, wenn es trotzdem klappt. Also wozu konkret brauche ich === ?
 
das macht man, um sicher zu stellen, dass man äpfel nicht versehentlich mit birnen vergleicht, insbesondere dann nicht, wenn man z.b. ein false erwartet oder prüft, da ein vergleich von string und integer immer false zurück gibt.

oftmals werden informationen aus externen daten ausgelesen. dann wird manchmal mit 0, manchmal mit '0' belegt (z.b. wenn da ein \r oder \n angehängt ist) . das ist ein wichtiger unterschied.
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben