[Apache, phpmyadmin, html, PHP, ...] Datenbank mit webbasiertem Zugriff erstellen

  • Ersteller Ersteller boss3D
  • Erstellt am Erstellt am
Puh, okay ... bis zum fünften Code war ich noch dabei, dann hast du mich verloren ... aber der Reihe nach. Ich poste erstmal meine Codes, wie sie derzeit ausschauen (ich versuche ja jetzt, das ganze an dein System anzunähern). Natürlich funktioniert noch "nichts", weil ich jetzt, auch wegen der index.php, ehrlich gesagt keinen Plan mehr habe, wo (in welchen Files) ich jetzt das "session_start()" brauche. Und einige Verweise zwischen den Files klappen jetzt auch nicht mehr. Aber als erstes will ich mal das Registrieren/Einloggen richten, bevor ich mir dann im nächsten Schritt wieder projektzeiterfassung.php anschaue ...

index.php
PHP:
<?php
    $login = false;
    
    include('formular.php');
    
    if (!isset($_SESSION['name'])) {
        include('login.php');
        $login = true;
    } else {
        include('projektzeiterfassung.php');
    }        
?>
login.php
PHP:
<?php
    session_start();
        
    $verbindung = mysql_connect("localhost", "root" , "root") or die ("Verbindung zur Datenbank konnte nicht hergestellt werden.");
    mysql_select_db ("projektzeiterfassung") or die ("Datenbank konnte nicht ausgewählt werden.");
    
    unset($_POST['btnReg']);
    echo '<!doctype html>';
    echo '<html><head><meta charset="ISO-8859-1">';
    echo '<link rel="stylesheet" type="text/css" href="style.css">';
    echo '<title>Projektzeiterfassung</title></head><body>';
    echo '<br><div class="submit"><form action="login.php" method="post">';
    echo '<br><h1>Projektzeiterfassung</h1>';
    if (!isset($_POST['btnReg'])) {    
        echo '<table><th>Login</th></table>';
        echo '<p>Ihr Username:</p>
                <input type="text" size="24" maxlength="50" name="username"><br>';
        echo '<p>Ihr Passwort:</p>
                <input type="password" size="24" maxlength="50" name="password"><br><br>';
        echo '    <input type="submit" name="btnLog" value="Einloggen"><br><br>
                <input type="submit" name="btnReg" value="Registrieren">';
        echo '</form></div><br>';
    }
            
    $salt = "#sf$!\"ä\"\$asd³s²a~§653 sa51d75qÖAa@üeX";
    
    if (isset($_POST['btnLog'])) {    
        $username = $_POST['username'];
        $erg = mysql_query("SELECT passwort FROM user WHERE name='".$username."'");
        $row = mysql_fetch_object($erg);
        $password = hash('sha512', ($_POST['password']).$salt);
        if ($row->passwort == $password) {
            $_SESSION['name'] = $username;
            $_SESSION['id'] = $row->id;
            $_SESSION['rechte'] = $row->rechte;
            header('Location: http://localhost/db/projektzeiterfassung.php');
        } else {            
            echo '<br><div class="submit"><form action="login.php">Benutzername und/oder Passwort waren falsch.<br><br><input type="submit" value="Login"></form></div>';
        }
    } elseif (isset($_POST['btnReg'])) {
        echo '<table><th>Registrierung</th></table>
                <p>Bitte geben Sie einen Usernamen ein:</p>
                    <input type="text" size="24" maxlength="50" name="username"><br>
                <p>Bitte geben Sie ein Passwort ein:</p>
                    <input type="password" size="24" maxlength="50" name="passwort"><br>
                <p>Passwort wiederholen:</p>
                    <input type="password" size="24" maxlength="50" name="passwort2"><br><br>
                <input type="submit" name="btnReg" value="Registrieren">
            </form></div>';
        $username = $_POST['username'];
        if (isset($_POST["passwort"]) and $_POST["passwort"] != "" and isset($_POST["passwort2"]) and $_POST["passwort2"] != "") {    
            $passwort = $_POST['passwort'];
            $passwort2 = $_POST['passwort2'];
        }
        if ($username == "test") {
            $rechte = 0;
        } else {
            $rechte = 1;
        }
        if ($passwort != $passwort2 or $username == "" or $passwort == "") {    
            echo '<br><div class="submit"><form action="login.php">Eingabefehler. Bitte alle Felder korrekt ausfüllen.<br><br><input type="submit" value="Zurück"></form></div>';
            exit;
        }
        $passwort = hash('sha512', ($passwort).$salt);

        $erg = mysql_query("SELECT id FROM user WHERE name='".$username."'");
        $id = mysql_num_rows($erg);

        if ($id == 0) {
            $eintragen = mysql_query("INSERT INTO user (name, passwort, rechte) VALUES ('$username', '$passwort', '$rechte')");
            if ($eintragen == true) {                
                echo '<br><div class="submit"><form action="login.php">Benutzer <b>'.$username.'</b> wurde erstellt.<br><br><input type="submit" value="Login"></form></div>';  
            } else {        
                echo '<br><div class="submit"><form action="login.php">Fehler beim Speichern des Benutzernamens.<br><br><input type="submit" value="Zurück"></form></div>';
            }
        } else {
            echo '<br><div class="submit"><form action="login.php">Benutzername schon vorhanden.<br><br><input type="submit" value="Zurück"></form></div>';
        }
    }
    
    echo '</body>
        </html>';
?>
registrieren.php
PHP:
<?php

// hier also den ganzen Registrier-Code aus login.php einfügen?

?>
projektzeiterfassung.php
PHP:
<?php
    session_start();

    $verbindung = mysql_connect("localhost", "root" , "root") or die ("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("projektzeiterfassung") or die ("Datenbank konnte nicht ausgewählt werden.");
    
    if (isset($_SESSION['name']) and isset($_SESSION['id']) and isset($_SESSION['rechte'])) {
        $user = $_SESSION['name'];
        $userid = $_SESSION['id'];
        $rechte = $_SESSION['rechte'];
    }

    $kw = date('W');  
    $jahr = date('Y');
    $monat = date('m');
    $wt = date('N');  
    $tag = date('j') - ($wt - 1);  
    $wochenanfang = mktime(12, 0, 0, $monat, $tag, $jahr);  
    $wochenende = mktime(12, 0, 0, $monat, ($tag + 6), $jahr);
    
    if (isset($_POST['wa'])) {
        $wochenanfang = $_POST['wa'];
    }
    if (isset($_POST['we'])) { 
        $wochenende = $_POST['we'];
    }

    if (isset($_POST['prevWeek'])) {
        $wochenanfang -= 60 * 60 * 24 * 7;
        $wochenende   -= 60 * 60 * 24 * 7;
    }
    if (isset($_POST['nextWeek'])) {
        $wochenanfang += 60 * 60 * 24 * 7;
        $wochenende   += 60 * 60 * 24 * 7;
    }

    $kw = date('W', $wochenanfang);
    $jahr = date('Y', $wochenanfang);
    $monat = date('n', $wochenanfang);
    $tag = date('j', $wochenanfang);

    echo '<!doctype html>
            <html>
            <head>
            <meta charset="ISO-8859-1">
            <link rel="stylesheet" type="text/css" href="style.css">
            <title>Projektzeiterfassung</title>
            </head> 
            <body>
            <form action="formular.php" method="post">';
    echo '    <link rel="stylesheet" type="text/css" href="style.css">';
    echo '    <br><h1>Projektzeiterfassung: '.$user.'</h1>';
    echo '    <table>';
    echo '  <tr>';
    echo '    <td colspan="10" class="head_cap">';
    echo '      <table style="width:100%; border:none; background-color:#A9F5BC;"><tr>';
    echo '        <td style="border:none" align="left"><input type="submit" value="<<" name="prevWeek" class="switch"></td>';  
    echo '        <td style="width:90%; border:none; text-align:center">';
    if (date('Y', $wochenanfang) <> date('Y', $wochenende)) {
        echo '            Kalenderwoche '.$kw.': '.date('j.m.', $wochenanfang).' - '.date('j.m.Y', $wochenende);
    } else {
        echo '            Kalenderwoche '.$kw.': '.date('j.m.Y', $wochenanfang).' - '.date('j.m.Y', $wochenende);
    }
    echo '            <input type="hidden" value="'.$wochenanfang.'" name="wa">';  
    echo '            <input type="hidden" value="'.$wochenende.'" name="we">';  
    echo '          </td>';
    echo '        <td style="border:none" align="right"><input type="submit" value=">>" name="nextWeek" class="switch"></td>';  
    echo '      </tr></table>';
    echo '    </td>';
    echo '  </tr>';
    echo '    <tr>
                <th>Tätigkeit</th>
                <th>Produkt</th>
                <th>Beschreibung</th>
                <th width="150">MO <input name="mo" type="text" size="10" maxlength="10"></th>
                <th width="150">DI <input name="di" type="text" size="10" maxlength="10"></th>
                <th width="150">MI <input name="mi" type="text" size="10" maxlength="10"></th>
                <th width="150">DO <input name="do" type="text" size="10" maxlength="10"></th>
                <th width="150">FR <input name="fr" type="text" size="10" maxlength="10"></th>
                <th width="150">SA <input name="sa" type="text" size="10" maxlength="10"></th>
                <th width="150">SO <input name="so" type="text" size="10" maxlength="10"></th>
            </tr>';
    
    $taetigkeiten = array();
    $sql_t = "SELECT * FROM taetigkeiten;";
    $res_t = mysql_query($sql_t) or die ("Get Taetigkeiten failed.<br>".mysql_error());
    if (mysql_num_rows($res_t))
        while ($row_t = mysql_fetch_assoc($res_t)) {
            $taetigkeiten[count($taetigkeiten)] = $row_t;
        }

    $products = array();
    $sql_p = "SELECT * FROM produkte;";
    $res_p = mysql_query($sql_p) or die ("Get Produkte failed.<br>".mysql_error());
    if (mysql_num_rows($res_p))
        while ($row_p = mysql_fetch_assoc($res_p)) {
            $products[count($products)] = $row_p;
        }
      
    if( isset($_GET['add'])) {
        $add = $_GET['add']; 
        $add++;
    } elseif (!isset($_GET['rem'])) {
        $add = 1;
    }
    if ( isset($_GET['rem'])) { 
        $add = $_GET['rem']; 
        $add--;
    }

    for ($a = 1; $a <= $add; $a++) {
        echo '<tr><td><select name="taetigkeit'.$a.'">';
        foreach ($taetigkeiten as $taetigkeit) {
            echo '<option value="'.$taetigkeit['taetigkeit'].'">'.$taetigkeit['taetigkeit'].'</option>';
        }
        echo '</select></td>';

        echo '<td><select name="product'.$a.'">';
        foreach ($products as $product) {
            echo '<option value="'.$product['produkt'].'">'.$product['produkt'].'</option>';
        }
        echo '</select></td>';

        echo '<td><input name="beschreibung'.$a.'" type="text" size="50" maxlength="250"></td>';

        echo '<td><input name="montag'.$a.'" type="text" size="10" maxlength="5""></td>';
        echo '<td><input name="dienstag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="mittwoch'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="donnerstag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="freitag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="samstag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="sonntag'.$a.'" type="text" size="10" maxlength="5"></td></tr>';
    } 
    echo '</table><br>';

    echo '<div class="submit"><button name="add" type="button" value="Zeile hinzufügen" onclick="window.location.href=\'projektzeiterfassung.php?add='.$add.'\';">Neue Eingabezeile hinzufügen</button> <button name="rem" type="button" value="Zeile entfernen" onclick="window.location.href=\'projektzeiterfassung.php?rem='.$add.'\';">Eingabezeile entfernen</button></div><br>';
    echo '<input type="hidden" name="add" value="'.$add.'">';

    echo '<div class="submit"><input type="submit" name="confirm" value="Bestätigen"> Schreibt Einträge in Datenbank ...</div>';
    echo '</form>';
    
    echo '<div class="submit"><br><br><br><form action="auswerten.php"><input type="submit" value="Bisherige Einträge in Datenbank anzeigen"> Eigene Einträge anzeigen ...</form>';
    if ($rechte == 0) {
        echo '<br><form action="auswerten2.php"><input type="submit" value="Einträge für folgenden Mitarbeiter anzeigen"> <input name="mitarbeiterdb" type="text" size="30" maxlength="30"></form></div>';

    } else {
        echo '</div>';
    }
    
    echo '</body>';
    echo '</html>';
?>
formular.php
PHP:
<?php  
    session_start();
    
    $verbindung = mysql_connect("localhost", "root" , "root") or die ("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("projektzeiterfassung") or die ("Datenbank konnte nicht ausgewählt werden.");
        
    if (isset($_SESSION['name']) and isset($_SESSION['id'])) {
        $user = $_SESSION['name'];
        $userid = $_SESSION['id'];
    }
    $erstellt = date('Y-m-d-h-i-s');    
    $add = $_POST['add'];

    for ($a = 1; $a <= $add; $a++) {
        $taetigkeit = $_POST['taetigkeit'.$a.''];
        $produkt = $_POST['product'.$a.'']; 
        $beschreibung = $_POST['beschreibung'.$a.''];  

        $erg2 = mysql_query("SELECT id FROM taetigkeiten WHERE taetigkeit='".$taetigkeit."'");
        $erg3 = mysql_query("SELECT id FROM produkte WHERE produkt='".$produkt."'");
        $row2 = mysql_fetch_object($erg2);
        $taetigkeitid = $row2->id;
        $row3 = mysql_fetch_object($erg3);
        $produktid = $row3->id;
    
        $stunden = array("montag".$a."", "dienstag".$a."", "mittwoch".$a."", "donnerstag".$a."", "freitag".$a."", "samstag".$a."", "sonntag".$a."");   
        $data = array("mo", "di", "mi", "do", "fr", "sa", "so");
    
        $eintragen1 = mysql_query("INSERT INTO projekte (taetigkeit, produkt, userid, beschreibung, erstellt) VALUES ('$taetigkeitid', '$produktid', '$userid', '$beschreibung', '$erstellt')");
        $taetprodid = mysql_insert_id();
    
        for ($b = 0; $b < 7; $b++) {
            if (isset($_POST[$stunden[$b]]) and $_POST[$stunden[$b]] != "" and isset($_POST[$data[$b]]) and $_POST[$data[$b]] != "") {        
                $dauer = $_POST[$stunden[$b]];
                $tag = $_POST[$data[$b]];                                
                $eintragen2 = mysql_query("INSERT INTO zeiten (userid, taetprodid, zeit, datum) VALUES ('$userid', '$taetprodid', '$dauer', '$tag')");
            }        
        }        
    }
?>
Daneben gäb's noch auswerten.php, auswerten2.php und export.php, aber die lassen wir erstmal. Da muss dann irgendwann auch noch viel geändert werden.
-------------

So: Was mir nicht klar ist --> Was genau soll jetzt dein letzter Code sein? login.php? Dann sehe ich aber keinen gravierenden Unterschied im Aufbau zu meiner; du lässt ja auch die Buttons für Login und Registrieren drinnen, obwohl's letzteren in der login.php dann aber eigentlich gar nicht geben sollte wenn ich für die beiden Aufgaben wieder zwei Files mache.

Im Übrigen will ich den Admin-Namen selbst in die DB schreiben und dann im Code "test" dadurch ersetzen, bevor ich das Gesamtergebnis abliefere. Bei deiner Version könnte es ja passieren, dass die Leute hier, wenn sie nicht aufpassen, sich eventuell vor dem Admin registrieren und dann wäre ein MA als erster "0". Ich weiß ja nicht, wie die dann beim ersten Mal mit dem ganzen Zeug herumtun wenn ich weg bin.
 
Zuletzt bearbeitet:
Ich habe gerade ne "Idiotenlösung" gefunden, wie das doch mit dem gesamten Code in der login.php klappt ... :fresse:

Wir übergeben die Button-Abfrage an die Session, sodass wir auch aus anderen Files darauf Zugriff haben:
PHP:
$_SESSION['Reg'] = ($_POST['btnReg']);
Und in index.php "unsetten" wir dann eben den "Registrieren" Button, ...
PHP:
unset($_SESSION['Reg']);
... schon klappt's wie ich's haben will. :D

Die Logik dahinter habe ich selbst noch nicht ganz durchschaut, aber vermutlich verhindere ich damit ein ungewolltes Neuladen von login.php?!

index.php
PHP:
<?php
    $login = false;
    
    //include('formular.php');
    
    if (isset($_SESSION['Reg'])) {
        unset($_SESSION['Reg']);
    }
    if (!isset($_SESSION['name'])) {
        include('login.php');
        $login = true;
    } else {
        include('projektzeiterfassung.php');
    }        
?>
login.php
PHP:
<?php
    session_start();
        
    $verbindung = mysql_connect("localhost", "root" , "root") or die ("Verbindung zur Datenbank konnte nicht hergestellt werden.");
    mysql_select_db ("projektzeiterfassung") or die ("Datenbank konnte nicht ausgewählt werden.");
    
    if (isset($_POST['btnReg'])) {
        $_SESSION['Reg'] = ($_POST['btnReg']);
    }
    echo '<!doctype html>';
    echo '<html><head><meta charset="ISO-8859-1">';
    echo '<link rel="stylesheet" type="text/css" href="style.css">';
    echo '<title>Projektzeiterfassung</title></head><body>';
    echo '<br><div class="submit"><form action="index.php" method="post">';
    echo '<br><h1>Projektzeiterfassung</h1>';
    if (!isset($_POST['btnReg'])) {    
        echo '<table><th>Login</th></table>';
        echo '<p>Ihr Username:</p>
                <input type="text" size="24" maxlength="50" name="username"><br>';
        echo '<p>Ihr Passwort:</p>
                <input type="password" size="24" maxlength="50" name="password"><br><br>';
        echo '    <input type="submit" name="btnLog" value="Einloggen"><br><br>
                <input type="submit" name="btnReg" value="Registrieren">';
        echo '</form></div><br>';
    }
            
    $salt = "#sf$!\"ä\"\$asd³s²a~§653 sa51d75qÖAa@üeX";
    
    if (isset($_POST['btnLog'])) {    
        $username = $_POST['username'];
        $erg = mysql_query("SELECT passwort FROM user WHERE name='".$username."'");
        $row = mysql_fetch_object($erg);
        $password = hash('sha512', ($_POST['password']).$salt);
        if ($row->passwort == $password) {
            $_SESSION['name'] = $username;
            $_SESSION['id'] = $row->id;
            $_SESSION['rechte'] = $row->rechte;
            header('Location: http://localhost/db/projektzeiterfassung.php');
        } else {            
            echo '<br><div class="submit"><form action="login.php">Benutzername und/oder Passwort waren falsch.<br><br><input type="submit" value="Login"></form></div>';
        }
    } elseif (isset($_POST['btnReg'])) {
        echo '<table><th>Registrierung</th></table>
                <p>Bitte geben Sie einen Usernamen ein:</p>
                    <input type="text" size="24" maxlength="50" name="username"><br>
                <p>Bitte geben Sie ein Passwort ein:</p>
                    <input type="password" size="24" maxlength="50" name="passwort"><br>
                <p>Passwort wiederholen:</p>
                    <input type="password" size="24" maxlength="50" name="passwort2"><br><br>
                <input type="submit" name="btnReg" value="Registrieren">
            </form></div>';
        $username = $_POST['username'];
        if (isset($_POST["passwort"]) and $_POST["passwort"] != "" and isset($_POST["passwort2"]) and $_POST["passwort2"] != "") {    
            $passwort = $_POST['passwort'];
            $passwort2 = $_POST['passwort2'];
            if ($passwort != $passwort2 or $username == "" or $passwort == "") {    
                echo '<br><div class="submit"><form action="login.php">Eingabefehler. Bitte alle Felder korrekt ausfüllen.<br><br><input type="submit" value="Zurück"></form></div>';
                exit;
            }
            $passwort = hash('sha512', ($passwort).$salt);
        }
        if ($username == "test") {
            $rechte = 0;
        } else {
            $rechte = 1;
        }

        $erg = mysql_query("SELECT id FROM user WHERE name='".$username."'");
        $id = mysql_num_rows($erg);

        if ($id == 0) {
            $eintragen = mysql_query("INSERT INTO user (name, passwort, rechte) VALUES ('$username', '$passwort', '$rechte')");
            if ($eintragen == true) {                
                echo '<br><div class="submit"><form action="login.php">Benutzer <b>'.$username.'</b> wurde erstellt.<br><br><input type="submit" value="Login"></form></div>';  
            } else {        
                echo '<br><div class="submit"><form action="login.php">Fehler beim Speichern des Benutzernamens.<br><br><input type="submit" value="Zurück"></form></div>';
            }
        } else {
            echo '<br><div class="submit"><form action="login.php">Benutzername schon vorhanden.<br><br><input type="submit" value="Zurück"></form></div>';
        }
    }
    
    echo '</body>
        </html>';
?>

[EDIT]
Nur ein Problem habe ich damit noch: Es wird bei Klick auf "Registrieren" immer sofort ein "leerer" Benutzer angelegt.

Unbenannt.PNG Unbenannt.PNG

Dabei sollte doch genau das durch diese Zeile verhindert werden, oder?
PHP:
if (isset($_POST["passwort"]) and $_POST["passwort"] != "" and isset($_POST["passwort2"]) and $_POST["passwort2"] != "") {
[EDIT2]
Hab's schon. ;)
Die Zeile wirkt eh, nur die ifs mussten noch korrekt verschachtelt werden. Jetzt passt wirklich ALLES in login.php.
PHP:
<?php
    session_start();
        
    $verbindung = mysql_connect("localhost", "root" , "root") or die ("Verbindung zur Datenbank konnte nicht hergestellt werden.");
    mysql_select_db ("projektzeiterfassung") or die ("Datenbank konnte nicht ausgewählt werden.");
    
    if (isset($_POST['btnReg'])) {
        $_SESSION['Reg'] = ($_POST['btnReg']);
    }
    echo '<!doctype html>';
    echo '<html><head><meta charset="ISO-8859-1">';
    echo '<link rel="stylesheet" type="text/css" href="style.css">';
    echo '<title>Projektzeiterfassung</title></head><body>';
    echo '<br><div class="submit"><form action="login.php" method="post">';
    echo '<br><h1>Projektzeiterfassung</h1>';
    if (!isset($_POST['btnReg'])) {    
        echo '<table><th>Login</th></table>';
        echo '<p>Ihr Username:</p>
                <input type="text" size="24" maxlength="50" name="username"><br>';
        echo '<p>Ihr Passwort:</p>
                <input type="password" size="24" maxlength="50" name="password"><br><br>';
        echo '    <input type="submit" name="btnLog" value="Einloggen"><br><br>
                <input type="submit" name="btnReg" value="Registrieren">';
        echo '</form></div><br>';
    }
            
    $salt = "#sf$!\"ä\"\$asd³s²a~§653 sa51d75qÖAa@üeX";
    
    if (isset($_POST['btnLog'])) {    
        $username = $_POST['username'];
        $erg = mysql_query("SELECT passwort FROM user WHERE name='".$username."'");
        $row = mysql_fetch_object($erg);
        $password = hash('sha512', ($_POST['password']).$salt);
        if ($row->passwort == $password) {
            $_SESSION['name'] = $username;
            $_SESSION['id'] = $row->id;
            $_SESSION['rechte'] = $row->rechte;
            header('Location: http://localhost/db/projektzeiterfassung.php');
        } else {            
            echo '<br><div class="submit">Benutzername und/oder Passwort waren falsch.<br><br></div>';
        }
    } elseif (isset($_POST['btnReg'])) {
        echo '<table><th>Registrierung</th></table>
                <p>Bitte geben Sie einen Usernamen ein:</p>
                    <input type="text" size="24" maxlength="50" name="username"><br>
                <p>Bitte geben Sie ein Passwort ein:</p>
                    <input type="password" size="24" maxlength="50" name="passwort"><br>
                <p>Passwort wiederholen:</p>
                    <input type="password" size="24" maxlength="50" name="passwort2"><br><br>
                <input type="submit" name="btnReg" value="Registrieren">
            </form></div>';
        $username = $_POST['username'];
        if (isset($_POST["passwort"]) and $_POST["passwort"] != "" and isset($_POST["passwort2"]) and $_POST["passwort2"] != "") {    
            $passwort = $_POST['passwort'];
            $passwort2 = $_POST['passwort2'];
            if ($passwort != $passwort2 or $username == "" or $passwort == "") {    
                echo '<br><div class="submit"><form action="login.php">Eingabefehler. Bitte alle Felder korrekt ausfüllen.<br><br><input type="submit" value="Zurück"></form></div>';
                exit;
            } else {
                @$passwort = hash('sha512', ($passwort).$salt);
                if ($username == "test") {
                    $rechte = 0;
                } else {
                    $rechte = 1;
                }

                $id = mysql_query("SELECT id FROM user WHERE name='".$username."'");

                if ($id == 0) {
                    $eintragen = mysql_query("INSERT INTO user (name, passwort, rechte) VALUES ('$username', '$passwort', '$rechte')");
                    if ($eintragen == true) {                
                        echo '<br><div class="submit"><form action="index.php">Benutzer <b>'.$username.'</b> wurde erstellt.<br><br><input type="submit" value="Login"></form></div>';  
                    } else {        
                        echo '<br><div class="submit"><form action="index.php">Fehler beim Speichern des Benutzernamens.<br><br><input type="submit" value="Zurück"></form></div>';
                    }
                } else {
                    echo '<br><div class="submit">Benutzername schon vorhanden.<br><br></div>';
                }
            }
        }
    }
    
    echo '</body>
        </html>';
?>
Jetzt wird's Zeit, dass wir uns meine projektzeiterfassung.php nochmal vornehmen. Wie genau soll die jetzt über index.php mit formular.php "verbunden" werden?
 
Zuletzt bearbeitet:
aaaah, ich seh gerade, ich habe das ! beim "5. code" übersehen. und ich hab mich schon gewunder, wieso du sagtest, er zeigt dir immer das reggen formular ^^

nochmal zur grundsatzerklräung wegen meiner index.php. ich habe zwar auch meine 4 5 files, aber eigentlich ist das NUR die index.php. also alles in EINEM file. weil das eben irgendwann unübersichtlich wird, hatte ich zusammenhängende teile eben ausgegliedert. es gibt halt einen signifikanten unterschied zw einem include(seite) und einem link-zu-seite (oder eben aufruf-von-seite-durch-formular). beim include wird der ganze text in dem file eben einfach an die stelle vom include kopiert und fertig. ein aufruf soeiner teilseite aber öffnet nur diese seite.

also wie gesagt: im grunde habe ich NUR die index.php. alles läuft in einem file ab das sich immer wieder selber aufruft. und mittels der ausgliederung hab ich eben folgende reihenfolge nun drin:
- index.php
-> config.php
-> formular.php
-> entweder login.php oder zeiterfassung.php (je nach login status)

das sessionstart und session daten lesen (sofern gesetzt) würde bei mir in der config.php abgehandelt werden (ganz am anfang eben). dort hab ich bei mir auch den html-kopf mit drinne, da der nächste schritt die formular.php wäre - und hier kann es schon zu ausgaben kommen. joa, und dieser formular-part (will ichs mal nennen, nicht php ^^) kümmert sich eben um alles, was mit gesendeten formulardaten zu tun hat. welche buttons wurden gedrückt und was soll dann geschehen... (btnRegForm -> register-formular zeigen (kann man hier eigentlich ignorieren, da es nur html code ausgibt, aber nix speichert oder so), btnReg -> formular auswerten und user anlegen sowie einloggen, btnLog -> user einloggen, prev/nextWeek -> kalender um ne woche verschieben..., addToDB (oder so) -> zeugs in die db speichern, add/remLine -> eingabezeile hinzufügen/entfernen usw usf). anschließend dann eben je nach loginstatus das login-dingen zeigen oder eben deine tabelle.


edit: ach wegen deinem problem (vllt nichmal die problemlösung, aber ein hinweis):
teste mal nicht nur auf $post != "" sondern eber auf trim($post) != "". wenn du als username oder pw oder so " " eingibst, ist das auch != "" aber ergibt wenig sinn ^^ trim löscht alle leerzeichen ausm string. als " " wird also "" und dein vergleich schlägt an. wie gesagt, ich denke nicht, dass das jetzt die lösung deines probs war, aber ich wollts dennoch erwähnen :)

hmm, ich werte formulare immer in der art aus:
PHP:
<?php
  $form_ok = true;
  if(!isset($post_1) or trim($post_1) == "") $form_ok = false;
  if(!isset($post_2) or trim($post_2) == "") $form_ok = false;
  // ...
  if(!isset($post_n) or trim($post_n) == "") $form_ok = false;

  if($form_ok) {
    // eigentliches abarbeiten...
  }
?>
 
Zuletzt bearbeitet:
PHP:
<?php
    $login = false;
    
    include('formular.php');
    
    if (!isset($_SESSION['name'])) {
        include('login.php');
        $login = true;
    } else {
        include('projektzeiterfassung.php');
    }        
?>

Sag mal bin ich grade etwas durch oder sorgt das Script dafür das Wenn $_Session['name'] nicht gesetzt ist automatisch $Login = True gesetzt wird.

PHP:
    if (isset($_POST['btnLog'])) {    
        $username = $_POST['username'];
        $erg = mysql_query("SELECT passwort FROM user WHERE name='".$username."'");
        $row = mysql_fetch_object($erg);
        $password = hash('sha512', ($_POST['password']).$salt);
        if ($row->passwort == $password) {
            $_SESSION['name'] = $username;
            $_SESSION['id'] = $row->id;
            $_SESSION['rechte'] = $row->rechte;
            header('Location: http://localhost/db/projektzeiterfassung.php');
        }

Denn dieser Codeteil müsste auch mit leerem PW und Username funktionieren.
 
hmm, stimmt ^^
die entgültige entscheidung, ob login = true gesetzt wird, muss in der login.php gefällt werden (ordentlich registriert und man will dann ein autologin haben bzw eben ordnungsgemäß eingeloggt).
 
Wie das BEI DIR grundsätzlich funktioniert, habe ich schon verstanden. Ich versuche nur schon die ganze Zeit, das auch BEI MIR nachzubauen ... ;)

Im Moment ist's bei mir auch schon so, dass die meisten Buttons wieder index.php aufrufen. Lediglich auf ein Problem bin ich in login.php noch gestoßen, und zwar: Er lässt mich keine neuen Benutzer anlegen weil er immer meint "Benutzer schon vorhanden". Das lässt sich zwar leicht lösen, indem ich die auskommentierten Zeilen ...
PHP:
<?php
    session_start();
        
    $verbindung = mysql_connect("localhost", "root" , "root") or die ("Verbindung zur Datenbank konnte nicht hergestellt werden.");
    mysql_select_db ("projektzeiterfassung") or die ("Datenbank konnte nicht ausgewählt werden.");
    
    if (isset($_POST['btnReg'])) {
        $_SESSION['Reg'] = ($_POST['btnReg']);
    }
    echo '<!doctype html>';
    echo '<html><head><meta charset="ISO-8859-1">';
    echo '<link rel="stylesheet" type="text/css" href="style.css">';
    echo '<title>Projektzeiterfassung</title></head><body>';
    echo '<br><div class="submit"><form action="login.php" method="post">';
    echo '<br><h1>Projektzeiterfassung</h1>';
    if (!isset($_POST['btnReg'])) {    
        echo '<table><th>Login</th></table>';
        echo '<p>Ihr Username:</p>
                <input type="text" size="24" maxlength="50" name="username"><br>';
        echo '<p>Ihr Passwort:</p>
                <input type="password" size="24" maxlength="50" name="password"><br><br>';
        echo '    <input type="submit" name="btnLog" value="Einloggen"><br><br>
                <input type="submit" name="btnReg" value="Registrieren">';
        echo '</form></div><br>';
    }
            
    $salt = "#sf$!\"ä\"\$asd³s²a~§653 sa51d75qÖAa@üeX";
    
    if (isset($_POST['btnLog'])) {    
        $username = $_POST['username'];
        $erg = mysql_query("SELECT passwort FROM user WHERE name='".$username."'");
        $row = mysql_fetch_object($erg);
        $password = hash('sha512', ($_POST['password']).$salt);
        if ($row->passwort == $password) {
            $_SESSION['name'] = $username;
            $_SESSION['id'] = $row->id;
            $_SESSION['rechte'] = $row->rechte;
            header('Location: http://localhost/db/projektzeiterfassung.php');
        } else {            
            echo '<br><div class="submit">Benutzername und/oder Passwort waren falsch.<br><br></div>';
        }
    } elseif (isset($_POST['btnReg'])) {
        echo '<table><th>Registrierung</th></table>
                <p>Bitte geben Sie einen Usernamen ein:</p>
                    <input type="text" size="24" maxlength="50" name="username"><br>
                <p>Bitte geben Sie ein Passwort ein:</p>
                    <input type="password" size="24" maxlength="50" name="passwort"><br>
                <p>Passwort wiederholen:</p>
                    <input type="password" size="24" maxlength="50" name="passwort2"><br><br>
                <input type="submit" name="btnReg" value="Registrieren">
            </form></div>';
        $username = $_POST['username'];
        if (isset($_POST["passwort"]) and $_POST["passwort"] != "" and isset($_POST["passwort2"]) and $_POST["passwort2"] != "") {    
            $passwort = $_POST['passwort'];
            $passwort2 = $_POST['passwort2'];
            if ($passwort != $passwort2 or $username == "" or $passwort == "") {    
                echo '<br><div class="submit"><form action="login.php">Eingabefehler. Bitte alle Felder korrekt ausfüllen.<br><br><input type="submit" value="Zurück"></form></div>';
                exit;
            } else {
                @$passwort = hash('sha512', ($passwort).$salt);
                if ($username == "test") {
                    $rechte = 0;
                } else {
                    $rechte = 1;
                }

                $id = mysql_query("SELECT id FROM user WHERE name='".$username."'");

                //if ($id == 0) {
                    $eintragen = mysql_query("INSERT INTO user (name, passwort, rechte) VALUES ('$username', '$passwort', '$rechte')");
                    if ($eintragen == true) {                
                        echo '<br><div class="submit"><form action="index.php">Benutzer <b>'.$username.'</b> wurde erstellt.<br><br><input type="submit" value="Login"></form></div>';  
                    } else {        
                        echo '<br><div class="submit"><form action="index.php">Fehler beim Speichern des Benutzernamens.<br><br><input type="submit" value="Zurück"></form></div>';
                    }
                //} else {
                    echo '<br><div class="submit">Benutzername schon vorhanden.<br><br></div>';
                //}
            }
        }
    }
    
    echo '</body>
        </html>';
?>
... eben auskommentiere, aber dafür kann ich dann wieder zig idente User anlegen. Irgendeine Bedingung muss ich mir jetzt noch bauen, damit gleiche User nicht möglich sind. Was das "$id == 0" gemacht hat, war mir eh nie wirklich klar. Ich habe ja nicht mal einen User mit $id=0.

Irgendwelche Ideen für eine passende Bedingung? :huh:

[EDIT]
Okay, dann nehme ich das "$login = true;" erstmal wieder aus index.php raus ...

[EDIT2]
Jetzt habe ich mal alles redundante Zeugs in eine eigene config.php ausgelagert und dafür kriege ich jetzt in login.php bei Registrierversuchen ständig: "Fehler beim Speichern des Benutzernamens." und "Benutzername schon vorhanden."

Also wenn man schon mal ALLES anders hat als du, das nochmal auf dein System abzuändern ist echt kein Spaß. Meine ganzen Variablen in projektzeiterfassung.php, die jetzt in der includeten config.php stehen, werden auch nicht erkannt, obwohl ich's ganz gleich habe wie du ... :(
 
Zuletzt bearbeitet:
ein grundsatz problem seh ich noch. du wolltest doch, dass du die login-form siehst, bei der ein button angeboten wird, mit dem man zur reggen-form kommt. dieser button braucht einen namen - ich nannte ihn btnRegForm. bei dir heißt er (wenn ichs richtige sehe) btnReg. soweit kein problem. nun haben wir den gedrückt und es baut sich das reggen-formular auf mit einem bestätigen button, um die form abzusenden. dieser button heißt bei dir nun AUCH btnReg! somit kannste nicht gescheit zwischen den 2 fällen unterscheiden :) also nenne einen der beiden um (ich hab wie gesagt den zum aufrufen der form genau deswegen btnRegForm genannt gehabt.

jut, mal wegen dem eigentlichen prob schauen. aso, weitere grundsätzliche frage: passwort2 ist die bestätigung des passworts? also diese übliche sicherheitsmaßnahme um verschreiber zu verhindern? und da fällt mir grad noch ne anmerkung ein - nein, haste schon (type="password"). das wollt ich schon so oft anmerken, habs immer vergessen ^^ aber hast es ja schon :D

wegen dem id: wie kommste da jetz eigentlich druff? wolltest checken, ob das der erste nutzer is bzw die tabelle leer is? also wegen meiner "autorechtevergabe" da. dann kanste das weglassen, hast ja schon selber ein ordentliches gegenargument gebracht. wäre halt ne idee gewesen, wie es auf ne simple art und weise klappen könnte. also das id gelumbe würd ich weglassen, erkenne da jetzt auch keinen sinn drin. aso, und wenn du das else wegmachst, müsstest auch die ausgabe mit wegmachen ^^

asö, das mit der id könnte uU der check gewesen sein, ob schon ein user mit diesem namen existiert. da langt aber auch wieder ein select * from... in der if würde ich dann aber nach der anzahl der zeilen fragen. also mysql_num_rows($id). sähe dann ca so aus (ausm kopf geschrieben):
PHP:
<?php
                if (mysql_num_rows($id)) {
                    echo '<br><div class="submit">Benutzername schon vorhanden.<br><br></div>';
                } else {
                    $eintragen = mysql_query("INSERT INTO user (name,  passwort, rechte) VALUES ('$username', '$passwort', '$rechte')");
                    if ($eintragen == true) {                
                         echo '<br><div class="submit"><form  action="index.php">Benutzer <b>'.$username.'</b> wurde  erstellt.<br><br><input type="submit"  value="Login"></form></div>';  
                    } else {        
                         echo '<br><div class="submit"><form  action="index.php">Fehler beim Speichern des  Benutzernamens.<br><br><input type="submit"  value="Zurück"></form></div>';
                    }
                }
?>
ahja, in der fehlerausgabe stand der sinn dahinter ja auch drin :klatsch:
 
Das hier ist jetzt mein ganzer login.php Code. Jetzt kriege ich zwar erstmal keine Fehlermeldungen, aber dafür wird beim Registrieren auch nichts in die DB geschrieben ... :(

Dafür fragt mich Firefox, ob das eingegebene Passwort gespeichert werden soll. Also irgendwie erkennen tut er es scheinbar.
PHP:
<?php
    // config.php

    define('MYSQL_HOST', 'localhost');
    define('MYSQL_USER', 'root');
    define('MYSQL_PASS', 'root');
    define('DATABASE', 'projektzeiterfassung');
    
    $login = true;
    $kw = date('W');
    $jahr = date('Y');
    $monat = date('n');
    $wt = date('N');
    $tag = date('j') - ($wt - 1);
    $wochenanfang = mktime(12, 0, 0, $monat, $tag, $jahr);
    $wochenende = mktime(12, 0, 0, $monat, ($tag + 6), $jahr);
    
    $verbindung = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die ("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db(DATABASE) or die ("Datenbank konnte nicht ausgewählt werden.");
?>
PHP:
<?php
    // login.php

    session_start();
    
    if (isset($_POST['btnReg'])) {
        $_SESSION['Reg'] = ($_POST['btnReg']);
    }
    echo '<!doctype html>';
    echo '<html><head><meta charset="ISO-8859-1">';
    echo '<link rel="stylesheet" type="text/css" href="style.css">';
    echo '<title>Projektzeiterfassung</title></head><body>';
    echo '<br><div class="submit"><form action="login.php" method="post">';
    echo '<br><h1>Projektzeiterfassung</h1>';
    if (!isset($_POST['btnReg'])) {    
        echo '<table><th>Login</th></table>';
        echo '<p>Ihr Username:</p>
                <input type="text" size="24" maxlength="50" name="username"><br>';
        echo '<p>Ihr Passwort:</p>
                <input type="password" size="24" maxlength="50" name="password"><br><br>';
        echo '    <input type="submit" name="btnLog" value="Einloggen"><br><br>
                <input type="submit" name="btnReg" value="Registrieren">';
        echo '</form></div><br>';
    }
            
    $salt = "#sf$!\"ä\"\$asd³s²a~§653 sa51d75qÖAa@üeX";
    
    if (isset($_POST['btnLog'])) {    
        $username = $_POST['username'];
        $erg = mysql_query("SELECT passwort FROM user WHERE name='".$username."'");
        $row = mysql_fetch_object($erg);
        $password = hash('sha512', ($_POST['password']).$salt);
        if ($row->passwort == $password) {
            $_SESSION['name'] = $username;
            $_SESSION['id'] = $row->id;
            $_SESSION['rechte'] = $row->rechte;
            header('Location: http://localhost/db/projektzeiterfassung.php');
        } else {            
            echo '<br><div class="submit">Benutzername und/oder Passwort waren falsch oder noch nicht registriert.<br><br></div>';
        }
    } elseif (isset($_POST['btnReg'])) {
        echo '<table><th>Registrierung</th></table>
                <p>Bitte geben Sie einen Usernamen ein:</p>
                    <input type="text" size="24" maxlength="50" name="username"><br>
                <p>Bitte geben Sie ein Passwort ein:</p>
                    <input type="password" size="24" maxlength="50" name="passwort"><br>
                <p>Passwort wiederholen:</p>
                    <input type="password" size="24" maxlength="50" name="passwort2"><br><br>
                <input type="submit" name="btnRegForm" value="Registrieren">
            </form></div>';
        $username = $_POST['username'];
        if (isset($_POST["passwort"]) and $_POST["passwort"] != "" and isset($_POST["passwort2"]) and $_POST["passwort2"] != "") {    
            $passwort = $_POST['passwort'];
            $passwort2 = $_POST['passwort2'];
            if ($passwort != $passwort2 or $username == "" or $passwort == "") {    
                echo '<br><div class="submit">Eingabefehler. Bitte alle Felder korrekt ausfüllen.<br><br></div>';
            } else {
                @$passwort = hash('sha512', ($passwort).$salt);
                if ($username == "test") {
                    $rechte = 0;
                } else {
                    $rechte = 1;
                }

                $id = mysql_query("SELECT id FROM user WHERE name='".$username."'");

                if (mysql_num_rows($id)) {
                    echo '<br><div class="submit">Benutzername schon vorhanden.<br><br></div>';
                } else {
                    $eintragen = mysql_query("INSERT INTO user (name,  passwort, rechte) VALUES ('$username', '$passwort', '$rechte')");
                    if ($eintragen == true) {                
                         echo '<br><div class="submit">Benutzer <b>'.$username.'</b> wurde  erstellt.<br><br></div>';  
                    } else {        
                         echo '<br><div class="submit">Fehler beim Speichern des  Benutzernamens.<br><br></div>';
                    }
                }
            }
        }
    }
    
    echo '</body>
        </html>';
?>
Den Button name habe ich BTW in Zeile 47 geändert. Hoffe, das stimmt.
 
Zuletzt bearbeitet:
hmm, hab da noch ein paar konzeptschwierigkeiten wieder. dein erstes isset (naja, das wäre das mit der session, ich meinte also eigentlich das 2. ^^) baut die reg-form mit button. HIER würde ich bei der abfrage schonmal den neuen buttonnamen nutzen (weil du musst ja nich nur den button namen ändern, sondern auch bei der formularauswertung auf diesen neuen namen anspringen). die form ist so ok. der dort verwendete button hat nen anderen namen (den bisherigen) und sollte ok sein so.

aso, das is wieder das NOT isset, was ich schonmal übersehen hab ^^ also das ist deine default-ausgabe szs... k. dann muss also da drin der button umbenannt werden (ich gehe jetzt davon aus, das btnReg die registrierung abschließt und btnRegForm überhaupt erstmal zur registrierung führen soll). vllt sollte man die bedingung auch umkehren. also if isset btnRegForm, male die reg-form, else male die loginform (wie du sie jetzt hast, nur eben den reggen button umbenannt. kann man bestimmt auch andersrum lassen, aber sorum find ichs irgendwie besser lesbar. aber gut, mach wie du denkst, die reihenfolge is am ende wurscht ^^ mach wie du besser klar kommst.

um das jetzt mal mit zeilenangaben zu würzen:
in zeile 20 den button umbenennen
in zeile 13 den abgefragten button ebenfalls umbenennen
wenn du das "not isset" so lassen magst, muss bei zeile 22 der else-teil rein, der das reggen-formular enthält. ansonsten musste halt die inhalte von if und else tauschen.

jut, den teil dadrunter hätte ich jetzt ja eher davor abgehandelt. also quasi alles ab zeile 24 über unsere eben diskutierte geschichte kopiert. also so in etwa zu zeile 6/7. ahja, der teil von zeile 26 an sieht soweit gut aus - HIER würde ich dann bei erfolgreichem einloggen $login auf true setzen btw :)

oha, und da ist butten reg. der button name stimmt, aber wozu die form da? diese form hier müsste qusi oben im else teil drin sein (was ich zuerst besprochen hatte, das gefasel um das not isset ^^). was passiert sonst hier? du bekommst die login-maske angezeigt, drückst reggen und er switcht genau hier hin. er baut das formular auf - und gleich danach speichert er lustig drauf los >< du hast noch garnix eingegeben, da speichert er schon. also wie gesagt, die speicherei ist richtig, das formular ist an der falschen stelle.

gut, damit sind wir durch.
 
Ich hab's umgebaut soweit ich's bei dir verstanden habe, aber irgendwas stimmt definitiv nicht. Jetzt hätte ich ja den allgemeinen html-Aufbau unter dem Login-Zeugs?!
PHP:
<?php
    session_start();

    if (isset($_POST['btnReg'])) {
        $_SESSION['Reg'] = ($_POST['btnReg']);
    }
    
    $salt = "#sf$!\"ä\"\$asd³s²a~§653 sa51d75qÖAa@üeX"; 
    
    echo '<!doctype html>';
    echo '<html><head><meta charset="ISO-8859-1">';
    echo '<link rel="stylesheet" type="text/css" href="style.css">';
    echo '<title>Projektzeiterfassung</title></head><body>';
    echo '<br><div class="submit"><form action="login.php" method="post">';
    echo '<br><h1>Projektzeiterfassung</h1>';
    
    if (isset($_POST['btnLog'])) {    
        $username = $_POST['username'];
        $erg = mysql_query("SELECT passwort FROM user WHERE name='".$username."'");
        $row = mysql_fetch_object($erg);
        $password = hash('sha512', ($_POST['password']).$salt);
        if ($row->passwort == $password) {
            $_SESSION['name'] = $username;
            $_SESSION['id'] = $row->id;
            $_SESSION['rechte'] = $row->rechte;
            header('Location: http://localhost/db/projektzeiterfassung.php');
        } else {            
            echo '<br><div class="submit">Benutzername und/oder Passwort waren falsch oder noch nicht registriert.<br><br></div>';
        }
    }
    
    if (!isset($_POST['btnRegForm'])) {    
        echo '<table><th>Login</th></table>';
        echo '<p>Ihr Username:</p>
                <input type="text" size="24" maxlength="50" name="username"><br>';
        echo '<p>Ihr Passwort:</p>
                <input type="password" size="24" maxlength="50" name="password"><br><br>';
        echo '    <input type="submit" name="btnLog" value="Einloggen"><br><br>
                <input type="submit" name="btnRegForm" value="Registrieren">';
        echo '</form></div><br>';
    } elseif (isset($_POST['btnReg'])) {
        echo '<table><th>Registrierung</th></table>
                <p>Bitte geben Sie einen Usernamen ein:</p>
                    <input type="text" size="24" maxlength="50" name="username"><br>
                <p>Bitte geben Sie ein Passwort ein:</p>
                    <input type="password" size="24" maxlength="50" name="passwort"><br>
                <p>Passwort wiederholen:</p>
                    <input type="password" size="24" maxlength="50" name="passwort2"><br><br>
                <input type="submit" name="btnRegForm" value="Registrieren">
            </form></div>';
        $username = $_POST['username'];
        if (isset($_POST["passwort"]) and $_POST["passwort"] != "" and isset($_POST["passwort2"]) and $_POST["passwort2"] != "") {    
            $passwort = $_POST['passwort'];
            $passwort2 = $_POST['passwort2'];
            if ($passwort != $passwort2 or $username == "" or $passwort == "") {    
                echo '<br><div class="submit">Eingabefehler. Bitte alle Felder korrekt ausfüllen.<br><br></div>';
            } else {
                @$passwort = hash('sha512', ($passwort).$salt);
                if ($username == "test") {
                    $rechte = 0;
                } else {
                    $rechte = 1;
                }

                $id = mysql_query("SELECT id FROM user WHERE name='".$username."'");

                if (mysql_num_rows($id)) {
                    echo '<br><div class="submit">Benutzername schon vorhanden.<br><br></div>';
                } else {
                    $eintragen = mysql_query("INSERT INTO user (name,  passwort, rechte) VALUES ('$username', '$passwort', '$rechte')");
                    if ($eintragen == true) {                
                         echo '<br><div class="submit">Benutzer <b>'.$username.'</b> wurde  erstellt.<br><br></div>';  
                    } else {        
                         echo '<br><div class="submit">Fehler beim Speichern des  Benutzernamens.<br><br></div>';
                    }
                }
            }
        }
    }
    
    echo '</body>
        </html>';
?>
Und "$login = true;" sollte ich ans Ende des if-btnLog schreiben?
 
PHP:
<?php
    session_start();

    if (isset($_POST['btnReg'])) {
        $_SESSION['Reg'] = ($_POST['btnReg']);
    }

    $salt = "#sf$!\"ä\"\$asd³s²a~§653 sa51d75qÖAa@üeX";

    echo '<!doctype html>';
    echo '<html><head><meta charset="ISO-8859-1">';
    echo '<link rel="stylesheet" type="text/css" href="style.css">';
    echo '<title>Projektzeiterfassung</title></head><body>';
    echo '<br><div class="submit"><form action="login.php" method="post">';
    echo '<br><h1>Projektzeiterfassung</h1>';

    if (isset($_POST['btnLog'])) {
        $username = $_POST['username'];
        $erg = mysql_query("SELECT passwort FROM user WHERE name='".$username."'");
        $row = mysql_fetch_object($erg);
        $password = hash('sha512', ($_POST['password']).$salt);
        if ($row->passwort == $password) {
            $_SESSION['name'] = $username;
            $_SESSION['id'] = $row->id;
            $_SESSION['rechte'] = $row->rechte;
            
            /**************************/
            /****/ $login = true; /****/
            /**************************/
            header('Location: http://localhost/db/projektzeiterfassung.php');
        } else {
            echo '<br><div class="submit">Benutzername und/oder Passwort waren falsch oder noch nicht registriert.<br><br></div>';
        }
    }
    if (isset($_POST['btnReg'])) {
        $username = $_POST['username'];
        if (isset($_POST["passwort"]) and $_POST["passwort"] != "" and isset($_POST["passwort2"]) and $_POST["passwort2"] != "") {
            $passwort = $_POST['passwort'];
            $passwort2 = $_POST['passwort2'];
            if ($passwort != $passwort2 or $username == "" or $passwort == "") {
                echo '<br><div class="submit">Eingabefehler. Bitte alle Felder korrekt ausfüllen.<br><br></div>';
            } else {
                @$passwort = hash('sha512', ($passwort).$salt);
                if ($username == "test") {
                    $rechte = 0;
                } else {
                    $rechte = 1;
                }

                $check = mysql_query("SELECT * FROM user WHERE name='".$username."'");

                if (mysql_num_rows($check)) {
                    echo '<br><div class="submit">Benutzername schon vorhanden.<br><br></div>';
                } else {
                    $eintragen = mysql_query("INSERT INTO user (name,  passwort, rechte) VALUES ('$username', '$passwort', '$rechte')");
                    if ($eintragen == true) {
                         echo '<br><div class="submit">Benutzer <b>'.$username.'</b> wurde  erstellt.<br><br></div>';

                         /************************************************/
                         /****/ $_SESSION['name'] = $username;       /****/
                         /****/ $_SESSION['id'] = mysql_insert_id(); /****/
                         /****/ $_SESSION['rechte'] = $rechte;       /****/
                         /****/                                      /****/
                         /****/ $login = true;                       /****/
                         /****/                                      /****/
                         /****/ header('Location: ...'); /** Anmerkung ***/
                         /************************************************/
                    } else {
                         echo '<br><div class="submit">Fehler beim Speichern des  Benutzernamens.<br><br></div>';
                    }
                }
            }
        }
    }

    if (!isset($_POST['btnRegForm'])) {
        echo '<table><th>Login</th></table>';
        echo '<p>Ihr Username:</p>
                <input type="text" size="24" maxlength="50" name="username"><br>';
        echo '<p>Ihr Passwort:</p>
                <input type="password" size="24" maxlength="50" name="password"><br><br>';
        echo '    <input type="submit" name="btnLog" value="Einloggen"><br><br>
                <input type="submit" name="btnRegForm" value="Registrieren">';
        echo '</form></div><br>';
    } else {
        echo '<table><th>Registrierung</th></table>
                <p>Bitte geben Sie einen Usernamen ein:</p>
                    <input type="text" size="24" maxlength="50" name="username"><br>
                <p>Bitte geben Sie ein Passwort ein:</p>
                    <input type="password" size="24" maxlength="50" name="passwort"><br>
                <p>Passwort wiederholen:</p>
                    <input type="password" size="24" maxlength="50" name="passwort2"><br><br>
                <input type="submit" name="btnRegForm" value="Registrieren">
            </form></div>';
    }

    echo '</body>
        </html>';
?>
so hier ;)

in den großen "kommentarkästen" hab ich die ergänzungen gepostet. im ersten ist die mögliche position für die login variable. hier wäre sie halt am sinnvollsten aufgehoben. beim erfolgreichen registrieren bleibt dann eben noch die folgende frage: soll er beim erfolgreichen registrieren automatisch eingeloggt werden? dann muss der kasten hier hin. ansonsten ist er zwar gereggt, aber muss sich dennoch normal über die login maske einloggen. hier auch die von mir genannte funktion, um an die id zu kommen. wäre deine entscheidung, wie du es handhaben möchtest.

und nochmal zu dem header geblubber. damit bindest du jetzt dann das "hauptfile" ein? hattest du jetzt umgebaut gehabt auf so eine "index.php"? ich glaubs oder? weil dann brauchst du das ned mehr. in der index.php checkst du ja den login-status. ist er false, wir die login-form gezeigt, ist es true, dein "hauptfile" ^^
 
^^ Ich werd' verrückt ... Auch mit deinem Code landen keine Daten bei der Registrierung in der DB! Außerdem lande ich beim Aufruf von "localhost/db/index.php" jetzt immer auf projektzeiterfassung.php. :wow:

Aber vielleicht liegt der Fehler jetzt woanders? Hier mal der ganze Rest:
index.php
PHP:
<?php
    $login = false;
    
    include('config.php');
    
    //include('formular.php');
    
    if (isset($_SESSION['Reg'])) {
        unset($_SESSION['Reg']);
    }
    if (!isset($_SESSION['name'])) {
        include('login.php');
    } else {
        include('projektzeiterfassung.php');
    }        
?>
config.php
PHP:
<?php
    session_start();

    define('MYSQL_HOST', 'localhost');
    define('MYSQL_USER', 'root');
    define('MYSQL_PASS', 'root');
    define('DATABASE', 'projektzeiterfassung');
    
    $user = $_SESSION['name'];
    $userid = $_SESSION['id'];
    $rechte = $_SESSION['rechte'];
    
    $login = true;
    $kw = date('W');
    $jahr = date('Y');
    $monat = date('n');
    $wt = date('N');
    $tag = date('j') - ($wt - 1);
    $wochenanfang = mktime(12, 0, 0, $monat, $tag, $jahr);
    $wochenende = mktime(12, 0, 0, $monat, ($tag + 6), $jahr);
    
    $verbindung = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die ("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db(DATABASE) or die ("Datenbank konnte nicht ausgewählt werden.");
?>
login.php
PHP:
 <?php
    session_start();

    if (isset($_POST['btnReg'])) {
        $_SESSION['Reg'] = ($_POST['btnReg']);
    }

    $salt = "#sf$!\"ä\"\$asd³s²a~§653 sa51d75qÖAa@üeX";

    echo '<!doctype html>';
    echo '<html><head><meta charset="ISO-8859-1">';
    echo '<link rel="stylesheet" type="text/css" href="style.css">';
    echo '<title>Projektzeiterfassung</title></head><body>';
    echo '<br><div class="submit"><form action="login.php" method="post">';
    echo '<br><h1>Projektzeiterfassung</h1>';

    if (isset($_POST['btnLog'])) {
        $username = $_POST['username'];
        $erg = mysql_query("SELECT passwort FROM user WHERE name='".$username."'");
        $row = mysql_fetch_object($erg);
        $password = hash('sha512', ($_POST['password']).$salt);
        if ($row->passwort == $password) {
            $_SESSION['name'] = $username;
            $_SESSION['id'] = $row->id;
            $_SESSION['rechte'] = $row->rechte;          
            $login = true;
            header('Location: http://localhost/db/projektzeiterfassung.php');
        } else {
            echo '<br><div class="submit">Benutzername und/oder Passwort waren falsch oder noch nicht registriert.<br><br></div>';
        }
    }
    if (isset($_POST['btnReg'])) {
        $username = $_POST['username'];
        if (isset($_POST["passwort"]) and $_POST["passwort"] != "" and isset($_POST["passwort2"]) and $_POST["passwort2"] != "") {
            $passwort = $_POST['passwort'];
            $passwort2 = $_POST['passwort2'];
            if ($passwort != $passwort2 or $username == "" or $passwort == "") {
                echo '<br><div class="submit">Eingabefehler. Bitte alle Felder korrekt ausfüllen.<br><br></div>';
            } else {
                @$passwort = hash('sha512', ($passwort).$salt);
                if ($username == "test") {
                    $rechte = 0;
                } else {
                    $rechte = 1;
                }

                $check = mysql_query("SELECT * FROM user WHERE name='".$username."'");

                if (mysql_num_rows($check)) {
                    echo '<br><div class="submit">Benutzername schon vorhanden.<br><br></div>';
                } else {
                    $eintragen = mysql_query("INSERT INTO user (name,  passwort, rechte) VALUES ('$username', '$passwort', '$rechte')");
                    if ($eintragen == true) {
                        echo '<br><div class="submit">Benutzer <b>'.$username.'</b> wurde  erstellt.<br><br></div>';

                         /************************************************/
                         /****/ $_SESSION['name'] = $username;       /****/
                         /****/ $_SESSION['id'] = mysql_insert_id(); /****/
                         /****/ $_SESSION['rechte'] = $rechte;       /****/
                         /****/                                      /****/
                         /****/ $login = true;                       /****/
                         /****/                                      /****/
                         /****/ header('Location: ...'); /** Anmerkung ***/
                         /************************************************/
                    } else {
                        echo '<br><div class="submit">Fehler beim Speichern des  Benutzernamens.<br><br></div>';
                    }
                }
            }
        }
    }

    if (!isset($_POST['btnRegForm'])) {
        echo '<table><th>Login</th></table>';
        echo '<p>Ihr Username:</p>
                <input type="text" size="24" maxlength="50" name="username"><br>';
        echo '<p>Ihr Passwort:</p>
                <input type="password" size="24" maxlength="50" name="password"><br><br>';
        echo '    <input type="submit" name="btnLog" value="Einloggen"><br><br>
                <input type="submit" name="btnRegForm" value="Registrieren">';
        echo '</form></div><br>';
    } else {
        echo '<table><th>Registrierung</th></table>
                <p>Bitte geben Sie einen Usernamen ein:</p>
                    <input type="text" size="24" maxlength="50" name="username"><br>
                <p>Bitte geben Sie ein Passwort ein:</p>
                    <input type="password" size="24" maxlength="50" name="passwort"><br>
                <p>Passwort wiederholen:</p>
                    <input type="password" size="24" maxlength="50" name="passwort2"><br><br>
                <input type="submit" name="btnRegForm" value="Registrieren">
            </form></div>';
    }

    echo '</body>
        </html>';
?>
 
ahja, ich eh grad, du bastelst das wieder anders wie ich. mach mal aus
PHP:
                } else {
                    $eintragen = mysql_query("INSERT INTO user (name,  passwort, rechte) VALUES ('$username', '$passwort', '$rechte')");
                    if ($eintragen == true) {
                         echo '<br><div class="submit">Benutzer <b>'.$username.'</b> wurde  erstellt.<br><br></div>';

                         /************************************************/
                         /****/ $_SESSION['name'] = $username;       /****/
                         /****/ $_SESSION['id'] = mysql_insert_id(); /****/
                         /****/ $_SESSION['rechte'] = $rechte;       /****/
                         /****/                                      /****/
                         /****/ $login = true;                       /****/
                         /****/                                      /****/
                         /****/ header('Location: ...'); /** Anmerkung ***/
                         /************************************************/
                    } else {
                         echo '<br><div class="submit">Fehler beim Speichern des  Benutzernamens.<br><br></div>';
                    }
                }

folgendes:
PHP:
                } else {
                    mysql_query("INSERT INTO user (name,  passwort, rechte) VALUES ('$username', '$passwort', '$rechte')") OR die("Fehler beim Registrieren des Users!<br>".mysql_error());
                    echo '<br><div class="submit">Benutzer <b>'.$username.'</b> wurde  erstellt.<br><br></div>';

                    /************************************************/
                    /****/ $_SESSION['name'] = $username;       /****/
                    /****/ $_SESSION['id'] = mysql_insert_id(); /****/
                    /****/ $_SESSION['rechte'] = $rechte;       /****/
                    /****/                                      /****/
                    /****/ $login = true;                       /****/
                    /****/                                      /****/
                    /****/ header('Location: ...'); /** Anmerkung ***/
                    /************************************************/
                }
ich bin mir grad recht sicher, dass er mit dem sql ding irgendwelche probs hat. vllt wirft er dir so nen error raus. muss jetz aber erstmal wieder auf arbeit :/
 
^^ Nein, er speichert auch damit keinen User in der DB (Error kommt auch keiner) ... :(

[EDIT]
Dieser Code von der Vorseite funktioniert plötzlich einwandfrei:
PHP:
<?php
    session_start();
        
    $verbindung = mysql_connect("localhost", "root" , "root") or die ("Verbindung zur Datenbank konnte nicht hergestellt werden.");
    mysql_select_db ("projektzeiterfassung") or die ("Datenbank konnte nicht ausgewählt werden.");
    
    if (isset($_POST['btnReg'])) {
        $_SESSION['Reg'] = ($_POST['btnReg']);
    }
    echo '<!doctype html>';
    echo '<html><head><meta charset="ISO-8859-1">';
    echo '<link rel="stylesheet" type="text/css" href="style.css">';
    echo '<title>Projektzeiterfassung</title></head><body>';
    echo '<br><div class="submit"><form action="login.php" method="post">';
    echo '<br><h1>Projektzeiterfassung</h1>';
    if (!isset($_POST['btnReg'])) {    
        echo '<table><th>Login</th></table>';
        echo '<p>Ihr Username:</p>
                <input type="text" size="24" maxlength="50" name="username"><br>';
        echo '<p>Ihr Passwort:</p>
                <input type="password" size="24" maxlength="50" name="password"><br><br>';
        echo '    <input type="submit" name="btnLog" value="Einloggen"><br><br>
                <input type="submit" name="btnReg" value="Registrieren">';
        echo '</form></div><br>';
    }
            
    $salt = "#sf$!\"ä\"\$asd³s²a~§653 sa51d75qÖAa@üeX";
    
    if (isset($_POST['btnLog'])) {    
        $username = $_POST['username'];
        $erg = mysql_query("SELECT passwort FROM user WHERE name='".$username."'");
        $row = mysql_fetch_object($erg);
        $password = hash('sha512', ($_POST['password']).$salt);
        if ($row->passwort == $password) {
            $_SESSION['name'] = $username;
            $_SESSION['id'] = $row->id;
            $_SESSION['rechte'] = $row->rechte;
            header('Location: http://localhost/db/projektzeiterfassung.php');
        } else {            
            echo '<br><div class="submit">Benutzername und/oder Passwort waren falsch.<br><br></div>';
        }
    } elseif (isset($_POST['btnReg'])) {
        echo '<table><th>Registrierung</th></table>
                <p>Bitte geben Sie einen Usernamen ein:</p>
                    <input type="text" size="24" maxlength="50" name="username"><br>
                <p>Bitte geben Sie ein Passwort ein:</p>
                    <input type="password" size="24" maxlength="50" name="passwort"><br>
                <p>Passwort wiederholen:</p>
                    <input type="password" size="24" maxlength="50" name="passwort2"><br><br>
                <input type="submit" name="btnReg" value="Registrieren">
            </form></div>';
        $username = $_POST['username'];
        if (isset($_POST["passwort"]) and $_POST["passwort"] != "" and isset($_POST["passwort2"]) and $_POST["passwort2"] != "") {    
            $passwort = $_POST['passwort'];
            $passwort2 = $_POST['passwort2'];
            if ($passwort != $passwort2 or $username == "" or $passwort == "") {    
                echo '<br><div class="submit"><form action="login.php">Eingabefehler. Bitte alle Felder korrekt ausfüllen.<br><br><input type="submit" value="Zurück"></form></div>';
                exit;
            } else {
                @$passwort = hash('sha512', ($passwort).$salt);
                if ($username == "test") {
                    $rechte = 0;
                } else {
                    $rechte = 1;
                }

                $id = mysql_query("SELECT * FROM user WHERE name='".$username."'");

                if (mysql_num_rows($id)) {
                    echo '<br><div class="submit">Benutzername schon vorhanden.<br><br></div>';
                } else {
                    $eintragen = mysql_query("INSERT INTO user (name,  passwort, rechte) VALUES ('$username', '$passwort', '$rechte')");
                    if ($eintragen == true) {                
                         echo '<br><div class="submit"><form  action="login.php">Benutzer <b>'.$username.'</b> wurde  erstellt.<br><br><input type="submit"  value="Login"></form></div>';  
                    } else {        
                         echo '<br><div class="submit"><form  action="index.php">Fehler beim Speichern des  Benutzernamens.<br><br><input type="submit"  value="Zurück"></form></div>';
                    }
                }
            }
        }
    }
    
    echo '</body>
        </html>';
?>
K. A. was jetzt plötzlich anders sein soll, aber Hauptsache es geht endlich! ;)
-----------------

Damit wären wir ENDLICH wieder bei der projektzeiterfassung.php, wo eine gewaltige Baustelle wartet.

Unbenannt.PNG
PHP:
<?php
    session_start();
    
    if (isset($_POST['wa'])) {
        $wochenanfang = $_POST['wa'];
    }
    if (isset($_POST['we'])) { 
        $wochenende = $_POST['we'];
    }

    if (isset($_POST['prevWeek'])) {
        $wochenanfang -= 60 * 60 * 24 * 7;
        $wochenende   -= 60 * 60 * 24 * 7;
    }
    if (isset($_POST['nextWeek'])) {
        $wochenanfang += 60 * 60 * 24 * 7;
        $wochenende   += 60 * 60 * 24 * 7;
    }

    $kw = date('W', $wochenanfang);
    $jahr = date('Y', $wochenanfang);
    $monat = date('n', $wochenanfang);
    $tag = date('j', $wochenanfang);

    echo '<!doctype html>
            <html>
            <head>
            <meta charset="ISO-8859-1">
            <link rel="stylesheet" type="text/css" href="style.css">
            <title>Projektzeiterfassung</title>
            </head> 
            <body>
            <form action="formular.php" method="post">';
    echo '    <link rel="stylesheet" type="text/css" href="style.css">';
    echo '    <br><h1>Projektzeiterfassung: '.$user.'</h1>';
    echo '    <table>';
    echo '  <tr>';
    echo '    <td colspan="10" class="head_cap">';
    echo '      <table style="width:100%; border:none; background-color:#A9F5BC;"><tr>';
    echo '        <td style="border:none" align="left"><input type="submit" value="<<" name="prevWeek" class="switch"></td>';  
    echo '        <td style="width:90%; border:none; text-align:center">';
    if (date('Y', $wochenanfang) <> date('Y', $wochenende)) {
        echo '            Kalenderwoche '.$kw.': '.date('j.m.', $wochenanfang).' - '.date('j.m.Y', $wochenende);
    } else {
        echo '            Kalenderwoche '.$kw.': '.date('j.m.Y', $wochenanfang).' - '.date('j.m.Y', $wochenende);
    }
    echo '            <input type="hidden" value="'.$wochenanfang.'" name="wa">';  
    echo '            <input type="hidden" value="'.$wochenende.'" name="we">';  
    echo '          </td>';
    echo '        <td style="border:none" align="right"><input type="submit" value=">>" name="nextWeek" class="switch"></td>';  
    echo '      </tr></table>';
    echo '    </td>';
    echo '  </tr>';
    echo '    <tr>
                <th>Tätigkeit</th>
                <th>Produkt</th>
                <th>Beschreibung</th>
                <th width="150">MO <input name="mo" type="text" size="10" maxlength="10"></th>
                <th width="150">DI <input name="di" type="text" size="10" maxlength="10"></th>
                <th width="150">MI <input name="mi" type="text" size="10" maxlength="10"></th>
                <th width="150">DO <input name="do" type="text" size="10" maxlength="10"></th>
                <th width="150">FR <input name="fr" type="text" size="10" maxlength="10"></th>
                <th width="150">SA <input name="sa" type="text" size="10" maxlength="10"></th>
                <th width="150">SO <input name="so" type="text" size="10" maxlength="10"></th>
            </tr>';
    
    $taetigkeiten = array();
    $sql_t = "SELECT * FROM taetigkeiten;";
    $res_t = mysql_query($sql_t) or die ("Get Taetigkeiten failed.<br>".mysql_error());
    if (mysql_num_rows($res_t))
        while ($row_t = mysql_fetch_assoc($res_t)) {
            $taetigkeiten[count($taetigkeiten)] = $row_t;
        }

    $products = array();
    $sql_p = "SELECT * FROM produkte;";
    $res_p = mysql_query($sql_p) or die ("Get Produkte failed.<br>".mysql_error());
    if (mysql_num_rows($res_p))
        while ($row_p = mysql_fetch_assoc($res_p)) {
            $products[count($products)] = $row_p;
        }
      
    if( isset($_GET['add'])) {
        $add = $_GET['add']; 
        $add++;
    } elseif (!isset($_GET['rem'])) {
        $add = 1;
    }
    if ( isset($_GET['rem'])) { 
        $add = $_GET['rem']; 
        $add--;
    }

    for ($a = 1; $a <= $add; $a++) {
        echo '<tr><td><select name="taetigkeit'.$a.'">';
        foreach ($taetigkeiten as $taetigkeit) {
            echo '<option value="'.$taetigkeit['taetigkeit'].'">'.$taetigkeit['taetigkeit'].'</option>';
        }
        echo '</select></td>';

        echo '<td><select name="product'.$a.'">';
        foreach ($products as $product) {
            echo '<option value="'.$product['produkt'].'">'.$product['produkt'].'</option>';
        }
        echo '</select></td>';

        echo '<td><input name="beschreibung'.$a.'" type="text" size="50" maxlength="250"></td>';

        echo '<td><input name="montag'.$a.'" type="text" size="10" maxlength="5""></td>';
        echo '<td><input name="dienstag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="mittwoch'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="donnerstag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="freitag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="samstag'.$a.'" type="text" size="10" maxlength="5"></td>';
        echo '<td><input name="sonntag'.$a.'" type="text" size="10" maxlength="5"></td></tr>';
    } 
    echo '</table><br>';

    echo '<div class="submit"><button name="add" type="button" value="Zeile hinzufügen" onclick="window.location.href=\'projektzeiterfassung.php?add='.$add.'\';">Neue Eingabezeile hinzufügen</button> <button name="rem" type="button" value="Zeile entfernen" onclick="window.location.href=\'projektzeiterfassung.php?rem='.$add.'\';">Eingabezeile entfernen</button></div><br>';
    echo '<input type="hidden" name="add" value="'.$add.'">';

    echo '<div class="submit"><input type="submit" name="confirm" value="Bestätigen"> Schreibt Einträge in Datenbank ...</div>';
    echo '</form>';
    
    echo '<div class="submit"><br><br><br><form action="auswerten.php"><input type="submit" value="Bisherige Einträge in Datenbank anzeigen"> Eigene Einträge anzeigen ...</form>';
    if ($rechte == 0) {
        echo '<br><form action="auswerten2.php"><input type="submit" value="Einträge für folgenden Mitarbeiter anzeigen"> <input name="mitarbeiterdb" type="text" size="30" maxlength="30"></form></div>';

    } else {
        echo '</div>';
    }
    
    echo '</body>';
    echo '</html>';
?>
Aber vorher wieder eine grundsätzliche Frage: Ich versuche ja jetzt auch, wie bei dir trotz mehrerer Files den Code so zu haben, dass es durch die index.php eigentlich EIN Code ist.
Wäre es nicht jetzt eigentlich möglich, komplett auf die Session zu verzichten und das, was wir bisher als Session-Variablen hatten, als ganz normale Variablen in config.php anzulegen? Die müssten ja dann, da ich diese gleich als erstes in index.php inkludiere, in allen Files sichtbar sein?!
 
Zuletzt bearbeitet:
Nö wäre es nicht. Du benutzt zwar immer wieder die Gleiche Datei, diese wird aber immer wieder neu geladen. An genau diesem Punkt verlierst du also deine Variablen. Formular absenden = alle Variablen weg, Link oder Button anklicken alle Variablen weg etc.
 
Heißt das einfach ausgedrückt, dass ich die Session doch brauche?

BTW: Wird nicht bei DarkMo die index.php auch immer wieder neu aufgerufen? Oder was konkret ist jetzt immer noch der Unterschied zwischen seiner und meiner Version? Und was müsste ich immer noch ändern, um dahin zu kommen, wo er ist?

Wozu mache ich denn das ales sonst? Sonst hätte ich eh bei meinem Ansatz bleiben können ...
 
Zuletzt bearbeitet:
Um es einfach zu sagen. Jedes Mal wenn du eine neue Seite lädst oder die aktuelle Seite neu lädst. Verlierst du zunächst alle Variablen.

Du musst diese also irgendwie auf die nächste Seite retten und dafür gibt es im Prinzip vier Möglichkeiten.

1. Session Variablen
2. POST Variablen
3. GET Variablen
4. COOKIES

Habe grade MO's Code nicht vorliegen. Aber auch er muss wenn er die Seite neu aufruft die Variablen irgendwie sichern.
 
Das ist mir klar, aber ich bin mir gerade nicht sicher, ob ich seinen Ansatz richtig verstanden habe.

@ DarkMo
Lädt bei dir die index.php die anderen Seiten immer wieder neu, oder wird bei dir die index.php selbst immer wieder von den anderen Seiten neu geladen (diese laden sich selbst aber nicht neu)? Wie ist das bei dir mit dem Variableninhalten speichern, was Tessa erwähnt hat?
Und bin ich auf dem Weg zu deinem Ansatz, oder habe ich jetzt erst wieder nichts anderes gemacht, als an meinem alten weiterzubasteln?

Irgendwie komme ich da gerade nicht ganz mit. Jedenfalls war der Sinn der heutigen Arbeit in meinen Augen, dass ich eben versuche, meinen Code auf dein System umzuschreiben, damit wir dann endlich auch bei mir eine funktionierende Ausgabe hinkriegen, oder zumindest den Fehler schneller finden, wenn erstmal der Aufbau gleich ist wie bei dir.

Soweit ich's jetzt im Kopf habe, kommt DarkMo jedenfalls ohne Session aus?! Dann muss er's doch noch irgendwie anders haben als ich gerade?!

Das mit den Variablen ist jetzt eh erstmal das nächste/größte Problem. Ich dachte, das würde schon reichen, diese in config.php anzulegen und dann in den jeweiligen Files mit Werten zu füllen, aber offenbar doch nicht ...

So sieht projektzeiterfassung.php aus:

Capture.JPG
 
Zuletzt bearbeitet:
@boss:
vorne weg: jop, ich komme OHNE session usw aus. wie mache ich das? ich habe keinen login drin ^^ das is der punkt :P



stell dir mal ein c++ programm vor. du startest das, baust eine gui zusammen mit formularen und der aufbau dessen ist variabel. oder meinetwegen java. bei diesen sprachen/umsetzungen drückst du einen button und irgendwas wird geändert. du updatest die ausgabe und und und. alle variablen sind noch da. trenn dich bei php bitte schnellstmöglich von dieser betrachtungsweise. um das mit dem bsp von eben zu veranschaulichen: du hast also deine gui gebaut - ende. das programm ist vorbei. das ist eben der unterschied von php zu c oder so. es ist KEIN programm, es ist ein script. der server ruft ein programm auf (oder so), dass mittels deines scripts eine statische html datei erstellt, die der server dann verschicken kann. ist das ding gebaut . ist das programm beendet. wenn du jetzt die seite neu lädts, wird das programm neu gestartet - ALLE variblen sind wieder weg. da ist NICHTS mehr.

daher gibts eben diese "globalen" arrays GET, POST und SESSION (kA obs noch mehr gibt ^^). GET enthält alle daten, die an die URI angehängt wurden. POST enthält alle formulardaten, sofern sie mittels action post gesendet wurden und SESSION ist selbst befüllbar. das ist alles, was du hast, um irgendwelche daten von deinem schon generierten file zum bald neu generierten zu retten.

ums wieder mit c odr java zu vergleichen: die seite ist gebastelt (hier wäre dann eigentlich schluss, aber der browser verwaltet die eingaben...) und wenn man nen button drückt, wird quasi schnell noch alles in nen text-file geschrieben. das textfile ist immer da, aber eben meist leer. und es ist eben nicht flüchtig. die seite wird neu generiert (also das programm neu gestartet - alle flüchtigen daten (variablen im ram) sind natürlich hinnev), und diesmal stehen in unserem textfile aber noch die daten vom letzten mal, alles gut ^^

ich hoffe, ich hab den kern deiner verunsicherung getroffen, und du verstehst jetzt eher, woran du bist. um explizit auf unser php zurück zu kommen: die index.php wird immer neu generiert. bzw AUS der index.php wird immer wieder aufs neue ein html file generiert. willst du jetzt den login status retten, musst du eben die session befüllen. machste ja auch. und wenn dir das zum verständnis meines codes eher hilf, kopier einfach den inhalt der includierten php's einfach direkt in die index.php anstelle des includebefehls. dann haste zwar nen recht langes dingen, aber es entspricht dem eigentlichen zustand. wie ich schonmal erwähnte: es ist im endeffekt nur eine einzige datei. ich habs halt der besseren bearbeitbarkei gesplittet.


dein problem mit den undefined variables bla is halt, dass du eine der ausgelagerten dateien der index.php direkt ansprichst. der zugriff darauf MUSS aber über die index.php erfolgen. hier nochmal ohne login meine index.php:
PHP:
<?php
  include('config.php');
  include('formular.php');
  include('zeit.php');
?>
mit zeit.php mein ich dein proj-zeiterf.php dingen da - is mir einfach zu lang xD rufst du die index.php auf, dann wird erst config.php abgearbeitet, also die variablen erstellt, die sql verbindung aufgebaut usw. danach erfolgt die abarbeitung eventueller formulardaten. DANN wird die eigentliche datei ausgeführt. szs die kern-datei. aber sie braucht eben die daten, der beiden anderen files (besser gesagt "ausgelagerte code-schnipsel"). du rufst jetzt aber direkt die zeit.php auf. keine angelegten variablen durch config.php, keine sql verbindung, keine formulardaten (also bei dir hast du das ja teils nochmal in der "zeit.php" drin, daher geht nich alles in die hose ^^). aber du rufst einen teilcode direkt auf. dabei kann es nur zu fehlern kommen. eben weil es nur ein teil des ganzen ist. da fehlt unweigerlich was. du musst also immer über die index.php gehen. zumindest, wenn du es so baust, wie ichs vorgeschlagen hab ;) aber ich finde das eben sehr viel effizienter, da du keinen redundanten code hast. du "konfigurierst" deine variablen nur einmal, du baust nur einmal eine sql verbindung auf, du bearbeitest einmal zentral alle formulardaten. machst du das alles dezentral, darfste das in jedem file wieder und wieder machen - willste dann was ändern... viel spaß :P

gut, ich hoffe, ich konnte etwas licht in die grundsätzliche arbeitsweise bringen. und wie gesagt: würde ich einen login nutzen, müsste auch ich mit dieser session arbeiten (oder aushilfsweise gingen wohl auch cookies). auf jedenfall bräuchte man irgendwas, um die daten zu "retten".
 
Zurück