Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

LDAP Login - mit Sessions oder mit Cookies?

Mitglied: Lousek

Lousek (Level 2) - Jetzt verbinden

09.02.2008, aktualisiert 18.10.2012, 4825 Aufrufe, 1 Kommentar

Hallo Forum.

Ich bastle gerade an einer Testseite herum.

Jetzt will ich ein Login über LDAP.

Also habe ich angefangen herumzubasteln, herausgekommen ist bis jetzt dies:

01.
function login_complete ($ldap_server)
02.
{
03.
      if((isset($_COOKIE['cookie_username']) AND ($_COOKIE['cookie_passwort']))) {
04.
		if (strpos($_COOKIE['cookie_username'], "@test.local") == false) {
05.
			$username = $_COOKIE['cookie_username']."@test.local";
06.
		} else {
07.
			$username = $_COOKIE['cookie_username'];
08.
		}
09.
                $passwort = $_COOKIE['cookie_passwort'];
10.
                $check_positive = 1;
11.
      } else {
12.
               if((isset($_POST['username']) OR ($_POST['passwort']))) {
13.
                         if(empty($_POST['username']) OR empty($_POST['passwort'])) {
14.
                                  $array["login_complete"] = "Bitte fuellen Sie alle Felder aus. <br>";
15.
                         } else {                             
16.
                                  if((isset($_POST['username']) AND ($_POST['passwort']))) {      
17.
					if (strpos($_POST['username'], "@test.local") == false) {
18.
					   $username = $_POST['username']."@test.local";
19.
					}
20.
					else {
21.
					   $username = $_POST['username'];
22.
					}
23.
                                            $passwort = $_POST['passwort'];
24.
                                            $check_positive = 1;
25.
                                  } 
26.
                          }
27.
                } else {
28.
                          $array["login_complete"] = "Sie sind nicht eingeloggt: ";      
29.
                }
30.
      }
31.
 
32.
 
33.
      
34.
            if($check_positive==1) {
35.
      //----------------------------------------Login und Bind----------------------------------------      
36.
      if (!($connect=@ldap_connect($ldap_server))) {
37.
            $array["login_complete"] = "Could not connect to ldap server<br>";
38.
      } else {
39.
      }
40.
      
41.
      // Needed for W2003 AD..
42.
      ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
43.
      ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
44.
      
45.
      if (!($bind=@ldap_bind($connect, $username, $passwort))) {
46.
            $array["login_complete"] = "Login oder Passwort falsch. <br>";
47.
      } else {
48.
            setcookie("cookie_passwort", $passwort, time()+(60));
49.
            setcookie("cookie_username", $username, time()+(60));
50.
            $array["login_check"] = true;
51.
      }         
52.
}
53.
            $array["username"] = $username;
54.
            $array["passwort"] = $passwort;
55.
            $array["connect"] = $connect;
56.
            return $array;
57.
}      
Und um einen Inhalt zu "sperren" wird das angegeben:

01.
$login = login_complete ($ldap_server);
02.
 
03.
$login_complete = $login["login_complete"];
04.
 
05.
$username = $login["username"];
06.
 
07.
$passwort = $login["passwort"];
08.
 
09.
$login_check = $login["login_check"];
10.
 
11.
$connect = $login["connect"];
12.
 
13.
if($login_check==true) {
14.
 
15.
//Inhalt anzeigen
16.
 
17.
}
Jetzt ist es hier ja so, das man sich eigentlich jedesmal, wenn man die Seite aktualisiert oder einen Link anklickt (von der eigenen Seite ) sich neu einloggt.
D.h., jedesmal wird ja den Benutzername und Kennwort übertragen --> ganze Seite in HTTPS.

Jetzt sorgt dies doch aber für unnötig Traffic, und unötiger Beanspruchung des LDAP's und Webservers.

Ist es sinnvoller, es über Sessions zu machen?

Und da auch noch eine Frage dazu:

Man sieht häufig auf einer Seite z.B. oben rechts das Anmeldeformular (vorausgesetzt man ist nicht angemolden).

Wie läuft das dort. Wenn die ganze Seite über HTTP ist, und man dort dann seinen Username + PW eingibt, wird der ja auch in Klartext übertragen, oder wie ist das?

Ach ja, als Beispiel kann man ja diese Seite nehmen ;)

Greetz,

Lousek
Mitglied: 29457
19.03.2008, aktualisiert 18.10.2012
hatte mal nen tuto darueber geschrieben
index.php
PHP-Code:

01.
<?
02.
//login script
03.
//session beginnen, immer ganze oben vor html Ausgabe!
04.
session_start();
05.
 
06.
//Passwort und Benutzername wird hier Manuell eingestellt
07.
//diese Daten musst du anpassen
08.
$user_name = "test";
09.
$user_pass = "123456";
10.
 
11.
//html ausgabe der head daten einer seite
12.
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
13.
<html>
14.
<head>
15.
<title>Login script</title>
16.
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
17.
</head>
18.
<body><h1>Login Script</h1>';
19.
 
20.
 
21.
//login Funktionen
22.
//post variablen einfach speichern
23.
$user = $_POST['user'];
24.
$pw = $_POST['pw'];
25.
 
26.
//nun kommen die if abfragen die das ganze relativ sicher machen
27.
if (isset($user, $pw))
28.
    {
29.
    if ($user == "" OR $pw == "")
30.
        {
31.
        echo "<b>Bittefülle beide Felder aus!</b>";
32.
        }
33.
        elseif ($user == $user_name AND $pw == $user_pass)
34.
            {
35.
            $_SESSION['user'] = $user;
36.
            $_SESSION['pw'] = $pw;
37.
            echo "<b>Wunderbar! Dein Login war erfolgreich, du kannst nun <a href=\"index2.php?".sid."\">hier</a> in den Geschützen Bereich</b>";
38.
            }
39.
    }
40.
 
41.
//dann kommt das Formular
42.
if (!isset($user, $pw))
43.
    {
44.
    echo '<form name="login" method="post" action="'.$_SERVER['PHP_SELF'].'">
45.
      User Name: <input type="text" name="user"> User Passwort:  <input type="password" name="pw">
46.
      <input type="submit" name="Submit" value="einloggen">
47.
    </form>';
48.
    }
49.
    
50.
 
51.
 
52.
echo '</body>
53.
</html>';
54.
 
index2.php

PHP-Code:
01.
 
02.
//der Geschütze Bereich des Login scripts
03.
//session beginnen, immer ganze oben vor html Ausgabe!
04.
session_start();
05.
 
06.
//html ausgabe der head daten einer seite
07.
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
08.
<html>
09.
<head>
10.
<title>Login script</title>
11.
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
12.
</head>
13.
<body><h1>Login Script</h1>';
14.
 
15.
//die if abfragen ob der user eingeloggt oder ausgeloggt ist
16.
if (!isset($_SESSION['user'], $_SESSION['pw']))
17.
    {
18.
    echo '<b>Du musst dich erst <a href="index.php">hier</a> einloggen um in den Geschützen Bereich zu kommen!</b>';
19.
    }
20.
    
21.
if (isset($_SESSION['user'], $_SESSION['pw']))
22.
    {
23.
    echo "<h1>Geschützer Bereich!</h1>";
24.
    }
25.
    
26.
echo '</body>
27.
</html>';
28.
?>
Die session id wird in einem Cookie gespeichert. Fuer die die aber keine erlauben ist es wichtig bei jedem link das sid dran zu hängen

viel spaß damit. Wink



https://www.administrator.de/wissen/php-einfaches-login-script-mit-sessi ...


Rabbit
Bitte warten ..
Ähnliche Inhalte
PHP
PHP LDAP Login Gruppen Abfrage
gelöst Frage von schneerunzelPHP7 Kommentare

Hallo Zusammen ich habe dieses PHP Script: Dieses Script stammt von einem anderen User aus diesem Forum Unschwer zu ...

Batch & Shell
Otrs Agent und Customer Login per LDAP
Frage von MichaelW84Batch & Shell2 Kommentare

Hallo zusammen, ich habe meinem OTRS eine LDAP Authentifizierung für Agents und Customer hinzugefügt und diese funktioniert auch grundsätzlich ...

Windows Server
Citrix-Session auf RDS-Session-Host
Frage von BirdyBWindows Server3 Kommentare

Hallo zusammen, ich habe da gerade ein recht komisches Setup und bräuchte mal Meinungen und Ratschläge Bei uns arbeiten ...

Voice over IP
LDAP-Server hilfe
Frage von SteffenEK72Voice over IP

Hallo zusammen, ich habe auf dem Synology Nas einen LDAP-Server laufen, möchte gerne das bei uns im Netzwerk ein ...

Neue Wissensbeiträge
iOS
WatchChat für Whatsapp
Tipp von Criemo vor 1 TagiOS3 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor !!!
Tipp von Criemo vor 2 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 4 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Webbrowser
Microsoft bestätigt Edge mit Chromium-Kern
Information von Frank vor 4 TagenWebbrowser5 Kommentare

Microsoft hat nun in seinem Blog bestätigt, dass die nächste Edge Version kein EdgeHTML mehr für die Darstellung benutzen ...

Heiß diskutierte Inhalte
Windows Netzwerk
Kerio. Kann keine Mails empfangen aber senden. Wer ist schuld. Kerio oder Windows domäne?
gelöst Frage von frosch2Windows Netzwerk33 Kommentare

Hallo, es existiert ein Problem bei uns mit dem mailen. Alle bestehenden Nutzer können mailen. Raus wie rein. Neuen ...

LAN, WAN, Wireless
WLAN und Ausmessung - Eine Glaubensfrage?
Frage von ptr2brainLAN, WAN, Wireless23 Kommentare

Liebe Experten, als Sys-Admin habe ich mir schon öfter die Frage gestellt, ob es sich beim Thema WLAN und ...

Hosting & Housing
VMware VM mit über 1TB RAM für S4HANA
Frage von Leo-leHosting & Housing22 Kommentare

Hallo zusammen, wer hat Erfahrng und kann mir einen Tipp zum sizing von S4HANA Systemen geben? Wir möchten, zunächst ...

Virtualisierung
Gebrauchte Server Hardware als Virtualisierungs-"Spielwiese"?
Frage von NixVerstehenVirtualisierung19 Kommentare

Einen wunderschönen guten Morgen zusammen, ich möchte mich gerne etwas tiefer mit dem Thema Virtualisierung beschäftigen und dazu ein ...