Loginsystem

qplay

Mitglied
Ich mache diesen tutorial http://unix.oppserver.net/php-tut/login-self.html aber ich glaube ich hab was falsch gemacht
Ich bekomme diesen meldung Notice: Undefined variable: _SESSION in C:\xampp\htdocs\admin_self.php on line 11


index.php
PHP:
<?php
    error_reporting(E_ALL);
    session_start();
      // Verbindung zu MySQL Aufbauen
    @mysql_connect('localhost', 'root', '') OR die(mysql_error());
    mysql_select_db('test') OR die(mysql_error());

    include "inc/config.php"; // die Konfigurationsdateien lesen.



   // Session starten wenn ?section=admin geöffnet wurde
    if(isset($_GET['section']) AND ("admin" == $_GET['section'])) {
        if(!isset($_SESSION['IP'])) {
            $_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
        }
        if($_SESSION['IP'] != $_SERVER['REMOTE_ADDR']) {
            echo "<p class=\"error\">\n";
            echo "    Sie dürfen nicht die Session von einem\n";
            echo "    anderen user Benutzten. Bitte benutzen sie\n";
            echo "    folgenden Link um zur Homepage zu gelangen.\n";
            echo "    <a href=\"/\">Zurück zur Homepage</a>\n";
            echo "</p>\n";
            die(); // Aus Sicherheitsgründen die Abarbeitung sofort beenden
        }
    }

    if(get_magic_quotes_gpc()) {
        array_stripslashes($_GET);
        array_stripslashes($_POST);
        array_stripslashes($_COOKIE);
    }

    echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n";
    echo "         \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
    echo "<html>\n";
    echo "    <head>\n";
    echo "        <title>Meine Seite</title>\n";
    echo "        <link rel=\"stylesheet\" type=\"text/css\" href=\"page.css\" />\n";
    echo "        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n";
    echo "    </head>\n";
    echo "    <body>\n";

    echo "        <div id=\"root\">\n"; // ganz oberer Div-Holder
    echo "            <div id=\"banner\">\n"; // banner
    include "banner.php";
    echo "            </div>\n";
    echo "            <div id=\"links\">\n"; // linkes Menu
    include "menu.php";
    echo "            </div>\n";
    echo "            <div id=\"mitte\">\n"; // In der Mitte der Inhalt
    include "inhalt.php";
    echo "            </div>\n";
    echo "            <br style=\"clear:both;\" />\n"; // css-float beenden
    echo "       </div>\n";

    echo "    </body>\n";
    echo "</html>\n";
?>
variablen.php
PHP:
<?php
    // variablen.php
    $dateien = array();
    $dateien['news'] = "news.php";
    $admin_site = array();
    $admin_site['self'] = "admin_self.php";
?>
admin.php
PHP:
<?php
@mysql_connect('localhost', 'root', '') OR die(mysql_error());
    mysql_select_db('test') OR die(mysql_error());
    // die admin.php
    if(isset($_GET['action']) AND ("logout" == $_GET['action'])) {
        session_destroy();
        echo "<p>\n";
        echo "    Sie haben sich ausgeloggt. Um wieder in den Adminbereich\n";
        echo "    zu kommen müssen sie sich wieder Einloggen\n";
        echo "</p>\n";
    } else {
        if(isset($_POST['UserID']) AND '0' == $_POST['UserID']) {
            echo "<p>\n";
            echo "    Bitte wählen sie einen Benutzernamen aus.\n";
            echo "</p>\n";
        } else {
            if(isset($_POST['UserID'], $_POST['Password']) AND
               login_right(addslashes($_POST['UserID']),
                           addslashes($_POST['Password']))) {
                $_SESSION['ID'] = $_POST['UserID'];
            }
            if(isset($_SESSION['ID'])) {
                if(isset($_GET['site']) AND isset($admin_site[$_GET['site']])) {
                    include $admin_site[$_GET['site']];
                } else {
                    include "admin_menu.php";
                    // Das Hauptmenu vom Adminbereich laden
                }
            } else {
                // Login-Formular mit der if(isset()) abfrage
            }
            if(isset($_SESSION['ID'])) {
                echo "<p>\n";
                echo "Willkommen im Adminbereich <br />\n";
                // Die Session-ID nicht vergessen
                echo "    <a href=\"index.php?section=admin&amp;'.SID.'\">Repeat</a>\n";
                echo "    <a href=\"index.php?section=admin&amp;action=logout&amp;'.SID.'\">Ausloggen</a>\n";
                echo "</p>\n";
            } else {
                if(isset($_POST['submit'])) {
                     // Der Submit-Button wurde gedrückt
                     // aber der Login ist falsch. Deshalb
                     // erstellen wir eine Fehlermeldung
                     echo "<p>\n";
                     echo "    Ungültiges Password.\n";
                     echo "</p>\n";
                }
                echo "<form action=\"index.php?section=admin\" method=\"post\" class=\"formular\">\n";
                echo "    <p>\n";
                echo "        Adminbereich\n";
                echo "    </p>\n";
                echo "    <ol>\n";
                echo "        <li>\n";
                echo "            <label for=\"name\">Name</label>\n";
                $sql = "SELECT
                            ID,
                            Name
                        FROM
                            users
                        ORDER BY
                            Name ASC;";
                $result = mysql_query($sql) OR die(mysql_error());
                echo "                <select size=\"1\" name=\"UserID\" id=\"name\">\n";
                echo "                    <option value=\"0\" selected=\"selected\">Bitte wählen</option>\n";
                while($row = mysql_fetch_assoc($result)) {
                    echo "<option value=\"".$row['ID']."\">".$row['Name']."</option>\n";
                }
                echo "                </select>\n";
                echo "        </li>\n";
                echo "        <li>\n";
                echo "            <label for=\"password\">Password</label>\n";
                echo "            <input type=\"password\" name=\"Password\" id=\"password\" />\n";
                echo "        </li>\n";
                echo "        <li>\n";
                echo "            <input type=\"submit\" name=\"submit\" value=\"Speichern\" />\n";
                echo "            <input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
                echo "        </li>\n";
                echo "    </ol>\n";
                echo "</form>\n";
            }
        }
    }
?>
admin_menu.php
PHP:
<?php
    echo "<h2>Adminbereich</h2>\n";
    echo "<p>\n";
    echo "    <a href=\"index.php?section=admin&amp;site=self&amp;'.SID.'\">\n";
    echo "        Eigenen Account bearbeiten\n";
    echo "    </a>\n";
    echo "</p>\n";
?>

admin_self.php
PHP:
<?php
// Verbindung zu MySQL Aufbauen
    @mysql_connect('localhost', 'root', '') OR die(mysql_error());
    mysql_select_db('test') OR die(mysql_error());
    $sql = "SELECT
                Name,
                Email
            FROM
                users
            WHERE
                ID = '".$_SESSION['ID']."';";
    $result = mysql_query($sql) OR die(mysql_error());
    $row = mysql_fetch_assoc($result);

    echo "<form action=\"index.php?section=admin&amp;site=self\" method=\"post\" class=\"formular\">\n";
    echo "    <p>\n";
    echo "        Eigene Daten bearbeiten\n";
    echo "    </p>\n";
    echo "    <ol>\n";
    echo "        <li>\n";
    echo "            <label for=\"name\">Name</label>\n";
    echo "            <input type=\"text\" name=\"name\" id=\"name\" value=\"".$row['Name']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"email\">Emailadresse</label>\n";
    echo "            <input type=\"text\" name=\"email\" id=\"email\" value=\"".$row['Email']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <input type=\"submit\" name=\"submit\" value=\"Speichern\" />\n";
    echo "            <input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
    echo "            <input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
    echo "        </li>\n";
    echo "    </ol>\n";
    echo "</form>\n";
    echo "<p>\n";
    echo "    <a href=\"index.php?section=admin&amp;'.SID.'\">Zurück</a>\n";
    echo "</p>\n";
?>

config.php
PHP:
<?php
    include 'constant.php';
    include 'variablen.php';
    include 'functions.php';
    include 'admin.php';
    // wir haben keine eigenen Funkionen
?>
constant.php

PHP:
<?php
    // constant.php
    define('MYSQL_HOST', 'localhost');
    define('MYSQL_USER', 'root'); // kann ich ja schlecht für
                                    // eure MySQL wissen
    define('MYSQL_PASS', ''); // s.o.
    define('MYSQL_DATABASE', 'test');  // s.o.
?>
functions.php
PHP:
<?php
    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'];
    }
?>
 
ein session_start(); in der Datei admin_self.php sollte helfen.
undefinied variable - er findet die Variable nicht --> $_SESSION[] gibt es nicht :)
 
War auch mein erster Gedanke beim Überfliegen. Tatsächlich wird die admin_self.php aber über die admin.php in die index.php eingebunden. Und dort läuft die Session zum Zeitpunkt des Fehlers aber schon. Daran sollte es also nicht hapern.
 
Ich bekomme diese meldung nur wenn ich im browser http://localhost/admin_self.php eingebe, wenn ich http://localhost/index.php eingebe bekomme ich diese Meldung nicht also ich kann mich anmelden und mein auccount bearbeiten

Ganz klarer Fall: [phpf]session_start[/phpf] fehlt!
Denn ohne die Funktion wird das Array $_SESSION nicht definiert!

In der index.php funktioniert alles hingegen, da auch diese Funktion aufgerufen wird.

War auch mein erster Gedanke beim Überfliegen. Tatsächlich wird die admin_self.php aber über die admin.php in die index.php eingebunden. Und dort läuft die Session zum Zeitpunkt des Fehlers aber schon. Daran sollte es also nicht hapern.
Allerdings wenn er die Datei direkt aufruft (Post #7, nach deinem) passiert der Fehler.
 
Danke aber jetzt habe ich einen anderen problem wenn ich einen benutzer erstelle und dann mich mit dieser benutzer anmelde bekkomme ich jetzt diesen Meldung Notice: Undefined index: IP in C:\xampp\htdocs\admin.php on line 33

admin.php
PHP:
<?php
@mysql_connect('localhost', 'root', '') OR die(mysql_error());
    mysql_select_db('test') OR die(mysql_error());
    // die admin.php
    if(isset($_GET['action']) AND ("logout" == $_GET['action'])) {
        session_destroy();
        echo "<p>\n";
        echo "    Sie haben sich ausgeloggt. Um wieder in den Adminbereich\n";
        echo "    zu kommen müssen sie sich wieder Einloggen\n";
        echo "</p>\n";
    } // ... section = login + logout
    else {
        // der Adminbereich, wenn weder action=login
        // noch action=logout ist
        if(isset($_POST['UserID']) AND '0' == $_POST['UserID']) {
            echo "<p>\n";
            echo "    Bitte wählen sie einen Benutzernamen aus.\n";
            echo "</p>\n";
        } else {
            if(isset($_POST['UserID'], $_POST['Password']) AND
               login_right(addslashes($_POST['UserID']),
                           addslashes($_POST['Password']))) {
                $_SESSION['ID'] = $_POST['UserID'];
            }
            if(isset($_SESSION['ID'])) {
                if(isset($_GET['site']) AND isset($admin_site[$_GET['site']])) {
                    include($admin_site[$_GET['site']]);
                } else {
                    //
                    // Reste in der Session löschen
                    //
                    $_SESSION = array('ID' => $_SESSION['ID'],
                                      'IP' => $_SESSION['IP']);
                    include "admin_menu.php";
                    // Das Hauptmenu vom Adminbereich laden
                }
            } else {
                echo "<p class=\"error\">\n";
                echo "    Falsches Password\n";
                echo "</p>\n";
            }


            if(isset($_SESSION['ID'])) {
                echo "<p>\n";
                echo "Willkommen im Adminbereich <br />\n";
                // Die Session-ID nicht vergessen
                echo "    <a href=\"index.php?section=admin&amp;'.SID.'\">Repeat</a>\n";
                echo "    <a href=\"index.php?section=admin&amp;action=logout&amp;'.SID.'\">Ausloggen</a>\n";
                echo "</p>\n";
            } else {
                if(isset($_POST['submit'])) {
                     // Der Submit-Button wurde gedrückt
                     // aber der Login ist falsch. Deshalb
                     // erstellen wir eine Fehlermeldung
                     echo "<p>\n";
                     echo "    Ungültiges Password.\n";
                     echo "</p>\n";
                }
                echo "<form action=\"index.php?section=admin\" method=\"post\" class=\"formular\">\n";
                echo "    <p>\n";
                echo "        Adminbereich\n";
                echo "    </p>\n";
                echo "    <ol>\n";
                echo "        <li>\n";
                echo "            <label for=\"name\">Name</label>\n";
                $sql = "SELECT
                            ID,
                            Name
                        FROM
                            users
                        ORDER BY
                            Name ASC;";
                $result = mysql_query($sql) OR die(mysql_error());
                echo "                <select size=\"1\" name=\"UserID\" id=\"name\">\n";
                echo "                    <option value=\"0\" selected=\"selected\">Bitte wählen</option>\n";
                while($row = mysql_fetch_assoc($result)) {
                    echo "<option value=\"".$row['ID']."\">".$row['Name']."</option>\n";
                }
                echo "                </select>\n";
                echo "        </li>\n";
                echo "        <li>\n";
                echo "            <label for=\"password\">Password</label>\n";
                echo "            <input type=\"password\" name=\"Password\" id=\"password\" />\n";
                echo "        </li>\n";
                echo "        <li>\n";
                echo "            <input type=\"submit\" name=\"submit\" value=\"Speichern\" />\n";
                echo "            <input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
                echo "        </li>\n";
                echo "    </ol>\n";
                echo "</form>\n";
            }
        }
    }
?>

admin_menu.php

<?php
    echo "<div class=\"adminbereich\">\n";
    echo "    <p>\n";
    echo "        Willkommen im Adminbereich\n";
    echo "    </p>\n";
    echo "    <ol class=\"bereich\">\n";
    echo "        <li>\n";
    echo "            Benutzer\n";
    echo "            <ol class=\"aktionen\">\n";
    echo "                <li>\n";
    echo "<a href=\"index.php?section=admin&amp;site=user&amp;action=add&amp;'.SID.'\">\n";
    echo "                        hinzufügen\n";
    echo "                    </a>\n";
    echo "                </li>\n";
    echo "                <li>\n";
    echo "<a href=\"index.php?section=admin&amp;site=user&amp;action=edit&amp;'.SID.'\">\n";
    echo "                        bearbeiten\n";
    echo "                    </a>\n";
    echo "                </li>\n";
    echo "                <li>\n";
    echo "<a href=\"index.php?section=admin&amp;site=user&amp;action=del&amp;'.SID.'\">\n";
    echo "                        löschen\n";
    echo "                    </a>\n";
    echo "                </li>\n";
    echo "            </ol>\n";
    echo "        </li>\n";
    echo "    </ol>\n";
    echo "    <p>\n";
    echo "        <a href=\"index.php?section=admin&amp;site=self&amp;'.SID.'\">\n";
    echo "            Eigenen Account bearbeiten\n";
    echo "        </a>\n";
    echo "    </p>\n";
    echo "</div>\n";
?>

admin_user.php
<?php
    $rights = getRights();
    if(!in_array("Admin", $rights)) {
        no_rights();
    } else {
        switch(@$_GET['action']) {
           case "add":
                if(isset($_POST['submit'])) {
                    if(!preg_match('/^\w+$/', trim($_POST['name']))) {
                        echo "<p>\n";
                        echo "    Bitte geben sie einen Name aus alphanumerischen Zeichen ein.\n";
                        echo "</p>\n";
                        echo "<p>\n";
                        echo "    <a href=\"index.php?section=admin&amp;site=user&amp;action=add&amp;".SID."\">\n";
                        echo "        Zurück zum Formular\n";
                        echo "    </a>\n";
                        echo "</p>\n";
                    } elseif(trim($_POST['email']) == "") {
                        echo "<p>\n";
                        echo "    Bitte geben sie eine Emailadresse an.\n";
                        echo "</p>\n";
                        echo "<p>\n";
                        echo "    <a href=\"index.php?section=admin&amp;site=user&amp;action=add&amp;".SID."\">\n";
                        echo "        Zurück zum Formular\n";
                        echo "    </a>\n";
                        echo "</p>\n";
                    } else {
                        $password = substr(md5(microtime()),0,8); // zufallspassword erstellen
                        $sql = "INSERT INTO
                                    users(Name, Email, Password)
                                VALUES
                                    ('".trim($_POST['name'])."',
                                     '".addslashes(trim($_POST['email']))."',
                                     MD5('".$password."'));";
                        $result = mysql_query($sql) OR die(mysql_error());
                        if(isset($_POST['send'])) {// Login-Daten per Email schicken
                            $mailbody  = "Zugangsdaten zur Homepage:\n";
                            $mailbody .= "Name: ".trim($_POST['name'])."\n";
                            $mailbody .= "Password: ".$password."\n";
                            $mailbody .= "Bitte loggen sie sich ein und ändern sie das Password.\n";
                            if(mail(trim($_POST['email']), "Zugangsdaten", $mailbody)) {
                                echo "<p>\n";
                                echo "    Account wurde hinzugefügt und die Zugangsdaten wurden zum\n";
                                echo "    Benutzer geschickt.\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";
                            } else {
                                echo "<p>\n";
                                echo "    Account wurde hinzugefügt, doch es konnte keine Email\n";
                                echo "    verschickt werden.\n";
                                echo "</p>\n";
                                echo "<p>\n";
                                echo "    Logindaten <br />\n";
                                echo "    Name: ".trim($_POST['name'])."<br />\n";
                                echo "    Password: ".$password."<br />\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";
                            }
                        } else {
                            echo "<p>\n";
                            echo "    Account wurde hinzugefügt.\n";
                            echo "</p>\n";
                            echo "<p>\n";
                            echo "    Logindaten <br />\n";
                            echo "    Name: ".trim($_POST['name'])."<br />\n";
                            echo "    Password: ".$password."<br />\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";
                        }
                    }
                } else {
                    echo "<form ".
                         "action=\"index.php?section=admin&amp;site=user&amp;action=add\" ".
                         "method=\"post\" ".
                         "class=\"formular\">\n";
                    echo "    <p>\n";
                    echo "        Neuen Benutzer hinzufügen\n";
                    echo "    </p>\n";
                    echo "    <ol>\n";
                    echo "        <li>\n";
                    echo "            <label for=\"name\">Name</label>\n";
                    echo "            <input type=\"text\" name=\"name\" id=\"name\" />\n";
                    echo "        </li>\n";
                    echo "        <li>\n";
                    echo "            <label for=\"email\">Emailadresse</label>\n";
                    echo "            <input type=\"text\" name=\"email\" id=\"email\" />\n";
                    echo "        </li>\n";
                    echo "        <li>\n";
                    echo "            <label for=\"send\">\n";
                    echo "                Zugangsdaten per Email zuschicken lassen\n";
                    echo "            </label>\n";
                    echo "            <input type=\"checkbox\" name=\"send\" id=\"send\" />\n";
                    echo "        </li>\n";
                    echo "        <li>\n";
                    echo "            <input type=\"submit\" name=\"submit\" value=\"Benutzer hinzufügen\" />\n";
                    echo "            <input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
                    echo "            <input type=\"hidden\" name=\"".session_name()."\" ".
                                                            "value=\"".session_id()."\" />\n";
                    echo "        </li>\n";
                    echo "    <ol>\n";
                    echo "</form>\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";
                }
                break;

                case 'del':
        if(isset($_POST['submit'])) {
            if(!$_POST['uid']) { // gucken ob == 0 ist
                echo "<p class=\"error\">\n";
                echo "    Bitte wählen sie einen Benutzer aus<br />\n";
                echo "    <a href=\"index.php?section=admin&amp;site=user&amp;action=del\">\n";
                echo "        Zurück zum Formular\n";
                echo "    </a>\n";
                echo "</p>\n";
            } else {
                $sql = "DELETE FROM
                            user_rights
                        WHERE
                            UserID = '".$_POST['uid']."';";
                mysql_query($sql) OR die(mysql_error());
                $sql = "DELETE FROM
                            users
                        WHERE
                            ID = '".$_POST['uid']."';";
                mysql_query($sql) OR die(mysql_error());
                echo "<p>\n";
                echo "    Der User wurde gelöscht.\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";
            }
        } else {
            echo "<form ".
                 "action=\"index.php?section=admin&amp;site=user&amp;action=del\" ".
                 "method=\"post\" ".
                 "class=\"formular\">\n";
            echo "    <p>\n";
            echo "        Benutzer löschen\n";
            echo "    </p>\n";
            echo "    <ol>\n";
            echo "        <li>\n";
            echo "            <label for=\"name\">Benutzer</label>\n";
            $sql = "SELECT
                        Name, ID
                    FROM
                        users
                    ORDER BY
                        Name ASC;";
            $result = mysql_query($sql) OR die(mysql_error());
            echo "                <select id=\"name\" name=\"uid\">\n";
            echo "                    <option value=\"0\" selected=\"selected\">Bitte einen User wählen</option>\n";
            while($row = mysql_fetch_assoc($result)) {
                echo "<option value=\"".$row['ID']."\">".$row['Name']."</option>\n";
            }
            echo "                </select>\n";
            echo "        </li>\n";
            echo "        <li>\n";
            echo "            <input type=\"submit\" name=\"submit\" value=\"Benutzer löschen\" />\n";
            echo "            <input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
            echo "            <input type=\"hidden\" name=\"".session_name()."\" ".
                                                    "value=\"".session_id()."\" />\n";
            echo "        </li>\n";
            echo "    <ol>\n";
            echo "</form>\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";
        }
        break;

            case 'edit':
        if(isset($_POST['submit']) AND "Benutzer auswählen" == $_POST['submit']) {
            if(!$_POST['uid']) {
                echo "<p class=\"error\">\n";
                echo "    Bitte wählen sie einen Benutzer aus<br />\n";
                echo "    <a href=\"index.php?section=admin&amp;site=user&amp;action=del\">\n";
                echo "        Zurück zum Formular\n";
                echo "    </a>\n";
                echo "</p>\n";
            } else {
                $_SESSION['uid'] = $_POST['uid']; // Die UserID in der Session speichern.
                $rights = getRights($_SESSION['uid']); // Die Rechte vom User holen
                $sql = "SELECT
                            Name
                        FROM
                            users
                        WHERE
                            ID = '".$_SESSION['uid']."';";
                $result = mysql_query($sql) OR die(mysql_error());
                $Name = mysql_result($result, 0);
                echo "<form ".
                     "action=\"index.php?section=admin&amp;site=user&amp;action=edit\" ".
                     "method=\"post\" ".
                     "class=\"formular\">\n";
                echo "    <p>\n";
                echo "        Benutzer ".$Name." bearbeiten\n";
                echo "    </p>\n";
                echo "    <ol>\n";
                echo "        <li>\n";
                echo "            Rechte:\n";
                $allRights = array();
                $allRights[] = "Admin";
                $allRights[] = "News";
                // .. und weitere
                sort($allRights);
                echo "            <ul>\n";
                foreach($allRights as $value) {
                    echo "<li>\n";
                    echo "    <input id=\"".$value."\" type=\"checkbox\" name=\"rights[]\"";
                    if(in_array($value, $rights)) {
                        echo " checked=\"checked\"";
                    }
                    echo " value=\"".$value."\" />\n";
                    echo "    <label for=\"".$value."\">".$value."</label><br />\n";
                }
                echo "            </ul>\n";
                echo "        </li>\n";
                echo "        <li>\n";
                echo "            <input type=\"submit\" name=\"submit\" value=\"Rechte speichern\" />\n";
                echo "            <input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
                echo "            <input type=\"hidden\" name=\"".session_name()."\" ".
                                                            "value=\"".session_id()."\" />\n";
                echo "    </ol>\n";
                echo "</form>\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";
            }
        } elseif(isset($_POST['submit']) AND "Rechte speichern" == $_POST['submit']) {
            if(!isset($_POST['rights'])) {
                echo "<p class=\"error\">\n";
                echo "    Sie müssen mindestens ein Recht angeben.\n";
                echo "</p>\n";
            } else {
                $sql = "DELETE FROM
                            user_rights
                        WHERE
                            UserID = '".$_SESSION['uid']."';";
                mysql_query($sql) OR die(mysql_error());
                // alle Vorhandenen Rechte löschen
                // und nun die angewählten hinzufügen
                foreach($_POST['rights'] as $right) {
                    $sql = "INSERT INTO
                                user_rights(userID, Recht)
                            VALUES
                                ('".$_SESSION['uid']."',
                                 '".$right."');";
                    mysql_query($sql) OR die(mysql_error());
                }
                echo "<p>\n";
                echo "    Die Rechte wurden gespeichert.\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";
            }
        } else {
            echo "<form ".
                 "action=\"index.php?section=admin&amp;site=user&amp;action=edit\" ".
                 "method=\"post\" ".
                 "class=\"formular\">\n";
            echo "    <p>\n";
            echo "        Benutzer bearbeiten\n";
            echo "    </p>\n";
            echo "    <ol>\n";
            echo "        <li>\n";
            echo "            <label for=\"name\">Benutzer</label>\n";
            $sql = "SELECT
                        Name, ID
                    FROM
                        users
                    ORDER BY
                        Name ASC;";
            $result = mysql_query($sql) OR die(mysql_error());
            echo "                <select id=\"name\" name=\"uid\">\n";
            echo "                    <option value=\"0\" selected=\"selected\">Bitte einen User wählen</option>\n";
            while($row = mysql_fetch_assoc($result)) {
                echo "<option value=\"".$row['ID']."\">".$row['Name']."</option>\n";
            }
            echo "                </select>\n";
            echo "        </li>\n";
            echo "        <li>\n";
            echo "            <input type=\"submit\" name=\"submit\" value=\"Benutzer auswählen\" />\n";
            echo "            <input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
            echo "            <input type=\"hidden\" name=\"".session_name()."\" ".
                                                    "value=\"".session_id()."\" />\n";
            echo "        </li>\n";
            echo "    <ol>\n";
            echo "</form>\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";
        }
        break;

        }
    }
?>

functions.php
<?php
    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;
    }

?>
variablen.php
<?php
    // variablen.php
    $dateien = array();
    $dateien['news'] = "news.php";
    $admin_site = array();
    $admin_site['self'] = "admin_self.php";
    $admin_site['user'] = "admin_user.php";
    $allRights = array ();
?>
admin_self.php

<?php
// Verbindung zu MySQL Aufbauen
    @mysql_connect('localhost', 'root', '') OR die(mysql_error());
    mysql_select_db('test') OR die(mysql_error());
     if(isset($_POST['submit']) AND "Speichern" == $_POST['submit']) {
        if(!preg_match('/^\w+$/', trim($_POST['name']))) {
            echo "<p>\n";
            echo "    Bitte benutzen sie einen Name nur aus Alphanumerischen\n";
            echo "    Zeichen (Zahlen und Buchstaben).\n";
            echo "</p>\n";
        } else {
            // ggf. eine Emailadresse überprüfung
            // siehe dazu http://www.php-faq.de/ > Regex

            $sql = "UPDATE
                        users
                    SET
                        Name = '".trim($_POST['name'])."',
                        Email = '".addslashes(trim($_POST['email']))."'
                    WHERE
                        ID = '".$_SESSION['ID']."';";
            // bei Name kein addslashes(), da Name eh
            // nur \w+ sein kann.
            mysql_query($sql) OR die(mysql_error());
            echo "<p>\n";
            echo "    Ihre Daten wurde gespeichert\n";
            echo "</p>\n";
        }
    }
    if(isset($_POST['submit']) AND "Neues Password speichern" == $_POST['submit']) {
        if(trim($_POST['password']) == "") {
            echo "<p class=\"error\">\n";
            echo "    Bitte geben sie ein Password ein, welches ich\n";
            echo "    auch Speichern soll.\n";
            echo "</p>\n";
        } elseif(trim($_POST['password']) != trim($_POST['password2'])) {
            echo "<p class=\"error\">\n";
            echo "    Bitte geben sie 2 gleiche Passwörter ein\n";
            echo "</p>\n";
        } else {
            $sql = "UPDATE
                        users
                    SET
                        Password = MD5('".trim($_POST['password'])."')
                    WHERE
                        ID = '".$_SESSION['ID']."';";
            mysql_query($sql) OR die(mysql_error());
            echo "<p>\n";
            echo "    Das Password wurde gespeichert. Sie brauchen sich nicht\n";
            echo "    neu einloggen.\n";
            echo "</p>\n";
        }
    }
    $sql = "SELECT
                Name,
                Email
            FROM
                users
            WHERE
                ID = '".$_SESSION['ID']."';";
    $result = mysql_query($sql) OR die(mysql_error());
    $row = mysql_fetch_assoc($result);

    echo "<form action=\"index.php?section=admin&amp;site=self\" method=\"post\" class=\"formular\">\n";
    echo "    <p>\n";
    echo "        Eigene Daten bearbeiten\n";
    echo "    </p>\n";
    echo "    <ol>\n";
    echo "        <li>\n";
    echo "            <label for=\"name\">Name</label>\n";
    echo "            <input type=\"text\" name=\"name\" id=\"name\" value=\"".$row['Name']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"email\">Emailadresse</label>\n";
    echo "            <input type=\"text\" name=\"email\" id=\"email\" value=\"".$row['Email']."\"/>\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <input type=\"submit\" name=\"submit\" value=\"Speichern\" />\n";
    echo "            <input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
    echo "            <input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
    echo "        </li>\n";
    echo "    </ol>\n";
    echo "</form>\n";
    echo "<form action=\"index.php?section=admin&amp;site=self\" method=\"post\" class=\"formular\">\n";
    echo "    <p>\n";
    echo "        Neues Password erstellen\n";
    echo "    </p>\n";
    echo "    <ol>\n";
    echo "        <li>\n";
    echo "            <label for=\"password\">Neues Password</label>\n";
    echo "            <input type=\"password\" name=\"password\" id=\"password\" />\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <label for=\"password2\">Bestätigung</label>\n";
    echo "            <input type=\"password\" name=\"password2\" id=\"password2\" />\n";
    echo "        </li>\n";
    echo "        <li>\n";
    echo "            <input type=\"submit\" name=\"submit\" value=\"Neues Password speichern\" />\n";
    echo "            <input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
    echo "            <input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
    echo "        </li>\n";
    echo "    </ol>\n";
    echo "</form>\n";
    echo "<p>\n";
    echo "    <a href=\"index.php?section=admin&amp;'.SID.'\">Zurück</a>\n";
    echo "</p>\n";
?>
 
Zuletzt bearbeitet von einem Moderator:
Bitte packe nächstes Mal dein Code in die sog. Code-Tags: [code=php]Code[/code]
Dann ist er sehr schön farblich formatiert!

Zu deinem Problem
Die Fehlermeldung besagt eigentlich alles nötige: Undefined index
Das heißt du greifst auf einen Index (=Element), in einem Array zu, das nicht existiert.

In diesem Fall greifst du auf $_SESSION['IP'] zu, das nicht existiert.
 
Zurück