Zugriffsbeschränkung beim Login

NanoNuna

Mitglied
Hallo zusammen,

ich habe eine Problem, bei dem ich eure Hilfe benötige.

Ich möchte das beim meinem Login Skript, sich immer nur eine User anmelden kann.

Das Login Skript sieht wie folgt aus.

PHP:
<?php 
session_start();
include '../../anwendungskern/benutzerverwaltung.php'; 

if (isset($_POST['login'])) 
{ 
    $id=check_user($_POST['username'], $_POST['password']); 
    if ($id!=false) 
    {
        login($id); 
    }
    else 
    {
         include '../seiten/login_false.php'; 
    }
} 


if (logged_in())
{
	logged_admin();
	if ($_SESSION['recht']=="admin") 
	{
   	    include '../seiten/logged_in_admin.php';
	}  
	elseif ($_SESSION['recht']=="benutzer")
	{
    	include '../seiten/logged_in_benutzer.php'; 
	}
}
else
{
	include '../seiten/login_false.php';
}


?>

Ich habe mich gefragt ob man die Einschränkung über die SessionId machen könnten

Hoffe ihr könnt mir da weiter helfen, wie man sowas am besten programmiert

Vielen Dank im Voraus.

Gruß
Nano
 
Du könntest die aktuelle IP in eine Datenbank schreiben, und dann auslesen, ob noch jemand drin ist, aber dies ist eigentlich sehr unsauber.
 
Hi,

danke für dein antwort.

Hast du ne idee wie man das sinnvoll machen könnte
Evtl. mit Beispielcode

Danke im Voraus.

Gruß
Nano
 
Hallo habe gedacht, ob man das irgendwie auf folgende Art eingrenzen könnte?

PHP:
<?php 
session_start();
include '../../anwendungskern/benutzerverwaltung.php'; 

if (isset($_POST['login'])) 
{ 
	zugriff_beschraenkung();
	echo count($_SESSION['session']==null);
	if($_SESSION['session']== null){
	
    $id=check_user($_POST['username'], $_POST['password']); 
    if ($id!=false) 
    {
        login($id); 
    }
    else 
    {
         include '../seiten/login_false.php'; 
    }
	}else{
		echo "t net.";
	}
} 


if (logged_in())
{
	logged_admin();
	if ($_SESSION['recht']=="admin") 
	{
   	    include '../seiten/logged_in_admin.php';
	}  
	elseif ($_SESSION['recht']=="benutzer")
	{
    	include '../seiten/logged_in_benutzer.php'; 
	}
}
else
{
	include '../seiten/login_false.php';
}


?>

Bitte um hilfe.

Gruß
Nano
 
Hier noch die Funktion:

PHP:
function zugriff_beschraenkung()
{
$sql="SELECT session
    FROM benutzer"; 
$sql=mysql_query($sql); 
$result=mysql_fetch_assoc($sql); 
$_SESSION['session']=$result['session']; 
}
 
Grundsätzlich ist deine Login-Funktion erstmal arg verwirrend :D
Ein sicherer Login funktioniert erstmal vom Prinzip so:
Du hast eine Tabelle die username und auth-string speichert. Das ist am sichersten,wenn du Passwörter nicht im klartext speicherst sondern mind. md5-verschlüsselt.
an meinem Beispiel setzt sich der login (feld auth) aus einem eindeutigen (einmaligen) benutzernamen und seinem passwort zusammen.

PHP:
function login() {
if( isset($_POST['user']) ) {
  $user = trim($_POST['user'];
  if( strlen($user) == 0 )
    return NULL; // Username ist leer !
  $user = addslashes($user);

  $pass = trim($_POST['pass']);
  if( strlen($pass) == 0 )
    return NULL; // Passwort ist leer !
  
  $auth = md5($user.$pass);
  $SQL = "SELECT sid FROM usertabelle WHERE auth='''.$auth."';
  $res = mysql_query($SQL);
  if( mysql_num_rows($res) == 1 ) {
    $SQL = "UPDATE usertabelle SET sid='".session_id()."' WHERE auth='".$auth."'";
    mysql_query($SQL);
    return 1; // Benutzer ist berechtigt
  }
  else
    return NULL; // User + Passwort stimmen nicht überein
}

Ist der User nun berechtigt, machst du einen link auf zB "download.php?file=xyz.zip"
und die download.php prüft nun, ob der user eingeloggt ist, wenn ja, schickt sie die angeforderte Datei.

PHP:
function download() {
  if( isset($_GET['file']) {
    $SQL = "select sid FROM usertabelle WHERE sid=''".session_id()."" LIMIT 1";
    $res = mysql_query($SQL);
    if( mysql_num_rows($res) == 1 ) {
      $file = trim($_GET['file']);
      header("ContentType: application/octet-stream");
      header("Content-Disposition: attachment; filename=".$file);

      readfile("Verzeichnis/".$file);
    }
    else
      return NULL,
  }
}
 
Zuletzt bearbeitet:
Danke für deine Antwort.

Dein Beispielcode sagt mir leider garnichts über meine Problem aus.

Ich möchte gerne wissen wie die Sessionid überprüft, dass sich immer nur ein User anmelden kann

Das Login funktioniert und das Passwort wird auch in der DB verschlüsselt abgelegt.

Vielen Dank.
 
Hi,

danke, aber das funktioniert nicht! Ich möchte halt das sich immer nur einer anmeldet, mit der Bedigung kann sich weiterhin jeder User anmelden.

Hoffe du hast vielleicht noch ne Idee

Vielen Dank.

Gruß
Nano
 
Wie gesagt ich würde die IP des jenigen in eine Datenbank schreiben, dann noch die Zeitangaben diese Zeit angabe nimmst du dann nochmal mal 180, Und wenn der jenige der sich gerade eingeloggt hat in drei Minuten nichts getan hat, wird es ausgeloggt, und somit ist der Platz frei.
 
Zurück