Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Login mit Levels - Nutzer auf bestimmte Bereichte zugreifen lassen?

Frage Entwicklung PHP

Mitglied: SILVERMAN

SILVERMAN (Level 1) - Jetzt verbinden

07.09.2010, aktualisiert 02:58 Uhr, 3090 Aufrufe, 5 Kommentare

Hallo Leute,

Ich habe folgendes Problem:
Ich habe ein Loginscript geschrieben und habe 30 users aus 4 Abteilungen und möchte gerne fogendes realisieren:

Wenn der user xy aus der Abteilung (Buchhaltung) einloggt nur die Sidebar boxen mit Inhalt zur Buchhaltung sieht und die anderen Boxen mit deaktivierten Links erscheinen. so zu sagen ein Login mit Level System bestimmt durch eine DB user tabelle mit folgender Struktur :

user pass name level
mark 1234 Mark Mustermann 1 oder 2 oder 3 oder 4


wobei 1 für Abteilung steht also die users von Abteilung sollen nur Inhalt zu Abteilung 1 sehen und 2 für Abteilung 2 und so weiter.

so sieht meine login Maske aus

01.
  
02.
<form name="login" method="post" action="login.php"> 
03.
     Benutzer 
04.
	  <br> 
05.
	  <input type="text" name="username"> 
06.
	  <br> 
07.
	 Passwort 
08.
	  <br> 
09.
	  <input type="password" name="password"> 
10.
	  <br> 
11.
      <input type="reset" class="btn" name="reset" value="reset"><input type="submit" class="btn" name="Submit" value="login"> 
12.
    </form> 
13.
 

so sieht login.php aus

01.
require ('db_connect.php'); 
02.
// Connect to server and select databse. 
03.
$tbl_name="user"; // Table name 
04.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
05.
mysql_select_db("$db_name")or die("cannot select DB"); 
06.
 
07.
// username and password sent from form 
08.
$myusername=$_POST['username']; 
09.
$mypassword=$_POST['password']; 
10.
 
11.
// To protect MySQL injection (more detail about MySQL injection) 
12.
$myusername = stripslashes($myusername); 
13.
$mypassword = stripslashes($mypassword); 
14.
$myusername = mysql_real_escape_string($myusername); 
15.
$mypassword = mysql_real_escape_string($mypassword); 
16.
 
17.
 
18.
  
19.
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"
20.
$result=mysql_query($sql); 
21.
 
22.
 
23.
 
24.
// Mysql_num_row is counting table row 
25.
$count=mysql_num_rows($result); 
26.
// If result matched $myusername and $mypassword, table row must be 1 row 
27.
 
28.
if($count==1){ 
29.
// Register $myusername, $mypassword and redirect to file "welcome.php" 
30.
// SHOW  VORNAME and NACHNAME 
31.
$sql2="SELECT vorname,nachname FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"
32.
	$db_erg = mysql_query( $sql ); 
33.
							 
34.
				if ( ! $db_erg
35.
36.
					die('Ungültige Abfrage: ' . mysql_error()); 
37.
38.
				while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC)) 
39.
40.
					 
41.
					$vorname= $zeile['vorname']; 
42.
					$nachname= $zeile['nachname']; 
43.
					$level= $zeile['level']; 
44.
				 
45.
46.
	mysql_free_result( $db_erg ); 
47.
				 
48.
 // END SHOW  VORNAME and NACHNAME 
49.
	session_register("myusername"); 
50.
	session_register("mypassword"); 
51.
	session_register("vorname"); 
52.
	session_register("nachname"); 
53.
 
54.
 
55.
    header("location:welcome.php"); 
56.
     
57.
 
58.
59.
else
60.
 
61.
	 
62.
 	echo '<META http-equiv="refresh" content="0;URL=index.php">'; 
63.
 
64.
 
65.
}



so sieht db_connect.php aus

01.
$host="localhost"; // Host name 
02.
$username="myusername"; // Mysql username 
03.
$password=""; // Mysql password 
04.
$db_name="myDB"; // Database name 
05.
//$tbl_name="user"; // Table name 
06.
mysql_query("SET NAMES 'utf8'"); 
07.
mysql_query('SET CHARACTER SET utf8'); 	
Wie kann ich das realisieren? und habe ich in meinem code Fehler in der Session hanlding?

Beigefügt ist eine grafische Darstellung für mein Vorhaben.

af099648b10eb36e15884fd4e1062274 - Klicke auf das Bild, um es zu vergrößern

Ich danke jedem von euch im Vorraus.

P.S.: Deutsch ist nicht meine Muttersprache.



Gruß
Silverman
Mitglied: godlie
07.09.2010 um 08:08 Uhr
Hallo,

nunja du musst eigentlich ncihts anderes realiseren als ein ACL System.
Ich würde mir hierfür in der Session das jeweilige Level hinterlegen,

und dann bei jeglicher ausgabe kontrollieren ob derjenige das auch darf....

Achja Passwörter im Klartext in der Datenbank speichern ist schwachsinnig .....

Ich würde nicht nur die Variablen in der Session registrieren sondern ihnen auch werte übergeben $_SESSION["vorname"] = $vorname
Bitte warten ..
Mitglied: dog
07.09.2010 um 19:35 Uhr
nunja du musst eigentlich ncihts anderes realiseren als ein ACL System.

Der war gut
Ein ACL-System (nicht zu verwechseln mit einem Berechtigungs-Level-System) ist ja auch wirklich trivial zu implementieren
Bitte warten ..
Mitglied: godlie
07.09.2010 um 20:09 Uhr
Tja da war doch noch ein Smiley den ich vergessen hatte
Bitte warten ..
Mitglied: SILVERMAN
08.09.2010 um 11:54 Uhr
Naja ein ACL System wie dog erwähnt hat ist nicht einfach zu realisieren außerdem brauche ich eine einfache Möglichkeit die Berechtigung für meine Benutzer zu kontrollieren.
Ich habe nach ein ACL System gesucht und die meisten Beispiele sind für mein Anliegen zu komplex.

Wie kann ich die die Werte die SESSION übergeben?

Danke
Bitte warten ..
Mitglied: SILVERMAN
23.09.2010 um 10:19 Uhr
Danke Leute für eure Feedback.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Windows 10
Nonstop Login im Sperrbildschirm (4)

Frage von TiCar zum Thema Windows 10 ...

Virtualisierung
gelöst Interne Netzwerke untereinander kommunizieren lassen (9)

Frage von chelewae zum Thema Virtualisierung ...

VB for Applications
gelöst Mehrere Charts per VBA erstellen lassen, Titel wird nicht angezeigt

Frage von Aximand zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...