Module für ein eigenes CMS

10/25/2014 18:09 EclipseGamer#1
Hallo liebe Community,

ich habe mal eine Frage. Zurzeit entwickle ich ein neuartiges Homepage System für einen meiner Kunden. Hierbei handelt es sich um eine Homepage mit Community und Verwaltungssystem für Schulen.

Meine Frage:

Ich will einzelne Module machen... Zum Beispiel: Usermanagement, Schule Intern, Community....etc.

Was wäre den die beste Lösung auf PHP Basis das man machen kann zum Beispiel Usermanagement im Menü überhaupt nicht angezeigt wird, da man ja logischerweise keine Rechte hat.

Es soll dann ungefähr so aussehen:
0 = Gast
1 = Nein
2 = Ja

Das man das ungefähr so verbauen kann:
<?php
if($userm == 2)
then (access)
else (exit)

?>
Ich weis das stimmt von hinten bis vorne nicht aber es soll nur die Absicht die habe darstellen.
Also aufjedenfall eine If abfrage...

Ich könnte da die nächsten 2 Tagen irgendwas basteln aber das will ich auch nicht, da ich dort nämlich selbst zur Schule gehen und ich mir das "jeden Tag" anschauen müsste :P

Danke schonmal an euch!

Mit freundlichen Grüßen
Marcel
10/25/2014 23:33 mlukac89#2
If u using database u make when user register is set to 1 so he can have access when he log in but not full access, and for admin u put only ppls that u want in your case number 2

Then u make query when user want to login and if he login then u check what number is he 1 or 2

Code:
<?php

// your query to check user status

$check = ("SELECT username, password, user_status FROM `users` WHERE username=`user` AND password=`pass`");

if(mysql_num_rows($check)) {
		
       $ds=mysql_fetch_array($check);
		
	// check for login data
	if($login == $ds['username'] && $login == $ds['password']) {
		
	// start session
	$_SESSION['user'] = $ds['username'];
	$_SESSION['user_status'] = $ds['user_status'];

        $us = $_SESSION['user']; // username
        $status = $_SESSION['user_status']; // user status 0 or 1 or 2
	
        // now u can check user status
        if ($status == 0) {
              echo 'Hello guest';
        } elseif ($status == 1) {
              echo 'Hello ' . $us;
        } elseif ($status == 2) {
              echo 'Hello ' . $us . ' you are Administator';
        }
	
}

?>
10/26/2014 02:46 EclipseGamer#3
Hello,

i test your answer. But i dont can use your code. I dont know why.

Code:
<?php

// your query to check user status
require_once ('/../var.php');
$db_link = mysqli_connect (
                     $mysqlhost, 
                     $mysqluser, 
                     $mysqlpass, 
                     $mysqldata
                    );

$check = ("SELECT username, passwort, rechte FROM user WHERE username");

if(mysql_num_rows($check, $db_link)) {
		
       $ds=mysql_fetch_array($check);
		
	// check for login data
	if($login == $ds['username'] && $login == $ds['passwort']) {
		
	// start session
	$_SESSION['username'] = $ds['username'];
	$_SESSION['rechte'] = $ds['rechte'];

        $us = $_SESSION['username']; // username
        $status = $_SESSION['rechte']; // user status 0 or 1 or 2
	
        // now u can check user status
        if ($status == 2) {
              include('example_with_rights.php')
        } 
        else {
              echo 'Permission Denied';

        }
	
}
}
What is the Problem?
10/26/2014 09:14 mlukac89#4
U didnt finished query u need to know what u asking from database this way u made, its like u asked where username ?
and u need to ask where username from database is equal to username from login form

Code:
$check = ("SELECT username, passwort, rechte FROM user WHERE username");
With asking from database WHERE username

Here is tested code all works, and u need this 3 fields in database to works ( username, passwort, rechte )

Code:
//require_once ('/../var.php');
$db_link = mysqli_connect (
                     $mysqlhost, 
                     $mysqluser, 
                     $mysqlpass, 
                     $mysqldata
                    );

// so first check login form if username and password is entered

if (isset($_POST['login'])) { // if login button is pressed
	
	// check if username and password isset
	if (isset($_POST['username']) && isset($_POST['passwort'])) {
		
		// make variables for easier user
		$username = trim($_POST['username']);
		$passwort = trim($_POST['passwort']);

		// if all fields are entered
		if (!empty($username) && !empty($passwort)) {

			// if fields are entered lets check if username and password is equal to username and password from login form
			$check = mysqli_query($db_link, "SELECT username, password, rechte FROM `user` WHERE `username`='".mysqli_escape_string($db_link, $username)."' AND password='".mysqli_escape_string($db_link, $passwort)."'") or die('Database error !');

			// if row (user) exists
			if(mysqli_num_rows($check) == 1){
			    $row = mysqli_fetch_array($check, MYSQLI_BOTH);

			    // start session
			    $_SESSION['rechte'] = $row['rechte'];
			    $_SESSION['username'] = $row['username'];

			    $status = $_SESSION['rechte']; // this one is used for user status 0 or 1 or 2
			    $us = $_SESSION['username']; // username
			
		        // now u can check user status
		        if ($status == 2) {
		              include('example_with_rights.php')
		        } 
		        else {
		              echo 'Permission Denied';

		        }

			} else {
				echo 'Invalid user data entered.';
			}

		} else {
			echo "Please enter username and passwort";
		}

	}


}

And login form

Code:
<form action="" method="POST">
	Username <input type="text" name="username"><br />
	Passwort <input type="password" name="passwort"><br />
	<input type="submit" name="login" value="Login">
</form>
10/26/2014 17:56 EclipseGamer#5
Hello,

thank you, but i dont can login. This message: Invalid user data entered.

I have the right login data. See on my screenshort of my Database:
[Only registered and activated users can see links. Click Here To Register...]


PS: Sry for my bad English.
PPS: I have add you in Skype
10/28/2014 10:03 killer0137xxl#6
Für sowas speichere ich Permissions / Rollen / Authorities / ... zu jedem User in der Datenbank ab. Ist nichts anderes als ein (deskriptiver) String, bsp. "PERM_USERMANAGEMENT".

Beim Login oder sonst wo lädst du dann die Permissions des eingeloggten Users und nutzt das als Basis. Wenn du z.b. das Usermanagement Menü rendern willst, definierst du dass das die Permission "PERM_USERMANAGEMENT" erfordert und schaust dann ob der eingeloggte User diese Permission besitzt. Kannst sicher auch ganze Seiten auf Basis von Permissions mit 403 wegsperren, aber leider kenne ich kein PHP.

Schau vielleicht mal, wie populäre PHP Frameworks Security implementieren, z.B. Laravel:

[Only registered and activated users can see links. Click Here To Register...]

edit:

Scheinbar unterstützt Laravel keine Permissions? Vielleicht hilft dir dieser Blog post als ansatz:

[Only registered and activated users can see links. Click Here To Register...]