qplay: Loginsystem

Ich habe mir einen neuen eigenes loginsytem erstellt wenn ich mich auslogge bekomme ich diese meldung
Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in C:\xampp\htdocs\admin.php on line 6
Hab keinen Schimmer, woran es liegen könnte.
Danke für die Hilfe(n)

meine php skripte:

index.php

<?php  
    error_reporting(E_ALL);  
    include "inc/config.php"; // die Konfigurationsdateien lesen.  
  
    // Verbindung zu MySQL Aufbauen  
    @mysql_connect('localhost', 'root', '') OR die(mysql_error());  
    mysql_select_db('test') OR die(mysql_error());  
  
  
   // Session starten wenn ?section=admin geöffnet wurde  
    if(isset($_GET['section']) AND ("admin" == $_GET['section'])) {  
        session_start();  
        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";  
?>

admin.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'])) {  
                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";  
            }  
        }  
    }  
?>

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'];  
    }  
?>

config.php

<?php  
    include 'constant.php';  
    include 'variablen.php';  
    include 'functions.php';  
    include 'admin.php';  
  
?>
  1. Hi,

    Ich glaube das Problem ist folgendes:

    Zuerst bindest du die config.php ein, in dieser bindest du die admin.php ein, das heißt die admin.php wird in der include-Zeile ausgeführt, beim logout trifft in dieser dann diese if(isset($_GET['action']) AND ("logout" == $_GET['action'])) Bedingung zu, und dann führst du session_destroy(); aus, obwohl session_start(); noch nicht ausgeführt wurde, das kommt nämlich nur wenn diese /* Session starten wenn ?section=admin geöffnet wurde */ if(isset($_GET['section']) AND ("admin" == $_GET['section'])) zutrifft.

    Man kann eine Session nicht zerstören, wenn diese nicht vorher geöffnet wurde, also am besten ganz oben in die index.php "session_start();" reischreiben, dann bist du auf der sicheren Seite.

    bruno1

    1. Ich habe jetzt die index.php verändert die meldung ist jetzt weg aber vorher wenn ich Repeat gedrückt habe
      war ich wieder bei loginformular wenn ich jetzt Repeat drücke passiert nichts.

      index.php

      <?php  
          error_reporting(E_ALL);  
        
        
          // Verbindung zu MySQL Aufbauen  
          @mysql_connect('localhost', 'root', '') OR die(mysql_error());  
          mysql_select_db('test') OR die(mysql_error());  
        
        
         // Session starten wenn ?section=admin geöffnet wurde  
          if(isset($_GET['section']) AND ("admin" == $_GET['section'])) {  
              session_start();  
              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  
              }  
          }  
          include "inc/config.php"; // die Konfigurationsdateien lesen.  
          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";  
      ?>
      
      1. Ich habe jetzt die index.php verändert die meldung ist jetzt weg aber vorher wenn ich Repeat gedrückt habe
        war ich wieder bei loginformular wenn ich jetzt Repeat drücke passiert nichts.

        Was bedeutet, es passiert nichts?
        Bleibst du auf der admin-Seite?
        Im Prinzip ist die Session so gebaut, dass du das login-Formular erst wieder siehst, wenn du dich ausgeloggt hast.

        Das verschieben des includes ist zwar in Ordnung, ich habe aber was anderes gemeint:

        index.php

        <?php  
            error_reporting(E_ALL);  
            session_start();  
            include "inc/config.php"; // die Konfigurationsdateien lesen.  
          
            // Verbindung zu MySQL Aufbauen  
            @mysql_connect('localhost', 'root', '') OR die(mysql_error());  
            mysql_select_db('test') OR die(mysql_error());  
          
          
           // 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";  
        ?>
        

        Das sollte im Prinzip funktionieren.

        bruno1

        P.S. Du musst dich nicht auf jeder Seite neu in MySQL einloggen, einmal auf der index.php gilt für alle mit include eingebundenen Seiten.

        1. Ich habe jetzt die index.php verändert die meldung ist jetzt weg aber vorher wenn ich Repeat gedrückt habe
          war ich wieder bei loginformular wenn ich jetzt Repeat drücke passiert nichts.

          Was bedeutet, es passiert nichts?
          Bleibst du auf der admin-Seite?
          Im Prinzip ist die Session so gebaut, dass du das login-Formular erst wieder siehst, wenn du dich ausgeloggt hast.

          Was muss eigentlich passieren wenn man repeat drückt?^^

          P.S. Du musst dich nicht auf jeder Seite neu in MySQL einloggen, einmal auf der index.php gilt für alle mit include eingebundenen Seiten.

          Wenn ich aber nicht auf jeder Seite neu in MySQL einlogge bekomme ich diesen Meldung     Name No database selected

          1. Hi,

            Was muss eigentlich passieren wenn man repeat drückt?^^

            Ich weiß nicht, ob ich dein Programm komplett richtig verstanden habe, aber so wie ich das sehe bleibst du auf der administrationsseite, bis du dich ausgeloggt hast.
            Wenn das nicht zutrifft, dann bin ich mit meinem Latein am Ende, und du musst jemand anderes fragen.

            Wenn ich aber nicht auf jeder Seite neu in MySQL einlogge bekomme ich diesen Meldung     Name No database selected

            Sorry, mein Fehler, du musst das dann auf der index.php nach ganz oben verschieben:

            <?php  
            session_start();  
            // Verbindung zu MySQL Aufbauen  
            @mysql_connect('localhost', 'root', '') OR die(mysql_error());  
            mysql_select_db('test') OR die(mysql_error());  
            include 'config.php'  
            // Der ganze Rest
            

            bruno1

            1. Ich bearbeite jetzt meine Loginaccount aber ich bekomme wieder einen meldugn
              :(
              Notice: Undefined variable: _SESSION in C:\xampp\htdocs\admin_self.php on line 11

              <?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";  
              ?>
              
              1. Hello,

                Ich bearbeite jetzt meine Loginaccount aber ich bekomme wieder einen meldugn
                :(
                Notice: Undefined variable: _SESSION in C:\xampp\htdocs\admin_self.php on line 11

                <?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

                Spätestens hier müsste die Session gestartet worden sein und das Vorhandensein von $_SESSION['ID'] geprüft worden sein. Wenn es eine neue Session wäre, würde ja vielleicht noch gar nichts drinstehen.

                ID = '".$_SESSION['ID']."';";

                ...

                ?>

                Liebe Grüße aus dem schönen Oberharz  
                  
                  
                Tom vom Berg  
                ![](http://selfhtml.bitworks.de/Virencheck.gif)  
                  
                
                -- 
                 ☻\_  
                /▌  
                / \ Nur selber lernen macht schlau  
                <http://bergpost.annerschbarrich.de>
                
                1. Die Session startet doch beim index.php schon??

                  index.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";
                  ?>
                  

                  admin.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
                      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
                  // 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";
                  ?>
                  

                  variablen.php

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

                  constant.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.
                  ?>
                  

                  variables.php

                  <?php
                  // zum Beispiel in der variables.php angelegt
                  $dateien = array();
                  $dateien['news'] = 'news.php';
                  $dateien['forum'] = 'forum.php';
                  $dateien['downloads'] = 'dl.php';
                  $dateien['login'] = 'login.php';
                  // ...
                  ?>
                  

                  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'];
                      }
                  ?>
                  

                  config.php

                  <?php
                      include 'constant.php';
                      include 'variablen.php';
                      include 'functions.php';
                      include 'admin.php';
                      // wir haben keine eigenen Funkionen
                  ?>
                  
                  1. Hello,

                    Die Session startet doch beim index.php schon??

                    Und um welchen Programmteil hat es sich dann in https://forum.selfhtml.org/?t=206338&m=1400575 gehandelt?

                    Du erwartest doch hoffentlich nicht, dass wir hier wissen, wie dein System zusammengestöpselt ist? Das ist eine deiner wichtigsten Aufgaben, Dokumentation zu betreiben, Zusammenhänge zu erläutern und einzeln publizierte Programmteile so zu kennzeichnen, dass man sofort weiß, was sie repräsentieren und wohin sie gehören, also in welchem Umfeld sie Eingebunden werden.

                    Hast Du schon mal ein Flowchart angefertigt von den ganzen Teilen?

                    Liebe Grüße aus dem schönen Oberharz

                    Tom vom Berg

                    --
                     ☻_
                    /▌
                    / \ Nur selber lernen macht schlau
                    http://bergpost.annerschbarrich.de
  2. Hello,

    Du solltest von Anfang an in mindestens drei, vermutlich vier Ebenen unterteilen

    Display:       Zeigt die benötigten Benutzereingabemasken

    Login:         Ist der interaktive Vorgang, der benötigt wird, um die benötigten Daten
                   auf Nutzerseite zu beschaffen und den Status zu ändern.

    Authenticate:  Ist Funktion, die mit Hilfe eines Statusmerkers (z.B. Session-ID)
                   bei jedem Request den Benutzerstatus zu überprüfen

    Rights:        ist die Funktion, die aus einem definierten Benutzerstatus für jede
                   bereitgestellte Funktionalität des Programmes feststellt, ob diese
                   Funktionalität dem Benutzer zur Verfügung gestellt werden darf.

    Und ebenso solltest Du ausgliedern in eigenen Funktionen:

    • den Sessionlayer (hier ist ein Singleton sinnvoll)
    • die Datenbankverbindung (hier ist genau nachzudenken, ob man ein Singleton haben will,
                                 oder ob mehrere Connections [zur selben DB]
                                 gleichzeitig möglich sein sollen)
    • die Datenbankzugriffe
      ...

    Das führt dann zu einer hohen Wiederverwendbarkeit des Codes und einer klaren Aufgabenteilung über das gesamte Projekt hinweg.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. Liebe(r) qplay,

    Deine seitenlangen echos mit HTML-Code sind nicht sinnvoll. Besser Du lagerst den Code in echte HTML-Dateien aus, die Du als Vorlagendateien nutzt und deren Inhalt Du in Variablen einliest, veränderst/ausfüllst und dann am Ende Deiner Scripte mit einem einzigen echo ausgibst.

    Diese ständigen echos machen spätestens dann Probleme, wenn Du "unterwegs" plötzlich neue header()-Funktionen brauchst, oder Cookie-Daten ändern willst.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)