Geschützer Bereich

  • Hallo,


    ich habe ein PHP Login script gefunden und will mir da nun etwas modifizerien.


    Login.php



    geheim.php


    Kann ich nun nach der selben Art viele verschiedene Seiten erstellen auf denen man eingeloggt sein muss , ohne dass es Zwischenfälle gibt ??


    Bitte um Antwort und Hilfe


    MfG
    hundi

    Mit freundlichen Grüßen,
    hundi :thumbup:


    "Wuff!, Wuff!"
    hundi, 2017

  • Ok, vielen Dank schonmal.


    Ich befinde mich nun in meinem geschützen Bereich und logge mich aus.
    Ich ändere in der Adressleiste die URL in www.~~~.de/geheim.php und komme aber trozdem in den Bereich rein und habe vollen Zugriff..
    Ist meine Session von eben noch aktiv, oder warum komme ich ohne login dahin ?

    Mit freundlichen Grüßen,
    hundi :thumbup:


    "Wuff!, Wuff!"
    hundi, 2017

  • *hust* Logout ? ;)


    PHP
    <?php
    session_destroy();
    $host  = htmlspecialchars($_SERVER["HTTP_HOST"]);
    $uri   = rtrim(dirname(htmlspecialchars($_SERVER["PHP_SELF"])), "/\\");
    $extra = "eintragen.html";
    header("Location: http://$host$uri/$extra");
    ?>

    Mit freundlichen Grüßen,
    hundi :thumbup:


    "Wuff!, Wuff!"
    hundi, 2017

  • Ja, nun komme ich nichtmehr ohne Login auf die geheim.php .
    Aber ich will ja nun auf die geheim.php eingeloggt zugrifen können, auf eine geheim2.php und auf jegliche andere geschützen geheimseiten auch ohne mich bei jedem geheimseitenwechel neu einloggen zu müssen.


    Wie schaffe ich das ?

    Mit freundlichen Grüßen,
    hundi :thumbup:


    "Wuff!, Wuff!"
    hundi, 2017

  • Mal neben bei änder mal den Query bitte ab wer das gemacht hat sollte sich nochmal überlegen was LIKE macht.


    $abfrage = "SELECT username, passwort FROM `home` WHERE `username`='$username' "; zumal du auch den Benutzernamen escapen solltest mit
    mysql_real_escape_string($username); vor dem Query natürlich.


    Zum eigentlichen Problem du kannst mit $_SESSION['username'] = $username; beim login den Benutzernamen in einer Session packen. Dann in der geheim.php


    PHP
    session_start();
    if(isset($_SESSION['username'])) // abfragen ob diese Session gesetzt wurde und wenn nicht auf die Hauptseite oder wo du möchtest weiterleiten
    {
    
    
    }

  • Zum eigentlichen Problem du kannst mit $_SESSION['username'] = $username; beim login den Benutzernamen in einer Session packen. Dann in der geheim.php


    PHP
    session_start();
    if(isset($_SESSION['username'])) // abfragen ob diese Session gesetzt wurde und wenn nicht auf die Hauptseite oder wo du möchtest weiterleiten
    {
    
    
    }


    Habe ich doch gemacht in der geheim.php .
    Fals noch nicht gemerkt, ich habe den Code im 1. Post geschreiben...

    Mit freundlichen Grüßen,
    hundi :thumbup:


    "Wuff!, Wuff!"
    hundi, 2017

  • die geheim.php und Login.php habe ich nun wieder ein wenig überarbeitet doch ich komme immernoch uneingeloggt auf die geheimseite..


    Login.php



    Geheim.php

    Mit freundlichen Grüßen,
    hundi :thumbup:


    "Wuff!, Wuff!"
    hundi, 2017


  • Übrigens kleiner tipp:
    Mach dir ne index.php -> oben einmal session_start(); -> Andere seiten via require,$_GET & file_exists dann einbinden und dann sollte das mit den sessions auch richtig klappen

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Grundsätzlich sieht das bei mir immer gleich aus vom Aufbau her.
    Das schreibst du in die index.php:


    Und dann legst du einfach noch die Dateien login.php usw. an.


    Login.php füllst du dann einfach mit dem Login Formular, der Abfrage und dem Setzen der Session Variable aus.
    Die Seiten auf denen nur eingeloggte Nutzer zugriff haben sollen, sind schon "geschützt" wenn man diese über index.php aufruft, daher empfehle ich die in das Verzeichniss zu verschieben, auf dass man nicht im Web zugreifen kann. Kannst aber zur Sicherheit an den Kopf jeder Datei das einfügen:

    PHP
    <?php
    if(!(isset($_SESSION['loggedin']))){
       echo '<meta http-equiv="refresh" content="0; URL=/index.php">';
       exit;
    }
    ?>


    Gruß
    Tobi

  • [b]Erstell am besten die Datei auth.php


    Diese includest du halt mit

    Code
    include('auth.php');

    , das leitet dich weiter, wenn keine Loginsitzung besteht.

  • Ok, die Session "richtig gestartet" habe ich nun, aber wie zerstöre ich es nun auch richtig ?


    Ich bezweifel selbst, dass das mit zwei Zeilen so stimmt...


    logout.php

    PHP
    <?php
         session_destroy();
         header('Location: index.php');
    ?>

    Mit freundlichen Grüßen,
    hundi :thumbup:


    "Wuff!, Wuff!"
    hundi, 2017

  • Doch, genau richtig ;)


    Kann aber nicht sein, da ich immernoch auf den geschützen Bereich uneingeloggt komme, obwohl ich es nach Blu3scReeN Art gemacht habe..


    Ich habe bei meiner $_SESSION["loggedin"]; den eintrag !1! vorgenommen und mir auf der geheimseite per echo ausgeben lassen.
    Wenn ich die URL auf die geheimseite.php änder steht da immernoch das eingetragene und ich kann natürlich auf die seite zugreifen, ohne dass ich auf login.php umgeleitet werde...

    Mit freundlichen Grüßen,
    hundi :thumbup:


    "Wuff!, Wuff!"
    hundi, 2017

  • Ich habe nun auf jeder Seite mir alle Sessions anzeigen lassen mit

    PHP
    print_r($_SESSION);


    Und habe dannach auf jeder Seite die Sessions zersört, damit nichtsmehr da ist.


    Auf der Logout.php habe ich nun das Anwendungs-Bsp aus der PHP Manual genommen, dies funktioniert nun auch.


    Nun komme ich auf keine Geschütze Seite mehr.


    Vielen Dank PHP-Tobi und alle anderen, die mir auch geholfen haben :)

    Mit freundlichen Grüßen,
    hundi :thumbup:


    "Wuff!, Wuff!"
    hundi, 2017