Problem mit Rollenbasiertem Sicherheitsmechanismus!

caboom

Mitglied
Hallo Leute, ich bin am verzweifeln hier.

Und zwar möchte ich einen rollenbasierten Sicherheitsmechanismus erstellen, aber ich komm irgendwie nicht weiter.

Ich habe in meiner DB angelegt

HTML:
       CREATE TABLE users
	(
	id MEDIUMINT NOT NULL AUTO_INCREMENT,
	name TEXT,
	password TEXT,
	PRIMARY KEY ( id )
        )


       CREATE TABLE user_role
	(
	user_id MEDIUMINT,
	role_id MEDIUMINT
	)


       CREATE TABLE roles
	(
	id MEDIUMINT NOT NULL AUTO_INCREMENT,
	name TEXT,
	PRIMARY KEY ( id )
	)

Desweiteren habe ich dort eingefügt:

HTML:
        INSERT INTO roles VALUES ( 0, 'user' )
	INSERT INTO roles VALUES (0, 'manager' )
	
	INSERT INTO users VALUES ( 0, 'xxx1', MD5 ( 'xxx1' ) )
	INSERT INTO users VALUES ( 0, 'xxx2', MD5 ( 'xxx2' ) )

	INSERT INTO user_role VALUES ( 1, 1 )
	INSERT INTO user_role VALUES ( 2, 1 )
	INSERT INTO user_role VALUES ( 2, 2 )


Soooo, nun habe ich wenn ich die index.php aufrufe auch einen schönen Loginscreen, nur wenn ich mich dann mit xxx2, oder auch xxx1 anmelde, kommt ne Fehlermeldung, die besagt das in der dblib.php ein Fehler in Reihe 30 ist.

Ich poste mal Reihe 24 - 32

HTML:
        function has_role( $user, $role )
	{
	global $db;
	
	$role_id = get_role_id ( $role )
	
	$res = $db -> query ( "SELECT user_id FROM user_role WHERE user_id=? AND role_id=?",
	array ( $user, $role_id ) );
	if ( $res != null )

Ich hoffe Ihr könnt damit was anfangen, wenn Ihr mehr braucht sagt bescheid!

Danke im Vorraus erstmal...

mfg

Andre
 
Was für ein Fehler?
Hast du mal testweise [phpf]mysql_error[/phpf] ausgeben lassen?

Wie sieht deine DB Klasse aus?
 
hm....ich mach das zum ersten mal, wie geben ich denn mysql_error aus?

Ich benutze phpmyadmin falls das weiter hilft, von Ohost.de......


soll ich vll. mal alle .php files hier posten, sind ja n paar mehr...


Ich weiss aber auch nicht wirklich was da der Fehler sein soll...kann da nix erkennen, hab das ganze auch aus dem Buch PHP-Hacks, und die codes die dort drin stehen funktionieren eigentlich zu 99%, wir sind auf der Arbeit ne 4 mann gruppe die ein bisschen übt oder auch erweiterte programmierungen vornimmt, und bisher hat alles aus dem Buck wunderbar geklappt...Nur bin ich jetzt nicht auf der Arbeit und keiner der 4 anderen ist online um mir zu helfen....?

Soll ich einfach mal alle files posten? nicht das das zu viel is, sind immerhin 9 files


ich glaube nämlich fast das der Fehler in einer anderen Datei liegt, oder am Anfang der dblib.php.

HTML:
require_once ( "DB.php" ) ;
$dsn = 'mysql://benutzername:passwort@localhost/roles' ;
$db =& DB::Connect ( $dsn, array( ) );

weil ich habe z.B. keine DB.php, davon stand nix im Buch, und ich bin auch nicht sicher ob Zeile 2 richtig ist, also ob dort wirklich mein Benutzername und mein Passwort hin kommt.
 
Zuletzt bearbeitet:
Bomberpilotmp3 meinst du hinter

HTML:
$role_id = get_role_id ( $role )

das symikolon " ; " ?

Die Fehlermeldung lautet


Parse error: syntax error, unexpected T_VARIABLE in /usr/export/www/hosting/jbwprogrammers/andre/test/dblib.php on line 30
 
icq? hau mich mal an, das dauert sonst zu lange wenn du 5 fragen 5 mal beantworten musst.
icq: 123818343
 
Jo Bomberpilotmp3, es lag am symikolon.


Aber, wie ich schon vermutet habe, kommt nun die Fehlermeldung

HTML:
Warning: require_once(DB.php) [function.require-once]: failed to open stream: No such file or directory in /usr/export/www/hosting/jbwprogrammers/andre/test/dblib.php on line 2

Fatal error: require_once() [function.require]: Failed opening required 'DB.php' (include_path='.:') in /usr/export/www/hosting/jbwprogrammers/andre/test/dblib.php on line 2

Was muss denn in die DB.php rein, vielleicht hab ich die ja sogar schon erstellt, nur unter nem anderen namen gespeichert, im Buch steht sonst nix über die DB.php.

Ich habe folgende .php Dateien

dblib.php
index.php
login.php
logout.php
manage.php
security.php
welcome.php

und natürlich das users.sql file
 
In der dblib.php versuchst du per require_once eine Datei einzufügen, die es nicht gibt (DB.php).
 
Zurück