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
  #1 (permalink)  
Alt 15-01-2005, 02:38
Thunder_mv
 Newbie
Links : Onlinestatus : Thunder_mv ist offline
Registriert seit: Jan 2005
Beiträge: 4
Thunder_mv ist zur Zeit noch ein unbeschriebenes Blatt
Thunder_mv eine Nachricht über ICQ schicken
Standard Problem mit Loginsystem

hallo

Ich bin ein neuling in PHP und habe ein das Tutorial von www.php-q.net bis zu einem bestimmten Punkt durchgearbeitet und weiß nicht mehr weiter.

Vielleicht kennt das ja einer von euch, also das Tutorial und kann mit helfen...

Ich bin momentan in dem abschnitt "Benutzer verwalten". Mein Problem:
Wenn ich einen benutzer hinzufügen möchte, sagt er mir komischer weise 2 mal: " Sie haben keine Berechtigung, diesen Bereich zu betreten. Bitte wählen sie einen anderen Bereich aus". Darunter ist den ein Link wo steht: " Zurück zum Adminbereich". Ich hänge jetzt schon geschlagende 3 Tage daran fest und komme einfach nicht weiter.

Diese... ja Fehlermeldung kommt zu stande, weil ich keine Rechte habe, obwohl ich in PHPMyAdmin unter "Recht" den zusatz "Admin" hinzugefügt habe, wie es dort auch steht. Eigentlich müsste es funktionieren, was es aber nicht tut.

Es hätten eigentlich Einstellmöglichkeiten zum erstellen eines Neues Benutzers angezeigt werden sollen.

admin_user.php
PHP-Code:
<?php
    $sql 
"SELECT
                Recht
            FROM
                user_rights
            WHERE
               UserID = '"
.$_SESSION['ID']."';";
    
$result mysql_query($sql) OR die(mysql_error());
    
$rights = array();
    while(
$row mysql_fetch_assoc($result)) {
        
$rights[] = $row['Recht'];
    }

    if(!
in_array("Admin"$rights)) {
        echo 
"<p>\n";
        echo 
"    Sie haben keine Berechtigung, diesen Bereich\n";
        echo 
"    zu betreten. Bitte wählen sie einen anderen\n";
        echo 
"    Bereich aus\n";
        echo 
"</p>\n";
        echo 
"<p>\n";
        echo 
"    <a href=\"index.php?section=admin&amp;".SID."\">\n";
        echo 
"        Zurück zum Adminbereich\n";
        echo 
"    </a>\n";
        echo 
"</p>\n";
    }
    
$rights getRights();
    if(!
in_array("Admin"$rights)) {
        
no_rights();
    } else {
        switch(@
$_GET['action']) {
            case 
"add":
                break;

            case 
"edit":
                break;

            case 
"del":
                break;

            default:
                echo 
"<p>\n";
                echo 
"    Bitte benutzen sie nur einen Link aus dem Adminmenu.\n";
                echo 
"    <a href=\"index.php?section=admin&amp;".SID."\">\n";
                echo 
"        Zurück zum Adminbereich\n";
                echo 
"    </a>\n";
                echo 
"</p>\n";
                break;
        }
    }
    
?>

und die functions.php sind wohl ausschlaggeben dafür

PHP-Code:
<?php
    error_reporting
(E_ALL);
    
    function 
login_right($id$pass)
    {
        
$sql "SELECT
                    COUNT(*) as Anzahl
                FROM
                    users
                WHERE
                    ID = '"
.$id."' AND
                    Password = MD5('"
.$pass."');";
        
$result mysql_query($sql) OR die(mysql_error());
        
$row mysql_fetch_assoc($result);
        
mysql_free_result($result);
        return 
$row['Anzahl'];
    }
    
    function 
no_rights()
    {
        echo 
"<p class=\"error\">\n";
        echo 
"    Sie haben keine Berechtigung, diesen Bereich\n";
        echo 
"    zu betreten. Bitte wählen sie einen anderen\n";
        echo 
"    Bereich aus\n";
        echo 
"</p>\n";
        echo 
"<p>\n";
        echo 
"    <a href=\"index.php?section=admin&amp;".SID."\">\n";
        echo 
"        Zurück zum Adminbereich\n";
        echo 
"    </a>\n";
        echo 
"</p>\n";
    }

    function 
getRights($UID null)
    {
        if(isset(
$UID)) {
            
$sql "SELECT
                        Recht
                    FROM
                        user_rights
                    WHERE
                       UserID = '"
.$UID."';";
        } else {
            
$sql "SELECT
                        Recht
                    FROM
                        user_rights
                    WHERE
                       UserID = '"
.$_SESSION['ID']."';";
        }
        
$result mysql_query($sql) OR die(mysql_error());
        
$rights = array();
        while(
$row mysql_fetch_assoc($result)) {
            
$rights[] = $row['Recht'];
        }
        return 
$rights;
    }
?>

Ich hoffe das meine Frage verständlich war

mfg Sebastian
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 15-01-2005, 13:14
lsgdcity
 Member
Links : Onlinestatus : lsgdcity ist offline
Registriert seit: Feb 2004
Beiträge: 221
lsgdcity ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Moin,

lass dir mal die variable $sql ausgeben.

Wenn das alle Dateien sind, die für das Script nötig sind, dann frag ich mich, wo dort session_start(); steht?
Denn wenn du Sessions benutzt, musst du die Sitzung erstmal eröffnen.
Tipp: Setz session_start(); immer gaanz oben in die Datei!

Sofern du die datei "test1.php" und "test2.php" hast und diese sich nicht irgendwie includieren oder keine dritte Datei existiert, die in beiden Dateien includiert wird, musst du in jede der beiden Dateien ganz oben session_start(); einfügen, sofern du per Session was übergeben willst.

Hoffe, das war veständlich
Mit Zitat antworten
  #3 (permalink)  
Alt 15-01-2005, 14:31
Thunder_mv
 Newbie
Links : Onlinestatus : Thunder_mv ist offline
Registriert seit: Jan 2005
Beiträge: 4
Thunder_mv ist zur Zeit noch ein unbeschriebenes Blatt
Thunder_mv eine Nachricht über ICQ schicken
Standard

nein, es sind natürlich nicht alle dateien. Also

MySQL-Datenbank
CREATE TABLE users (
ID TINYINT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20),
Password CHAR(32),
Email VARCHAR(60)
);

// Bei "Passwort" in phpmyadmin md5 angeben und Passwort angeben
// Name ausdenken und mittels phpmyadmin einfügen
// bei Email genauso

CREATE TABLE user_rights (
UserID TINYINT,
Recht VARCHAR(20)
);

SELECT
Recht
FROM
user_rights
WHERE
UserID = '4'
ORDER BY
Recht ASC;

// Bei Recht "Admin" hinschreiben Bin mit aber nicht sicher

Das sind die sql datenbanken.

Die Dateien
Sind so eigentlich die wichtigsten Datien

admin.php
admin_menu.php
admin_self.php
functions.php
variablen.php
Die admin_user.php hab ich dort oben schon hingeschrieben

Komplette Homepage -> download

Geändert von Thunder_mv (15-01-2005 um 14:35 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 16-01-2005, 13:07
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Problem mit Loginsystem

Zitat:
Original geschrieben von Thunder_mv
PHP-Code:
<?php
       
if(!in_array("Admin"$rights)) {
        echo 
"<p>\n";
        echo 
"    Sie haben keine Berechtigung, diesen Bereich\n";
        echo 
"    zu betreten. Bitte wählen sie einen anderen\n";
        echo 
"    Bereich aus\n";
        echo 
"</p>\n";
        echo 
"<p>\n";
        echo 
"    <a href=\"index.php?section=admin&amp;".SID."\">\n";
        echo 
"        Zurück zum Adminbereich\n";
        echo 
"    </a>\n";
        echo 
"</p>\n";
    }
    
$rights getRights();
    if(!
in_array("Admin"$rights)) {
        
no_rights();
    } else {
       ....
    }
?>
Das mit dem "2 mal" ist doch kein Wunder...du überprüfst oben und gibst aus und unten nochmal...ich würd die obere Überprüfung mal entfernen!!!

Bist du sicher, dass du "Admin" und nicht "admin" oder so in der DB stehen hast?
Ansonsten gibt mal
PHP-Code:
echo '<pre>' print_r($rightstrue) . '</pre>'
unter der Schleife für deine Rechte ein und poste die Ausgabe.


Außerdem würde ich das
Zitat:
PHP-Code:
function getRights($UID null)
    {
        if(isset(
$UID)) { 
in das umändern
PHP-Code:
function getRights($UID null)
    {
        if(!
is_null($UID)) { 
Außerdem verstehe ich auch nicht deinen SQL-Query in der admin_user.php du hast doch die Funktion get_rights() warum also einmal direkt im Code die Rechte holen und kurz danach durch die Geholten mit der Funktion überschreiben?
Mit Zitat antworten
  #5 (permalink)  
Alt 16-01-2005, 19:40
Thunder_mv
 Newbie
Links : Onlinestatus : Thunder_mv ist offline
Registriert seit: Jan 2005
Beiträge: 4
Thunder_mv ist zur Zeit noch ein unbeschriebenes Blatt
Thunder_mv eine Nachricht über ICQ schicken
Standard

Ausgaben tut er das:

Array
(
)

Wenn ich die Überprüfung entferne, gibt er gar nichts mehr aus, außer Array (). Ich habe jetzt "admin" in der Db stehen. aber er müsste denn nicht nur Array () ausgeben, sondern auch add_user.php, oder ?
Mit Zitat antworten
  #6 (permalink)  
Alt 16-01-2005, 19:52
Payne_of_Death
 Master
Links : Onlinestatus : Payne_of_Death ist offline
Registriert seit: Dec 2002
Ort: Folterkeller Nr. 18
Beiträge: 2.953
Payne_of_Death ist zur Zeit noch ein unbeschriebenes Blatt
Payne_of_Death eine Nachricht über ICQ schicken Payne_of_Death eine Nachricht über AIM schicken Payne_of_Death eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von Thunder_mv
Ausgaben tut er das:

Array
(
)

Wenn ich die Überprüfung entferne, gibt er gar nichts mehr aus, außer Array (). Ich habe jetzt "admin" in der Db stehen. aber er müsste denn nicht nur Array () ausgeben, sondern auch add_user.php, oder ?
Du hast ein leeres Array ?

Folge das SQL Statment liefert keine Ergebnismenge.....Dieses ausgeben und mit PMA prüfen....

BTW: Es schwirren hier bei den Codeschnipsel bereits Usermanagments rum.......
__________________
MfG Payne_of_Death

Manual(s): <-| PHP | MySQL | SELFHTML |->
Merke:
Du brauchst das Rad nicht neu erfinden ! <-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

Murphy`s Importanst LAWS
Jede Lösung bringt nur neue Probleme
Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
In jedem kleinen Problem steckt ein großes, das gern raus moechte.
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

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:16 Uhr.