Jnnbo: So, seid ihr damit nun zufrieden?

Beitrag lesen

Hallo Jörg,

session_start();
$_SESSION['user_name']=$benutzername; # woher der Benutzername auch immer kommt!
foreach ($arGruppen as $strGruppe) {  # Woher das Array mit den Gruppennamen
                                      # auch immer kommt!
  if ( user_in_group($benutzername, $strGruppe) ) # Die Funktion user_in_group musst Du
                                                  # selbst schreiben!
    $_SESSION['groups'][$strGruppe]=true;
  }
}

und dann einfach nur die Session abfragst um unötige und langsame Datenbankzugriffe zu vermeiden:

<?php
session_start() # fehlt bei Dir!
$host = $_SERVER["HTTP_HOST"];
$uri  = rtrim(dirname(htmlspecialchars($_SERVER["PHP_SELF"])), "/\\"); 

 if ( empty($_SESSION['user_name']) ) {
 //Falls: nicht eingeloggt
         header('Location: http://$host$uri/login');
         exit; #deklaratorisch. Hier soll ja auch nichts passieren - oder? 
 } else {
 //Fall: eingeloggt
         if (! empty($_SESSION['groups']['mitabeiter']) ) {
         #Fall: eingeloggt und Mitarbeiter:
                  header('Location: http://$host$uri/index');
                  exit; #deklaratorisch. Hier soll ja auch nichts passieren - oder? 
         } else {
                  #Fall: eingeloggt und kein mitarbeiter:
                  #whatever
         }
}
?>

nein, der Session Start fehlt nicht, der liegt nur in einer anderen Datei, deshalb ich den nicht mit kopiert. Ich binde diesen so ein:

<?php 
include_once 'inc/kopf.php';
?>

In dieser Datei steht dann dieses:

ob_start();
session_start();
require_once 'inc/zugangsdaten.php';
require_once 'include/config.php';
require_once 'include/functions/uebersicht.php';
require_once 'include/class/upload.class.php';
require_once 'include/lib/Swift-5.0.3/lib/swift_required.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);

Was ich nicht verstehe, ich habe ja schon ein paar User Funktionen, diese sehe so aus:

	function isUserLoggedIn($mysqli) {
        $stmt = $mysqli->prepare("SELECT * FROM web_users WHERE user_session=?");
	$stmt->bind_param("s", session_id());
        $stmt->execute();
        $stmt->store_result();

        if($stmt->num_rows() === 1) {
            return true;
        } else {
            return false;    
        }
    }
	

    function login($mysqli, $userMail, $pw) {
        $stmt = $mysqli->prepare("SELECT user_id FROM web_users WHERE user_nickname=? AND user_passwort=? AND user_aktiv=?");
		$ak = 1; 
        $stmt->bind_param("sss", $userMail, $pw, $ak);
        $stmt->execute();
        $stmt->store_result();

		if($stmt->num_rows() === 1) {
            $stmt = $mysqli->prepare("Update web_users SET user_session=?, user_login=now() WHERE user_nickname=? AND user_passwort=?");
            $stmt->bind_param("ssi", session_id(), $userMail, $pw);
            $stmt->execute();
            
            return true;
        } else {
            return false;
        }    
    }
	
	
	function userDaten($mysqli, $id) {
		$stmt = $mysqli->prepare("SELECT user_type, user_nickname, user_login, ud_name, ud_vorname 
			FROM web_users 
			LEFT JOIN web_users_detail ON web_users_detail.ud_Uid = web_users.user_code 
			WHERE user_session=?");
		$stmt->bind_param("s", session_id());
		$stmt->execute();
		$stmt->bind_result($user_type, $user_nickname, $user_login, $ud_name, $ud_vorname);

		$stmt->fetch();
	 	
		$userDaten = array( 
					'user_type' 		=> $user_type,
					'user_nickname'		=> $user_nickname,
					'user_login'		=> $user_login,
					'ud_name'		=> $ud_name,
					'ud_vorname' 		=> $ud_vorname 
				);
		
		return (object)$userDaten;
	}

Wenn ich jetzt alles auf Session umstellen würde dann müsste ich ja ALLE Scripe von mir wieder anpassen und dieses sind jetzt knapp 100 Dateien, die Zeit kann ich mir wirklich sparen?

Den Login und die Berechtigung prüfe ich ab jetzt so:

$host = $_SERVER["HTTP_HOST"];
$uri  = rtrim(dirname(htmlspecialchars($_SERVER["PHP_SELF"])), "/\\");

if(isUserLoggedIn($mysqli) === FALSE) {
        //Fall: nicht eingeloggt
        header('Location: http://$host$uri/login');
} else {
        //Fall: eingeloggt
        $object = userDaten($mysqli, session_id());

        if ($object->user_type == 'mitarbeiter') {
                 //Fall: ...als Mitarbeiter
                 header('Location: http://$host$uri/index');
        } 
}
0 111

Userberechtigung

Jnnbo
  • php
  1. 0
    Matthias Apsel
  2. 0
    Sven Rautenberg
    1. 0
      Jnnbo
      1. 1
        Sven Rautenberg
        1. 0
          Jnnbo
          1. 0
            Sven Rautenberg
      2. 0
        Jörg Reinholz
        1. 0
          Jnnbo
          1. 3
            Jörg Reinholz
            1. 0

              THX aber ...

              Jörg Reinholz
  3. 0
    Jörg Reinholz
    1. 0
      Jnnbo
      1. 1
        Camping_RIDER
        1. 0
          Jnnbo
          1. 0
            robertroth
            1. 0
              Jnnbo
              1. 0
                robertroth
            2. 0
              Camping_RIDER
          2. 0
            Camping_RIDER
        2. 0
          Sven Rautenberg
          1. 0
            Camping_RIDER
            1. 0
              Sven Rautenberg
              1. 0
                Camping_RIDER
        3. 0

          Frage zu IF / ELSEIF

          Jnnbo
          1. 1
            dedlfix
            1. 0
              Tabellenkalk
              1. 0
                dedlfix
          2. 0
            Camping_RIDER
            1. 0
              Jnnbo
              1. 1
                Camping_RIDER
                1. 0
                  Jnnbo
              2. 0
                MudGuard
                1. 0

                  Ich mach das nicht beruflich!

                  Jnnbo
                  1. 0
                    Jörg Reinholz
              3. 0
                Jörg Reinholz
            2. 0

              Anmerkung / Fehler

              Camping_RIDER
              • php
              • zur info
              1. 0
                Jnnbo
                1. 0
                  Camping_RIDER
                  • menschelei
                  • php
                  • zur info
  4. 0
    robertroth
    1. 0
      Jnnbo
      1. 1
        robertroth
        1. 0
          Jnnbo
          1. 3
            Sven Rautenberg
        2. 0
          Camping_RIDER
          1. 0
            Jnnbo
            1. 0
              Camping_RIDER
            2. 0
              Auge
              • https
              1. -1
                Jnnbo
                1. 1
                  Auge
                  • https
                  • meinung
                  1. 0
                    Jnnbo
                    1. 1
                      Der Martin
                      1. 0
                        Tabellenkalk
                        • meinung
                      2. 1
                        robertroth
                        1. 1
                          Der Martin
              2. 0
                Camping_RIDER
                1. 0
                  Auge
                  1. 0
                    Camping_RIDER
      2. 1
        Der Martin
        • https
        • php
        1. 0
          Sven Rautenberg
          1. 1
            Der Martin
        2. 1
          robertroth
          1. 0
            Camping_RIDER
          2. 1
            Der Martin
            1. 0
              robertroth
    2. 0
      Camping_RIDER
      1. -1
        robertroth
        1. 0
          Jnnbo
          1. 1
            robertroth
        2. 0
          Sven Rautenberg
          1. 0
            robertroth
          2. 0
            robertroth
            1. 0
              Sven Rautenberg
              1. 0
                Sven Rautenberg
                1. 0
                  robertroth
                  • https
                  1. 0
                    Sven Rautenberg
          3. 0
            MudGuard
        3. 0
          Camping_RIDER
        4. 0

          Bewertung

          robertroth
          • menschelei
          • zu diesem forum
      2. 0
        Jörg Reinholz
        1. 0
          Sven Rautenberg
          1. 0
            Jörg Reinholz
        2. 0
          Camping_RIDER
  5. 1

    Meine Meinung zu dieser Diskussion

    Jnnbo
    • zu diesem forum
    1. 0

      Meine Meinung zu der Diskussion

      robertroth
      1. 0
        Jnnbo
        1. 1
          Tabellenkalk
          1. -1
            Jnnbo
            1. 1

              Professionelles Arbeiten

              Camping_RIDER
            2. 1
              Jörg Reinholz
              1. 0
                Jnnbo
                1. 1
                  Jörg Reinholz
    2. 4

      Meine Meinung zu der Diskussion

      Camping_RIDER
      • meinung
      • zu diesem forum
  6. -1
    Jörg Reinholz
    1. 0
      Camping_RIDER
      1. 0
        Jörg Reinholz
        1. 0
          Camping_RIDER
          • meinung
          • zu diesem forum
          1. 1
            Jörg Reinholz
            1. 0
              Camping_RIDER
  7. 0

    So, seid ihr damit nun zufrieden?

    Jnnbo
    1. 0
      Jörg Reinholz
      1. 0
        Jnnbo
        1. 0
          Jörg Reinholz
          1. 0

            Links

            Camping_RIDER
            • meinung
            • menschelei
    2. 3
      dedlfix
      1. 0
        Jnnbo
        1. 2
          Jörg Reinholz
          1. 0
            Jnnbo
            1. 0
              Jörg Reinholz
              1. 0
                Tabellenkalk
        2. 0
          dedlfix