Denkfehler ?? PHP $_SESSION

Denkfehler ?? PHP $_SESSION | PSD-Tutorials.de

Erstellt von Kadey, 01.05.2019.

  1. Kadey

    Kadey Nicht mehr ganz neu hier

    Dabei seit:
    08.07.2009
    Beiträge:
    113
    Geschlecht:
    männlich
    Denkfehler ?? PHP $_SESSION
    Hallo zusammen,

    nach langer Zeit mal wieder eine Frage:

    Vorab...
    Ich habe mein Xampp in meinem lokalem Netzwerk zugänglich gemacht, sodass ich auch vom Laptop auf meine Anwendung zugreifen kann.

    Nun zur Frage:
    In meiner Anwendung habe ich ein Anmeldeformular....Daten werden aus Datenbank geholt und verglichen.
    Sodann speichere ich diese in einer Session.

    Wenn ich mich nun auf dem Hauptrechner anmelde und mir die Session ausgeben lasse, erhalte ich nur meine eigene Anmeldung, obwohl ich am Laptop auch mit einen anderen Benutzer & PW angemeldet bin. Aber auch am Laptop erscheint nur die eigene Anmeldung in der Session.
    Normalerweise müssten doch beide Benutzer in der Session sein oder sehe ich das falsch.

    Hier mal etwas Quellcode:
    PHP:
    1. <?php
    2. /* Vor Beenden der Session wieder aufnehmen */
    3.  
    4. require_once('db.php');
    5. require_once('bereich-kopf.inc.php');
    6.  
    7. $_SESSION['einloggen'] = array();
    8.  
    9. // Wenn einloggen gedrück, dann auf Inhalt prüfen.
    10. if ( isset($_POST['aktion']) and $_POST['aktion'] == 'einloggen' )
    11. {
    12.     if ( isset($_POST['name']) and trim($_POST['name']) != ''
    13.             and
    14.             isset($_POST['passwort']) and trim($_POST['passwort']) != ''
    15.        )
    16.     {
    17.         // Name und Passwort in Variable speichern, Whitespaces wieder entfernen
    18.         $name_formular = trim($_POST['name']);
    19.         $passwort_formular = trim($_POST['passwort']);
    20.        
    21.         // Datenbank anfragen
    22.         $zugang = $db->prepare("SELECT id, name, rechte
    23.                 FROM mitarbeiter WHERE name=? && passwort=? ");
    24.        
    25.         // Name und Passwort übergeben
    26.         $zugang->bind_param('ss',$name_formular, $passwort_formular);
    27.         $zugang->execute();
    28.         $zugang->bind_result($id, $name, $rechte);
    29.         while ($zugang->fetch()) {
    30.                 //echo "<li> $id $name $passwort, $rechte";
    31.        
    32.          //echo "<p>Treffer $name / $passwort: ". $zugang->num_rows ."</p>";
    33.         }
    34.        
    35.        
    36.         // Wenn mindestens 1 Datensatz übereinstimmt, dann Name und Nutzerrechte in Session speichern und weiterleiten an index.php
    37.         if (  $zugang->num_rows == 1 ) {
    38.             $_SESSION['einloggen']['id'] = $id;
    39.             $_SESSION['einloggen']['name'] = $name;
    40.             $_SESSION['einloggen']['rechte']   = $rechte;
    41.            
    42.             echo"<pre>";
    43.             print_r($_SESSION['einloggen']);
    44.             echo "</pre>";
    45.            
    46.         }
    47.         // Wenn nicht, richtige Zugangsdaten eingeben und Session zurücksetzen
    48.         else
    49.         {
    50.             echo "<p>Bitte korrekte Zugangsdaten eingeben!</p>";
    51.         }      
    52.     }
    53.  
    54. }
    55.  
    56.  
    57. ?>
     
    #1      
  2. TutKit

    TutKit Vollzugriff

    Vollzugriff auf sämtliche Inhalte für Photoshop, InDesign, Affinity, 3D, Video & Office

    Suchst du einen effektiven Weg, um deine Geschäftsideen aber auch persönlichen Kenntnisse zu fördern? Teste unsere Lösung mit Vollzugriff auf Tutorials und Vorlagen/Erweiterungen, die dich schneller zum Ziel bringen. Klicke jetzt hier und teste uns kostenlos!

  3. Kadey

    Kadey Nicht mehr ganz neu hier

    Dabei seit:
    08.07.2009
    Beiträge:
    113
    Geschlecht:
    männlich
    Denkfehler ?? PHP $_SESSION
    Grrrr....Denkfehler :)
     
    #2      
  4. Fugel

    Fugel rebmeM PSD Beta Team

    Dabei seit:
    28.02.2008
    Beiträge:
    756
    Geschlecht:
    männlich
    Ort:
    Freiberg
    Software:
    Netbeans, Photoshop CC, InDesign CC, Illustrator CC, Lightroom CC, Suitcase Fusion 6
    Kameratyp:
    Sony Alpha 6300
    Denkfehler ?? PHP $_SESSION
    Jeder Client hat seine eigene Session, somit ist es so genau richtig.
     
    #3      
  5. Curanai

    Curanai Aktives Mitglied

    Dabei seit:
    20.08.2011
    Beiträge:
    462
    Geschlecht:
    männlich
    Ort:
    Oldenburg
    Software:
    Notepad++, Brackets, HeidiSQL, CC, FL Studio, SEO PowerSuite, Rocksmith :D
    Kameratyp:
    Samsung S7 Edge :D
    Denkfehler ?? PHP $_SESSION
    Hi, darf ich als Alltagsbinäro einen winzigen Vorschlag einstreuen?

    Nehmen wir mal an, Deine Table in der Datenbank hat 50.000 User (rein fiktiv) und Du suchst quasi den einen - mit name und passwort. Jetzt loggst Du Dich ein - Du bist Teil dieser Table und hast die User-ID 1. Damit stehst Du gaaaanz oben. Dein SELECT rattert aber dennoch durch die 49.999 anderen, denn es könnte ja noch einer kommen. Also? Richtig: Begrenzer per Limit rein! Der ist eben nicht nur Begrenzer, sondern auch Abbrecher - wir reden also eigentlich über Performance.

    Ergänzend:
    Dann könnte man noch über "ticks" nachdenken - das hilft man dem MySQL Interpreter ein wenig sich schneller darauf einstellen zu können, was er da eigentlich machen bzw. nutzen soll. Setze also Datenbanken, Tables und Spalten - sofern nur MySQL - in "`" (ohne ").

    print_r() hat noch einen zweiten Parameter - versuche
    PHP:
    1. echo '<pre>' . print_r($_SESSION['einloggen'], true) . '</pre>';
    Bei größeren Queries solltest Du Dir angewöhnen, diese in eine eigene Variable zu schreiben und entsprechend zu strukturieren. So könnte es bspw. aussehen (Grund: spätere Wartung, Lesbarkeit usw.):
    PHP:
    1.  
    2. $select = 'SELECT
    3.  `id`,
    4.  `name`,
    5.  `rechte`
    6. FROM
    7.  `mitarbeiter`
    8. WHERE   `name`=? &&
    9.         `passwort`=?
    10. LIMIT 1;';
    11. $zugang = $db->prepare($select);
    12.  
    Vermeide noch so kleine Redundanz (hier: trim und isset()) - überarbeitet wäre das viel schlanker:
    PHP:
    1.  
    2. if (
    3.    isset($_POST['aktion'], $_POST['name'], $_POST['passwort']) &&
    4.    $_POST['aktion'] == 'einloggen'
    5. ) {
    6.    $name_formular      = trim($_POST['name']);
    7.    $passwort_formular  = trim($_POST['passwort']);
    8.  
    9.    if (
    10.      $name_formular != '' &&
    11.      $passwort_formular != ''
    12.    ) {
    13.      // ...
    14.    }
    15. }
    16.  
    Und ja, ich formatiere wirklich if-Anweisungen über mehrere Zeilen so - auch hier: Wartung, Lesbarkeit etc.

    Das mit while() musst Du überarbeiten - das geht hier nur, weil max. ein Datensatz zurückkommt. Es ist recht dreckig gemacht.

    Zuguterletzt: require_once! Der kann Sinn ergeben, dürfte in dem Fall aber eine Kanone auf einen Spatz sein. :D

    Schlag mich bitte nicht, ich baue abartig große Projekte. Selbst Dein' Einsatz von " oder ' bei Stringausgaben stößt bei mir auf keine Gegenliebe (hat was mit dem PHP-Interpreter zu tun). Es lässt sich überall Performance rauskitzeln und dann ist eine Applikation gestrafft, wartungsfreundlich und „fast as hell“! Je früher man sich daran gewöhnt und es macht, umso besser. Also ganz egal ob Hobby, Amateuer, Semi-Pro oder Pro ...

    Keine Bange, Du hast auch Dinge drin, die mir gefallen und schon dicht am PSR (Empfehlung zum Code-Schreiben) angelehnt sind. Dafür bekommste von mir einen Daumen hoch!

    Ich wünsche Dir aber dennoch weiterhin ganz viel Spaß beim Coding!
     
    #4      
    owieortho gefällt das.
Seobility SEO Tool
x
×
×