• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] Registrierung

soulxheart

Mitglied
Guten Morgen alle zusammen

Ich habe mir ein kleines Formular gebastelt, welches einerseits Daten aus dem Active Directory ermittelt, andererseits Daten aus einer Datenbank (tbl_unternehmung) holt. Das Formular ist auf drei Seiten aufgeteilt. Das Ganze basiert auf Sessions, wobei ich immer auf der nächsten Seite die Daten per $_POST hole und jeweils in $_SESSION reinschreibe. Am Ende der drei Seiten schreibe ich die Daten in eine Tabelle (tbl_benutzer) in der Datenbank.

Soweit funktioniert alles. Wenn jetzt jedoch der Benutzer bereits in der Datenbank vorhanden ist, kommt nach der ersten Seite zwar die zweite Seite, am oberen Bildschirmrand jedoch die Meldung:

Objekt verschoben
Das Objekt befindet sich möglicherweise hier.

Die erste Seite sieht wie folgt aus:

PHP:
<?php
    session_start();
?>
<!DOCTYPE html>
<html>

<head>
    <?php
        include "includes/headers.php";
    ?>
    <title>Anmelden</title>
    <link rel="stylesheet" type="text/css" href="styles/jquery.autocomplete.css" />
    <script type="text/javascript" src="scripts/jquery.js"></script>
    <script type="text/javascript" src="scripts/jquery.autocomplete.js"></script>
    <script>
     $(document).ready(function(){
      $("#department").autocomplete("autocomplete.php", {
        matchContains: true,
        mustMatch: true,
        selectFirst: true            
      });
     });
    </script>
</head>

<body>
    <header>
        <div id="balken_schwarz">
            <a href="http://intranet.bs.ch"><img src="http://www.html.de/images/intranet.gif" alt="Intranet"></a>
        </div>
        <div id="balken_weiss">
            <a href="index.php"><img src="http://www.html.de/images/logo_ed.gif" alt="Erziehungsdepartement Basel-Stadt"></a>
        </div>
    </header>
    
    <nav>
        <?php
            include "includes/navigation.php";
        ?>
    </nav>
    
    <section>
        <div id="balken_blau">
            Erstanmeldung
        </div>
    </section>
    
    <section>
        <div id="spalte_blau">
        </div>
        
        <div id="content">
            <img src="http://www.html.de/images/banner.png" alt="Banner" />
            <p class="inhaltstext">
                Bitte überprüfen Sie die ermittelten Daten.<br />
                Sie können, falls nötig, Ergänzungen an den entsprechend gekennzeichneten Feldern vornehmen. Bestätigen Sie die Daten, indem Sie auf den Button "Eintragen" klicken.
            </p>
            <?php
                include "includes/ad_auth.php";
                include "includes/db_connect.php";
                
                $dbSelect = "SELECT * FROM tbl_unternehmung WHERE costunit = '$costunit'";
                $select_query = mysql_query($dbSelect) or die("Anfrage nicht erfolgreich!");
                
                while ($arr = mysql_fetch_array($select_query)){
                    $department = $arr['department'];
                }
            ?>
            <form name="benutzerform" action="unternehmung.php" method="post">
                <fieldset id="left">
                    <legend>Angaben zum Benutzer</legend>
                        <p>
                            <label for="lastname">Nachname</label>
                            <input type="text" name="lastname" id="lastname" value="<?php echo $lastname; ?>" disabled>
                        </p>
                        <p>
                            <label for="firstname">Vorname</label>
                            <input type="text" name="firstname" id="firstname" value="<?php echo $firstname; ?>" disabled>
                        </p>
                        <p>
                            <label for="userid">User ID</label>
                            <input type="text" name="userid" id="userid" value="<?php echo $userid; ?>" disabled>
                        </p>
                        <p>
                            <label for="tel">Rufnummer</label>
                            <input type="tel" name="tel" id="tel" value="<?php echo $tel; ?>">
                        </p>
                        <p>
                            <label for="email">E-Mail</label>
                            <input type="email" name="email" id="email" value="<?php echo $email; ?>" disabled>
                        </p>
                        <p>
                            <label for="manager">E-Mail vorgesetzte Person</label>
                            <input type="email" name="manager" id="manager" value="<?php echo $manager; ?>">
                        </p>
                </fieldset>
                <fieldset id="right">
                    <legend>Angaben zur Unternehmung</legend>
                        <p>
                            <label for="department">Abteilung</label>
                            <input type="text" name="department" id="department" value="<?php echo $department; ?>">
                        </p>
                </fieldset>
                <fieldset id="bottom">
                    <legend>Login</legend>
                        <p class="inhaltstext">
                            Wählen Sie hier ein Passwort. Dies wird für den späteren Prozess benötigt.
                        </p>
                            <p>
                                <label for="password">Passwort</label>
                                <input type="password" name="password" id="password">
                            </p>
                            <p>
                                <label for="password2">Passwort wiederholen</label>
                                <input type="password" name="password2" id="password2">
                            </p>
                </fieldset>
                <div style="text-align:center;"><input type="submit" name="weiter" value="Weiter"></div>
            </form>
        </div>
    </section>
</body>

</html>

Ich suche jetzt schon zwei Tage nach diesem Fehler und kann den einfach nicht finden...



Grüsse
 
Die zweite Seite (auf welcher der Fehler auftritt) so:

PHP:
<?php
    session_start();
?>
<!DOCTYPE html>
<html>

<head>
    <?php
        include "includes/headers.php";
    ?>
    <title>Unternehmung</title>
    <link rel="stylesheet" type="text/css" href="styles/jquery.autocomplete.css" />
    <script type="text/javascript" src="scripts/jquery.js"></script>
    <script type="text/javascript" src="scripts/jquery.autocomplete.js"></script>
    <script>
     $(document).ready(function(){
      $("#department").autocomplete("autocomplete.php", {
        matchContains: true,
        mustMatch: true,
        selectFirst: true            
      });
     });
    </script>
</head>

<body>
    <header>
        <div id="balken_schwarz">
            <a href="http://intranet.bs.ch"><img  src="http://www.html.de/images/intranet.gif"  alt="Intranet"></a>
        </div>
        <div id="balken_weiss">
            <a href="index.php"><img  src="http://www.html.de/images/logo_ed.gif" alt="Erziehungsdepartement  Basel-Stadt"></a>
        </div>
    </header>
    
    <nav>
        <?php
            include "includes/navigation.php";
        ?>
    </nav>
    
    <section>
        <div id="balken_blau">
            Unternehmung
        </div>
    </section>
    
    <section>
        <div id="spalte_blau">
        </div>
        
        <div id="content">
            <img src="http://www.html.de/images/banner.png" alt="Banner" />
            <p class="inhaltstext">
                Bitte überprüfen Sie die ermittelten Daten.<br />
                Sie können, falls nötig, Ergänzungen an den entsprechend  gekennzeichneten Feldern vornehmen. Bestätigen Sie die Daten, indem Sie  auf den Button "Weiter" klicken.
            </p>
            <?php
                // Datenbank- und AD-Verbindung herstellen
                include "includes/db_connect.php";
                include "includes/ad_auth.php";
                
                // AD-Variablen in Session schreiben
                $_SESSION['lastname'] = $lastname;
                $_SESSION['firstname'] = $firstname;
                $_SESSION['userid'] = $userid;
                $_SESSION['email'] = $email;
                
                // Formular auslesen und in Session schreiben
                $_SESSION['tel'] = $_POST['tel'];
                $_SESSION['manager'] = $_POST['manager'];
                $_SESSION['department'] = $_POST['department'];
                
                // Passwort-Variablen deklarieren für Vergleich
                $password = $_POST['password'];
                $password2 = $_POST['password2'];

                // Variablendeklaration aus Session für weitere Verarbeitung
                $department = $_SESSION['department'];
                
                // Anzahl bereits vorhandener Benutzer anhand User ID aus Datenbank ermitteln
                $result = mysql_query("SELECT userid FROM tbl_benutzer WHERE userid = '$userid'");
                $menge = mysql_num_rows($result);

                // Daten anhand Abteilung aus Datenbank holen
                $dbSelect = "SELECT * FROM tbl_unternehmung WHERE department = '$department'";
                $select_query = mysql_query($dbSelect) or die("Anfrage nicht erfolgreich!");

                // Array-Elemente in Session schreiben
                while ($arr = mysql_fetch_array($select_query)){
                    $_SESSION['division'] = $arr['division'];
                    $_SESSION['agency'] = $arr['agency'];
                    $_SESSION['profitcenter'] = $arr['profitcenter'];
                    $_SESSION['costunit'] = $arr['costunit'];
                }
                
                // Variablendeklaration aus Session für weitere Verarbeitung
                $division = $_SESSION['division'];
                $agency = $_SESSION['agency'];
                $profitcenter = $_SESSION['profitcenter'];
                $costunit = $_SESSION['costunit'];
                
                // Validierung der Felder
                if ($menge >= 1) {
                    header("Location: " . $returnerrorpage);
                } elseif($password != $password2 OR $password == "" OR  $password2 == "" OR $tel == "" OR $department == "" OR $manager == "" OR  $email != $firstname.".".$lastname."@bs.ch") { 
                        header("Location: " . $returnerrorpage);
                } else {
                        $password = md5($password);
                        $_SESSION['password'] = $password;
                        $date = date("F j, Y, g:i a");
                        $_SESSION['date'] = $date;                                                
                }
            ?>
            <form name="unternehmungsform" action="kurs.php" method="post">
                <fieldset>
                    <legend>Angaben zur Unternehmung</legend>
                        <p>
                            <label for="division">Bereich</label>
                            <input type="text" name="division" id="division" value="<?php echo $division; ?>">
                        </p>
                        <p>
                            <label for="agency">Dienststelle</label>
                            <input type="text" name="agency" id="agency" value="<?php echo $agency; ?>">
                        </p>
                        <p>
                            <label for="profitcenter">Profit-Center</label>
                            <input type="text" name="profitcenter"  id="profitcenter" value="<?php echo $profitcenter; ?>">
                        </p>
                        <p>
                            <label for="costunit">Kostenstelle</label>
                            <input type="text" name="costunit" id="costunit" value="<?php echo $costunit; ?>">
                        </p>
                </fieldset>
                <div style="text-align:center;"><input type="submit" name="weiter" value="Weiter"></div>
            </form>
        </div>
    </section>
</body>

</html>

Ich vermute, dass der Fehler bei der Überprüfung der Variable $menge liegt...also, ob der Datensatz mit der entsprechenden User ID bereits in der Datenbank vorhanden ist.
 
Ich vermute, dass der Fehler bei der Überprüfung der Variable $menge liegt
Vermutungen helfen dir nicht weiter, aber

Richtig debuggen

1.Man bemerkt, dass ein Skript nicht das tut, was es soll.
2.Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
3.Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
4.Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
5.An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
6.Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
7.Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
8.Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
9.Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Hallo bdt600

Der Grund für den Fehler war auf eine nicht deklarierte Variable ($returnerrorpage) zurückzuführen. Ich dachte da, dass ich die in einer inkludierten Seite bereits deklariert hatte - war aber nicht so.

Es funktioniert nun einwandfrei. Danke.



Grüsse
 
Zurück
Oben