<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: Rechtesystem à la UNIX</title>
	<atom:link href="http://phpperformance.de/rechtesystem-a-la-unix/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpperformance.de/rechtesystem-a-la-unix/</link>
	<description>Optimierung und Tipps zur Beschleunigung von PHP und MySQL</description>
	<lastBuildDate>Tue, 01 May 2012 16:51:11 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>Von: Jojo</title>
		<link>http://phpperformance.de/rechtesystem-a-la-unix/comment-page-1/#comment-13870</link>
		<dc:creator>Jojo</dc:creator>
		<pubDate>Sun, 27 Jul 2008 10:08:24 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/rechtesystem-a-la-unix/#comment-13870</guid>
		<description>Userrechte &gt; Rollenrechte &gt; Gruppenrechte</description>
		<content:encoded><![CDATA[<p>Userrechte &gt; Rollenrechte &gt; Gruppenrechte</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Gelle</title>
		<link>http://phpperformance.de/rechtesystem-a-la-unix/comment-page-1/#comment-7299</link>
		<dc:creator>Gelle</dc:creator>
		<pubDate>Wed, 23 Apr 2008 10:02:54 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/rechtesystem-a-la-unix/#comment-7299</guid>
		<description>Interessant w&#228;re nun noch die Verkn&#252;pfung von Usern, Rollen und Gruppen -&gt; welche Rechte heben sich auf?

Angenommen: eine Gruppe darf nur Lesen, weil der User aber Administrator ist darf er auch schreiben. Au&#223;erdem besitzt der User das individuelle Recht zu l&#246;schen, aber zu diesem Recht KEINE Leseerlaubnis. 

Wird das nur durch Subtraktionen und Additionen gel&#246;st?
Welche Rechte w&#252;rden sich dann hier erfahrungsgem&#228;&#223; aufheben, addieren oder subtrahieren? Ist ein Gruppenrecht schw&#228;cher oder st&#228;rker als ein Rollenrecht?</description>
		<content:encoded><![CDATA[<p>Interessant w&#228;re nun noch die Verkn&#252;pfung von Usern, Rollen und Gruppen -&gt; welche Rechte heben sich auf?</p>
<p>Angenommen: eine Gruppe darf nur Lesen, weil der User aber Administrator ist darf er auch schreiben. Au&#223;erdem besitzt der User das individuelle Recht zu l&#246;schen, aber zu diesem Recht KEINE Leseerlaubnis. </p>
<p>Wird das nur durch Subtraktionen und Additionen gel&#246;st?<br />
Welche Rechte w&#252;rden sich dann hier erfahrungsgem&#228;&#223; aufheben, addieren oder subtrahieren? Ist ein Gruppenrecht schw&#228;cher oder st&#228;rker als ein Rollenrecht?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: thgc</title>
		<link>http://phpperformance.de/rechtesystem-a-la-unix/comment-page-1/#comment-5525</link>
		<dc:creator>thgc</dc:creator>
		<pubDate>Wed, 27 Feb 2008 15:28:56 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/rechtesystem-a-la-unix/#comment-5525</guid>
		<description>Man k&#246;nnte vielleicht noch

if(($recht &amp; 8)==8) {
// Schreiben erlaubt
}
 
if(($recht &amp; 4)==4) {
// L&#246;schen erlaubt
}


durch sowas ersetzen:

define (&quot;WRITE_FLAG&quot;, 4);
define (&quot;DELETE_FLAG&quot;, 8);

if(($recht &amp; WRITE_FLAG) == WRITE_FLAG) {
// Schreiben erlaubt
}
 
if(($recht &amp; DELETE_FLAG) == DELETE_FLAG) {
// L&#246;schen erlaubt
}

Gru&#223;,
thgc</description>
		<content:encoded><![CDATA[<p>Man k&#246;nnte vielleicht noch</p>
<p>if(($recht &amp; 8)==8) {<br />
// Schreiben erlaubt<br />
}</p>
<p>if(($recht &amp; 4)==4) {<br />
// L&#246;schen erlaubt<br />
}</p>
<p>durch sowas ersetzen:</p>
<p>define (&#034;WRITE_FLAG&#034;, 4);<br />
define (&#034;DELETE_FLAG&#034;, 8);</p>
<p>if(($recht &amp; WRITE_FLAG) == WRITE_FLAG) {<br />
// Schreiben erlaubt<br />
}</p>
<p>if(($recht &amp; DELETE_FLAG) == DELETE_FLAG) {<br />
// L&#246;schen erlaubt<br />
}</p>
<p>Gru&#223;,<br />
thgc</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: thgc</title>
		<link>http://phpperformance.de/rechtesystem-a-la-unix/comment-page-1/#comment-5460</link>
		<dc:creator>thgc</dc:creator>
		<pubDate>Tue, 26 Feb 2008 11:26:48 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/rechtesystem-a-la-unix/#comment-5460</guid>
		<description>Super Artikel. Hat mir sehr weitergeholfen.</description>
		<content:encoded><![CDATA[<p>Super Artikel. Hat mir sehr weitergeholfen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Synthor</title>
		<link>http://phpperformance.de/rechtesystem-a-la-unix/comment-page-1/#comment-824</link>
		<dc:creator>Synthor</dc:creator>
		<pubDate>Tue, 30 Oct 2007 09:20:48 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/rechtesystem-a-la-unix/#comment-824</guid>
		<description>Sehr interessante Artikel hier!

Ich &#252;berlege seit heute morgen wie ich am besten das Rechtesystem der Unternehmerdatenbank, die ich entwickeln soll umsetze.
Auf die Performance kommt es jetzt weniger an, da nur ca. 50-100 Leute damit arbeiten werden.
Wichtiger ist mir eine gewisse Flexibili&#228;t mit den Rechten, den Gruppen und auch den Usern. Schlie&#223;lich will ich einem User, der Mitglied in Gruppe XYZ ist auch individuelle Rechte f&#252;r Modul ZYX geben k&#246;nnen.

Der Artikel hat mir aber einen sehr sehr guten Denkansto&#223; gegeben. Ich wei&#223; jetzt wie ich es l&#246;se…

Diese Seite wandert zu meinen Programmier-Favoriten. ;-)</description>
		<content:encoded><![CDATA[<p>Sehr interessante Artikel hier!</p>
<p>Ich &#252;berlege seit heute morgen wie ich am besten das Rechtesystem der Unternehmerdatenbank, die ich entwickeln soll umsetze.<br />
Auf die Performance kommt es jetzt weniger an, da nur ca. 50-100 Leute damit arbeiten werden.<br />
Wichtiger ist mir eine gewisse Flexibili&#228;t mit den Rechten, den Gruppen und auch den Usern. Schlie&#223;lich will ich einem User, der Mitglied in Gruppe XYZ ist auch individuelle Rechte f&#252;r Modul ZYX geben k&#246;nnen.</p>
<p>Der Artikel hat mir aber einen sehr sehr guten Denkansto&#223; gegeben. Ich wei&#223; jetzt wie ich es l&#246;se…</p>
<p>Diese Seite wandert zu meinen Programmier-Favoriten. <img src='http://phpperformance.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Martin</title>
		<link>http://phpperformance.de/rechtesystem-a-la-unix/comment-page-1/#comment-682</link>
		<dc:creator>Martin</dc:creator>
		<pubDate>Tue, 09 Oct 2007 09:36:26 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/rechtesystem-a-la-unix/#comment-682</guid>
		<description>Dir ist aber schon klar, dass 2^162 auf deinem System ein float ist?!

Auf einem 32bit System sind Integer nur bis 2^32 m&#246;glich (auch mit PHP ist das nicht anders):

[mas@32bit ~]$ php -r &#039;$t = 4294967296; var_dump($t);&#039;;
float(4294967296)

[mas@64bit ~]#  php -r &#039;$t = 4294967296; var_dump($t);&#039;;
int(4294967296)

Rechtesystem mit Bits ist z.B. f&#252;r ein CMS nicht wirklich optimal. F&#252;r Flags (Konstanten) gibt es aber nichts besseres.

An deiner Stelle w&#252;rde ich &#252;berlegen, ob du die Rechte nicht einfach als String abspeicherst.

rights als varchar(1024), damit hast du nicht etwas Platz.

Der Rechtestring besteht dann einfach aus vielen 0en und 1en.

rights = 000100010010100010001111
if rights[5] === 1;

Das kannst du dann einfach als zus&#228;tzliches Feld in deiner User Tabelle speichern.

Gruss,
Martin</description>
		<content:encoded><![CDATA[<p>Dir ist aber schon klar, dass 2^162 auf deinem System ein float ist?!</p>
<p>Auf einem 32bit System sind Integer nur bis 2^32 m&#246;glich (auch mit PHP ist das nicht anders):</p>
<p>[mas@32bit ~]$ php -r &#039;$t = 4294967296; var_dump($t);&#039;;<br />
float(4294967296)</p>
<p>[mas@64bit ~]#  php -r &#039;$t = 4294967296; var_dump($t);&#039;;<br />
int(4294967296)</p>
<p>Rechtesystem mit Bits ist z.B. f&#252;r ein CMS nicht wirklich optimal. F&#252;r Flags (Konstanten) gibt es aber nichts besseres.</p>
<p>An deiner Stelle w&#252;rde ich &#252;berlegen, ob du die Rechte nicht einfach als String abspeicherst.</p>
<p>rights als varchar(1024), damit hast du nicht etwas Platz.</p>
<p>Der Rechtestring besteht dann einfach aus vielen 0en und 1en.</p>
<p>rights = 000100010010100010001111<br />
if rights[5] === 1;</p>
<p>Das kannst du dann einfach als zus&#228;tzliches Feld in deiner User Tabelle speichern.</p>
<p>Gruss,<br />
Martin</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Christoph</title>
		<link>http://phpperformance.de/rechtesystem-a-la-unix/comment-page-1/#comment-621</link>
		<dc:creator>Christoph</dc:creator>
		<pubDate>Wed, 03 Oct 2007 18:27:42 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/rechtesystem-a-la-unix/#comment-621</guid>
		<description>Ich hab ein System mit 162 verschiedenen Rechten. Also br&#228;uchte ich eine Ganzzahl bis 2^162 = 5,8460065493236116728147393308651e+48. Wird leicht un&#252;bersichtlich. Da w&#252;rde ich dann lieber die Bin&#228;rzahl als String abspeichern.
Dabei haben 15 Leute Rechte, das sind so grob &#252;ber den Daumen gepeilt 2500 Datens&#228;tze. Das verkraftet MySQL immer noch. Und ich kann die Daten in der DB sogar ohne spezielles Frontend lesen und schreiben.

Aber hier geht&#039;s ja um Performance. Also w&#252;rde ich das mal irgendwie benchmarken. Wie lange dauert es, die Rechte auszulesen? Sicher geht&#039;s schneller als mein &quot;SELECT `right` FROM user_rights WHERE user_id = n&quot; ;-)</description>
		<content:encoded><![CDATA[<p>Ich hab ein System mit 162 verschiedenen Rechten. Also br&#228;uchte ich eine Ganzzahl bis 2^162 = 5,8460065493236116728147393308651e+48. Wird leicht un&#252;bersichtlich. Da w&#252;rde ich dann lieber die Bin&#228;rzahl als String abspeichern.<br />
Dabei haben 15 Leute Rechte, das sind so grob &#252;ber den Daumen gepeilt 2500 Datens&#228;tze. Das verkraftet MySQL immer noch. Und ich kann die Daten in der DB sogar ohne spezielles Frontend lesen und schreiben.</p>
<p>Aber hier geht&#039;s ja um Performance. Also w&#252;rde ich das mal irgendwie benchmarken. Wie lange dauert es, die Rechte auszulesen? Sicher geht&#039;s schneller als mein &#034;SELECT `right` FROM user_rights WHERE user_id = n&#034; <img src='http://phpperformance.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: admin</title>
		<link>http://phpperformance.de/rechtesystem-a-la-unix/comment-page-1/#comment-546</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Mon, 24 Sep 2007 10:08:15 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/rechtesystem-a-la-unix/#comment-546</guid>
		<description>Ist ja richtig, nur an welcher Stelle soll das zum Einsatz kommen?</description>
		<content:encoded><![CDATA[<p>Ist ja richtig, nur an welcher Stelle soll das zum Einsatz kommen?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Carsten</title>
		<link>http://phpperformance.de/rechtesystem-a-la-unix/comment-page-1/#comment-543</link>
		<dc:creator>Carsten</dc:creator>
		<pubDate>Mon, 24 Sep 2007 09:05:27 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/rechtesystem-a-la-unix/#comment-543</guid>
		<description>Das habe ich doch im ersten Kommentar zu dem anderen Beitrag schon geschrieben. Mit der Funktion bindec() -&gt; http://de2.php.net/bindec kann man die bin&#228;ren Zahlen einfach in dezimale umwandeln lassen.</description>
		<content:encoded><![CDATA[<p>Das habe ich doch im ersten Kommentar zu dem anderen Beitrag schon geschrieben. Mit der Funktion bindec() -&gt; <a href="http://de2.php.net/bindec" rel="nofollow">http://de2.php.net/bindec</a> kann man die bin&#228;ren Zahlen einfach in dezimale umwandeln lassen.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

