Ich habe Probleme mit PHP
Login und Benutzer Validierung, nachdem sie sich an das System anmelden. Ich kenne die Grundlagen, aber ich bin mir nicht sicher, ob ich es richtig mache. Ich werde versuchen, es Schritt für Schritt zu erklären.PHP Session Sicherheitsschlüssel Schritte
- Ich habe ein Formular für Benutzername und Passwort.
- Nachdem Benutzer sie Login und Passwort eingeben, verwende ich
LDAP
Authentifizierung, um sie zu autorisieren. Und wenn die Authentifizierung bestanden wird, muss ich eine neue Sitzung starten. Neue Sitzung (und das ist, wo ich kämpfe).
if ($validation->ldap_authentication()) { $session = new session(); $session -> login($validation->getUsername(), $validation->logedAs(), $validation->getSID()); if($session->validate_login()) { exit(header('Location:index2.php')); } else { echo 'error'; } }
Und meine session class
:
class session
{
public function __construct()
{
if(!isset($_SESSION))
{
session_name(SESSIONNAME);
ob_start();
session_start();
} else {
session_regenerate_id(true) ;
}
}
public function login($sessionUserName, $logedAs, $sid)
{
$_SESSION['logedUserName'] = isset($sessionUserName) ? $sessionUserName : null;
$_SESSION['logedAs'] = isset($logedAs) ? $logedAs : null;
$_SESSION['sid'] = isset($sid) ? $sid : null;
}
public function validate_login()
{
if (!isset($_SESSION['logedUserName']) || (trim($_SESSION['logedUserName']) == '') ||
!isset($_SESSION['logedAs']) || (trim($_SESSION['logedAs']) == '') ||
!isset($_SESSION['sid']) || (trim($_SESSION['sid']) == '')
)
{
return false;
} else {
return true;
}
}
}
- So in der anderen Seiten ich brauche eine Klasse
session
(wieder) zu starten undvalidate_login()
zu validieren? - Für mich sieht es wirklich schlecht Authentifizierung aus.
Was muss ich hinzufügen und verbessern?
Ich habe bereits online gesucht, konnte aber keine Antwort finden und weiß nicht, was genau ich verbessern muss.
Erstens: Ich verstehe nicht, warum Sie 'ob_start()' nur tun, wenn keine Sitzung eingestellt ist? Zweite 'session_regenerate_id()' sollte nur einmal pro Anfrage aufgerufen werden, Ihr Code macht es bei jeder neuen Instanz von 'session' http://stackoverflow.com/questions/22965067/when-and-why-i-should-use-session -regenerate-id # 22965580 – JustOnUnderMillions
Ich würde vorschlagen, dass Sie einmal durch das Konzept der Sitzung gehen. Alles, was Sie tun müssen, ist zu überprüfen, ob die Sitzung existiert oder nicht, wenn nicht zum Login-Bildschirm umleiten und wenn ja, dann umleiten zum Index oder wo auch immer Sie wollen. Sie können hinzufügen, dass, wenn '$ _SESSION ['logedUserName']' ist leer, dann Login-Bildschirm sonst gehen Sie voran. – Aatman
@JustOnUnderMillions also, wenn ich verstehe, muss ich 'session_regenerate_id (true) aufrufen' wenn validate_login wahr ist? – user3686909