php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #31 (permalink)  
Alt 29-10-2001, 09:29
BrainBug
 PHP Senior
Links : Onlinestatus : BrainBug ist offline
Registriert seit: Mar 2001
Ort: Raum Frankfurt
Beiträge: 1.110
BrainBug ist zur Zeit noch ein unbeschriebenes Blatt
Standard

eieiei! Das kommt davon, wenn man alles abändern muß

du hast aus der Abfrage nach dem User mit Paswort von $result ein $res gemacht. Allerdings greift genau die Zeile mit den "gruppe_id" auf $result zu. Das gibt es natürlich (jetzt) nicht mehr, du mußt dann da auch aus $result ein $res machen. Nach dieser Zeile gibts ja ein neues $result und ein Auslesen von diesem. Das kann so bleiben.

War klar was ich meine?
Mit Zitat antworten
  #32 (permalink)  
Alt 29-10-2001, 09:37
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.349
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

HÄÄÄÄÄÄÄÄÄ,

Ich habe doch die Datei wieder in den Originalzustand gebracht, aber schon bei meinem Posting am Sonntag.

Die user.inc.php sieht in deiesm Bereich so aus.
$gruppe = mysql_result($result, 0, "gruppe_id"); // welche Gruppe ist der User
$result = mysql_query("select * from usergruppe where (gruppe_id = $gruppe)"); // Gruppe selektieren
$rechte = mysql_fetch_array($result);
$login_flag = true;

ist doch richtig oder?
cu
Gilbert
Mit Zitat antworten
  #33 (permalink)  
Alt 29-10-2001, 09:54
BrainBug
 PHP Senior
Links : Onlinestatus : BrainBug ist offline
Registriert seit: Mar 2001
Ort: Raum Frankfurt
Beiträge: 1.110
BrainBug ist zur Zeit noch ein unbeschriebenes Blatt
Standard

STOP! Der Fehler liegt weiter oben. Es gibt doch zuerst eine Abfrage nach dem User und seinem Passwort. Diese Abfrage wurde bei meinem Code ursprünglich in $result gespeichert. Und DARAUF greift auch die Zeile mit
$gruppe=mysql_result($result...) zurück. Du hast aber, laut deinem letzten Posting, diese Variable beim Query oben in $res umbenannt. Dann mußt du auch das im mysql_result tun.
Code:
<? 
session_start(); 

if (session_is_registered("myuser") && session_is_registered("mypass")) { 
$user=$myuser; 
$passwort=$mypass; 
} 

include("data_db.inc.php"); 
$db = mysql_connect("$MySQL_Host","$MySQL_User","$MySQL_Passw") or die (mysql_error()); 
mysql_select_db("$MySQL_Data"); 

// ACHTUNG! HIER STEHT EINE ANDERE VARIABLE !!!!!
$res = mysql_query("select * from user where (usr='$user') and (pwd='$passwort')"); 
$num = mysql_num_rows($res); 

if ($num == 0) { // kein User, zurück zum Login 
$login_flag=false; 
} 
else { 
echo "Sie sind angemeldet."; 
// Anmeldung war erfolgreich, jetzt den Krempel als Session speichern, falls noch nicht passiert 
if (!session_is_registered("myuser") && !session_is_registered("mypass")) { 
session_register("myuser","mypass"); 
$myuser = $user; 
$mypass = $passwort; 
} 
$i=0; 

// DESHALB HIER AUCH DIE VAR VON OBEN BENUTZEN !!!!
$gruppe = mysql_result($res, 0, "gruppe_id"); // welche Gruppe ist der User 
$result = mysql_query("select * from usergruppe where (gruppe_id = $gruppe)"); // Gruppe selektieren 
$rechte = mysql_fetch_array($result); 
$login_flag = true; 
} 
?>
Okay??
Mit Zitat antworten
  #34 (permalink)  
Alt 29-10-2001, 10:05
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.349
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Fehler gefunden!!

In der Tabelle user benutze ich nicht gruppe_id sondern gruppe.

Aber wieso wird mir das $login_flag erst nach der Anmeldung an die nav.php übergeben und nicht schon beim ersten Aufruf.
Da müßte es doch $login_flag == false sein, oder habe ich jetzt einen Denkfehler.

Weil nach den Anmelden würde mir $login_flag == true übermittelt an die nav.php.

So nun geht es weiter. Wie kann ich jetzt die überschiedlichen Abfragen nach den Rechten der User aufbauen.

Also Usergruppe 1 darf nur zu den Nachrichten,
Usergruppe 2 darf nur zu den Terminen
und so weiter.

Das ist doch eine verschachtelte if else Abfrage oder?
cu
Gilbert
Mit Zitat antworten
  #35 (permalink)  
Alt 29-10-2001, 10:29
BrainBug
 PHP Senior
Links : Onlinestatus : BrainBug ist offline
Registriert seit: Mar 2001
Ort: Raum Frankfurt
Beiträge: 1.110
BrainBug ist zur Zeit noch ein unbeschriebenes Blatt
Standard

kommt drauf an, was du abfragen willst. Wenn du nun als Beispiel den Button oder Link für "Termin ändern" ausgeben willst, dann mußt du nur das zugehörige Recht $rechte[3] oder $rechte["termin_aendern"] abfragen. Fertig. Nix verschachtelt. Und das so für jeden einzelnen Menüpunkt aufbauen.
Falls nicht, mußt du deutlicher sagen, was du machen willst, also das Ziel.
Und von der Logik her ist die user.inc.php nun schon genau richtig. Weiß nicht genau, was du meinst.
Mit Zitat antworten
  #36 (permalink)  
Alt 29-10-2001, 10:32
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.349
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Meine nav.php sieht jetzt so aus

<?php
include("user.inc.php");
include("func.inc.php");
if ($login_flag==true)
echo "<$ffa>Sie sind ein geloggt";

else
echo "<$ffa>Sie sind noch nicht angemeldet<$ffe>";

if ($rechte[1] == 1)
echo "Nachrichten";

if ($rechte[2] == 1)
echo "Termine";
?>

wie bekommen ich nun die Ausgabe für recht 1

[Editiert von Wotan am 29-10-2001 um 09:42]
Mit Zitat antworten
  #37 (permalink)  
Alt 29-10-2001, 11:12
BrainBug
 PHP Senior
Links : Onlinestatus : BrainBug ist offline
Registriert seit: Mar 2001
Ort: Raum Frankfurt
Beiträge: 1.110
BrainBug ist zur Zeit noch ein unbeschriebenes Blatt
Question

Sorry, leider verstehe ich die letzte Frage nicht so recht. Du hast doch bereits die Ausgabe von Recht 1, oder?! Wo ist das Problem? Oder wo willst du hin?
Mit Zitat antworten
  #38 (permalink)  
Alt 29-10-2001, 11:17
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.349
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das ist die Anzeige wenn der User noch nicht angemeldet ist:

Sie sind noch nicht angemeldet

Das ist die Anzeige wenn der User angemeldet ist:

Sie sind eingeloggt

Jetzt sollen darunter die Links angezeigt werden, je nach dem welchens Recht der User hat.
Userrecht 1 = Termine ändern
Userrecht 2 = Nachrichten ändern
Userrecht 3 = Termine und Nachrichten ändern
usw
Mit Zitat antworten
  #39 (permalink)  
Alt 29-10-2001, 11:32
BrainBug
 PHP Senior
Links : Onlinestatus : BrainBug ist offline
Registriert seit: Mar 2001
Ort: Raum Frankfurt
Beiträge: 1.110
BrainBug ist zur Zeit noch ein unbeschriebenes Blatt
Standard

aber dein Code war doch schon richtig? Du mußt nur noch für jede mögliche Funktion bei der if-Abfrag eine Verknüpfung aller Varianten einbauen, z.B. muß $rechte[7]==1 immer abgefragt werden, wenn an Position [7] das Recht für alles steht (siehe dein erste Beitrag zu diesem Thema). Hab da mal so für die ersten drei Punkte beispielhaft geschrieben:
Code:
<?php 
include("user.inc.php"); 
include("func.inc.php"); 
if ($login_flag==true) 
echo "<$ffa>Sie sind ein geloggt"; 

else 
echo "<$ffa>Sie sind noch nicht angemeldet<$ffe>"; 

if ($rechte[1] == 1 || $rechte[4]==1 || $rechte[7]==1) // $rechte[7] steht für Chef, der alles darf
echo "<a href=datei1.php>Termine ändern</a>"; // hier die Ausgabe, wenn Rechte gesetzt

if ($rechte[2] == 1 || $rechte[4]==1 || $rechte[7]==1) 
echo "<a href=datei2.php>Nachrichten ändern</a>"; // hier ausgabe des Links für das Recht

if ($rechte[3] == 1 || $rechte[7]==1) 
echo "<a href=datei3.php>Shop ändern</a>"; // hier Link für neues Recht
?>
verstehst du, was ich meine? $rechte[4] ist jemand, der sowohl "termine" als auch "nachrichten" ändern darf.
Mit Zitat antworten
  #40 (permalink)  
Alt 29-10-2001, 11:36
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.349
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

muß ich an der Datenbank noch was ändern.

Die Datenbank userrecht hat folgendes aussehen:
Tabellenname = userrecht
Spaltenname = gruppe_id

Inhalt
1
2
3
4
5
6
7

oder fehlt da noch was?

cu
Gilbert(Newbie)
Mit Zitat antworten
  #41 (permalink)  
Alt 29-10-2001, 12:17
BrainBug
 PHP Senior
Links : Onlinestatus : BrainBug ist offline
Registriert seit: Mar 2001
Ort: Raum Frankfurt
Beiträge: 1.110
BrainBug ist zur Zeit noch ein unbeschriebenes Blatt
Standard

äh, ja, schon. Wenn du nur die ID der Gruppe in der Tabelle ablegst, brauchst du eigentlich diese Tabelle nicht, da du diese Information direkt beim User ablegen kannst. Deine Tabelle sollte noch um soviele Spalten erweitert werden, so viele Rechte du hast. Also die Spalte "termin_aendern", "news_aendern" etc. - so kanst du zu JEDER Gruppe genau definieren, was diese darf und was nicht. Und genau DAS sind ja auch die Felder, die du in deinem Array $rechte hast und in der if-Abfrage prüfst. Dieses System ist erweiterbar und veränderbar, d.h. du kannst später jederzeit die rechte einer Gruppe ändern, vergrößern oder beschneiden, in dem du die Rechte entweder auf 0 oder auf 1 setzt.
Also, deine Tabelle sollte so aussehen:

gruppe termin_aendernt news_aendern shop_aendern [...]
1 1 0 0 [...]
2 0 1 0 [...]
3 0 0 1 [...]
4 1 1 0 [...]
7 1 1 1 [...]

die Werte entsprechen dem Beispiel von eben bzw. basieren auf der Nennung von dir im 1.Beitrag des Themas.

Klarer geworden?

P.S.: Shit- meine "Formatierung" ist hin, alle Leerzeichen sind weg. Hoffe, du kannst die Tabelle trotzdem lesen.

P.P.S: Seltsam, irgendwie ist mir gerade diese Antwort abhanden gekommen. Wer weiß, wo die jetzt plötzlich auftaucht. Zum Glück hatte ich mir den Feldinhalt vorher in die Ablage kopiert.
Mit Zitat antworten
  #42 (permalink)  
Alt 29-10-2001, 12:26
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.349
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

habe jetzt die usergruppe so erweitert:

gruppe_id termine nachrichten shop termine_nachrichten termine_shop nachrichten_shop alles

1 1 0 0 0 0 0 0
2 0 1 0 0 0 0 0
3 0 0 1 0 0 0 0
4 0 0 0 1 0 0 0
5 0 0 0 0 1 0 0
6 0 0 0 0 0 1 0
7 0 0 0 0 0 0 1

ist das jetzt richtig?

cu
Gilbert
Mit Zitat antworten
  #43 (permalink)  
Alt 29-10-2001, 12:32
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.349
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zum Schluß wäre noch ein link mit Logoout nicht schlecht.

Wie bekommen ich das hin?

cu
Gilbert
Mit Zitat antworten
  #44 (permalink)  
Alt 29-10-2001, 13:13
BrainBug
 PHP Senior
Links : Onlinestatus : BrainBug ist offline
Registriert seit: Mar 2001
Ort: Raum Frankfurt
Beiträge: 1.110
BrainBug ist zur Zeit noch ein unbeschriebenes Blatt
Standard

nein, deine DB bzw. Tabelle ist ja total redundant. Wenn du zwei Felder "Termine" und "Nachrichten" hast, dann brauchst du doch nicht auch noch ein Feld "Termine_Nachrichten" -> um diesen Status abzubilden, mußt du doch nur bei beiden Feldern eine 1 eintragen. Nur so kannst du ziemlich einfach die Abfrage in allen Skripten ermöglichen. Sonst wird es eine ziemlich konfuse Abfragerei. Glaub mir.
also, die Tabelle, die du gerade eben geschrieben hast, müßte so lauten:

gruppe_id termine nachrichten shop

1 1 0 0
2 0 1 0
3 0 0 1
4 1 1 0
5 1 0 1
6 0 1 1
7 1 1 1

Es geht ja letztlich nur um DREI verschiedene Rechte (Termine, Nachrichten und Shop) und dabei dann noch die unterschiedlichen Kombinationen. Du kannst so wie hier bei jedem Punkt, der z.B. das Recht für Termine benötigt nur abfragen, ob $rechte[1]==1 -> dabei ist es egal, ob es die Rechtegruppe 1, 4 , 5 oder 7 ist. Alle diese Gruppen dürfen doch Termine ändern. Nach deinem System müßtest du jedesmal abfragen oder gruppe_id==1, 4 , 5 oder 7 ist. Das macht alles länger, unüberischtlicher, starrer und fehlerbehafteter.

Mit Zitat antworten
  #45 (permalink)  
Alt 29-10-2001, 13:19
BrainBug
 PHP Senior
Links : Onlinestatus : BrainBug ist offline
Registriert seit: Mar 2001
Ort: Raum Frankfurt
Beiträge: 1.110
BrainBug ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sorry, für das Logout kannst du ein Skript aufrufen, welches mittels session_unregister("mypass","myuser") wieder deregistriert und somit die user.inc.php beim nächsten Aufruf automatisch $login_flag==false setzt. Vorausgesetzt es wurden nicht wieder user und passwort vom Formular übermittelt. Dann gibt's auch noch session_destroy(), welches alle Informationen zur Session löscht. Ist wohl der einfachste Weg für dich.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

jqPlot jQuery Plotting Plugin ansehen jqPlot jQuery Plotting Plugin

jqPlot ist ein plotting und charting plugin für das jQuery Javascript framework

06.11.2019 Berni | Kategorie: AJAX/ Framework
WYSIWYG Editor

WYSIWYG Editor zum Einbinden in PHP Scripte.

21.10.2019 Stephan_1972 | Kategorie: PHP/ WYSIWYG
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

10.10.2019 Stephan_1972 | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:37 Uhr.