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

Unendliches Alert

soulxheart

Mitglied
Guten Tag

Ich habe in Kombination mit PHP ein Login gebastelt.

Wenn Benutzername oder Passwort leer ist, wird per Javascript-Alert eine Fehlermeldung ausgegeben. Wenn das Passwort nicht das Passwort des Benutzers aus der Datenbank ist, wird ein anderer Fehler ausgegeben.

Das Ganze sieht so aus:

PHP:
    $returnpage = "../index_intern.php";

    if($userid == "" OR $password == "") {
        echo "<script type='text/javascript'>alert('Bitte geben Sie Ihre Benutzerdaten ein.');</script>";
        echo "<meta http-equiv='refresh' content='0;../login.php'>";
    } elseif($arr -> password == $password) {
        $_SESSION['userid'] = $userid;
        header("Location: " . $returnpage);
    } else {
        echo "<script type='text/javascript'>alert('Benutzername und/oder Passwort waren falsch.');</script>";
        echo "<meta http-equiv='refresh' content='0;../login.php'>";
    }

Im Firefox funktioniert dies problemlos. Wenn ich das Ganze jedoch im Internet Explorer (8 und 9) teste, kommt die erste Fehlermeldung. Klicke ich im Alert-Fenster auf OK, erscheint die Meldung erneut. Und das geht so weiter, bis ich den Internet Explorer per Task-Manager beende.

Muss ich da anders an die Sache rangehen?



Grüsse
 
Könntest Du bitte den im Browser ankommenden HTML-Code zeigen, sowohl im IE als auch im Firefox.

Vermutung: im IE wird durch deine PHP-Programmierung ein anderer HTML-Code ausgegeben als im Firefox.
 
genau :O).

und der IE ist auch sensiebler zwecks doctyp und so, dies scheint bei dein code total nicht berügsichtigt.

Cheffchen
 
Hallo

Das wäre der gesamte Code, der ausgeführt bzw. angezeigt wird, wenn man auf der ersten Seite einen Fehler beim Ausfüllen des Formulars macht:

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

<head>
    <?php
        include "includes/headers.php";
    ?>
    <title>Unternehmung</title>
</head>

<body>
    <header>
        <div id="balken_schwarz">
            <a href="http://intranet.bs.ch"><img src="images/intranet.gif" alt="Intranet"></a>
        </div>
        <div id="balken_weiss">
            <a href="index.php"><img src="images/logo_ed.gif" alt="Erziehungsdepartement Basel-Stadt"></a>
        </div>
    </header>
    
    <nav>
        <?php
            include "includes/navigation.php";
        ?>
    </nav>
    
    <section>
        <div id="balken_blau">
            Erstanmeldung (2/3)
        </div>
    </section>
    
    <section>
        <div id="spalte_blau">
        </div>
        
        <div id="content">
            <!--<img src="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";

                // Variablendeklaration: Fehlerseite
                $returnerrorpage = "fehler_eintragen.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'];
                
                // Anzahl Zeichen des Passworts ermitteln
                $anzahl = strlen($password);

                // 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) {
                    echo "<script type='text/javascript'>alert('Benutzer ist bereits vorhanden!');</script>";
                    echo "<meta http-equiv='refresh' content='0;anmelden.php'>";
                } elseif($password == "" OR $password2 == "" OR $tel == "" OR $department == "" OR $manager == "") { 
                    echo "<script type='text/javascript'>alert('Bitte füllen Sie alle Felder (korrekt) aus!');</script>";
                    echo "<meta http-equiv='refresh' content='0;anmelden.php'>";
                } elseif($password != $password2) {
                    echo "<script type='text/javascript'>alert('Die Passwörter stimmen nicht überein!');</script>";
                    echo "<meta http-equiv='refresh' content='0;anmelden.php'>";
                } elseif($anzahl <= 7) {
                    echo "<script type='text/javascript'>alert('Passwortlänge ist nicht zulässig! Bitte wählen Sie ein Passwort zwischen 8 und 16 Zeichen.');</script>";
                    echo "<meta http-equiv='refresh' content='0;anmelden.php'>";
                } elseif($email != $firstname.".".$lastname."@bs.ch") {
                    echo "<script type='text/javascript'>alert('Die eingegebene E-Mail-Adresse ist nicht valide!');</script>";
                    echo "<meta http-equiv='refresh' content='0;anmelden.php'>";
                } else {
//                    $password = md5($password);
                    $_SESSION['password'] = $password;
                    $date = date("F j, Y, g:i a");
                    $_SESSION['date'] = $date;                                                
                }
                                
                // Validierung der Felder
            /*    if ($menge >= 1) {
                    header("Location: " . $returnerrorpage);
                } elseif($password != $password2 OR $anzahl <= 7 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 kann den im Browser ausgegebenen Code nicht einsehen, da der ja serverseitig mit PHP generiert wird, sobald ein Fehler auftritt.

Wenn ich die Weiterleitung mit header("Location: LINK HIER"); mache, wird der Teil mit dem Javascript-Alert nicht ausgeführt.



Grüsse
 
was sollen wir damit?
dann zeige halt den Code aus FF.
Der Code kann so aber auch nicht passen da oben was mit head Weiterleitung hast und in der jetzt nirgends richtig eingebunden sein kann vor jeder Ausgabe.

cheffchen
 
Hallo

headers.php ist nur eine Datei, welche die restlichen meta-Angaben und das Einbinden der Stylesheets enthält.

Ich habe keine Möglichkeit, den Code aus den Browsern zu posten, da die Fehler ja nicht im Quellcode stehen...bzw. ich gar nicht auf die Seite komee, da mir ja die Fehlermeldungen durch die Javascript-Alerts dies verweigern. Es hilft dann nur noch das Beenden des Internet Explorers durch den Task-Manager.

Das ist die Seite (aus dem Browser), welche den Fehler produziert:

PHP:
<!DOCTYPE html> <html>  <head> 	<script type="text/javascript"> 	document.createElement("article"); 	document.createElement("section"); 	document.createElement("footer"); 	document.createElement("header"); 	document.createElement("hgroup"); 	document.createElement("nav"); </script> <!--[if lt IE 9]>     <script src="scripts/html5.js"></script> <![endif]--> <link rel="stylesheet" type="text/css" href="styles/main.css" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />	 <link rel="icon" type="image/png" href="images/favicon.png" /> <script type="text/javascript" src="../scripts/jquery-1.10.1.js"></script>    <title>Unternehmung</title> </head>  <body> 	<header>     	<div id="balken_schwarz">         	<a href="http://intranet.bs.ch"><img src="images/intranet.gif" alt="Intranet"></a>         </div>         <div id="balken_weiss">         	<a href="index.php"><img src="images/logo_ed.gif" alt="Erziehungsdepartement Basel-Stadt"></a>         </div>     </header>      	<nav> 		<ul> 				<li><a href="index.php">Startseite</a></li> 				<li id="aktiv"><a href="anmelden.php">Erstanmeldung</a></li> 			</ul>    </nav>          <section>     	<div id="balken_blau">         	Erstanmeldung (2/3)         </div>     </section>          <section>     	<div id="spalte_blau">         </div>                  <div id="content">         	<!--<img src="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>                         <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="Zentrale Dienste">                         </p>                         <p>                             <label for="agency">Dienststelle</label>                             <input type="text" name="agency" id="agency" value="Zentrale Dienste">                         </p>                         <p>                             <label for="profitcenter">Profit-Center</label>                             <input type="text" name="profitcenter" id="profitcenter" value="Administrative Dienste">                         </p>                         <p>                             <label for="costunit">Kostenstelle</label>                             <input type="text" name="costunit" id="costunit" value="2018950">                         </p>                 </fieldset>             	<div style="text-align:center;"><input type="submit" name="weiter" value="Weiter"></div>             </form>         </div>     </section> </body>  </html>
 
Hallo,


  1. hast dir das gepostete mal angeschaut, ne wa :O)
  2. wer soll den code lesen können?
  3. zum glück kann das mein editor das richten :O)
  4. in dem geposteten ist kein einziges alert drin und auch sonst kein JS ausser jquery eingebunden?

Wie sollen wir dir damit helfen?

Du hattest geschrieben
Im Firefox funktioniert dies problemlos. Wenn ich das Ganze jedoch im Internet Explorer (8 und 9) teste, kommt die erste Fehlermeldung. Klicke ich im Alert-Fenster auf OK,
also ist das jetzt die Seite aus FF? aber sehe kein allert.

Cheffchen
 
Hallo

Tut mir leid, aber ich kann da nichts für. Irgendwie hat hier das Forum meinen Code so zugerichtet, bei mir ist das klar strukturiert.

Ja logisch ist da kein Alert, weil diese ja auch mit PHP generiert werden.

Das ist der PHP-Code, der gleich nach dem div#content kommt:

PHP:
            <?php
                // Datenbank- und AD-Verbindung herstellen
                include "includes/db_connect.php";
                include "includes/ad_auth.php";

                // Variablendeklaration: Fehlerseite
                $returnerrorpage = "fehler_eintragen.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'];
                
                // Anzahl Zeichen des Passworts ermitteln
                $anzahl = strlen($password);

                // 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) {
                    echo "<script type='text/javascript'>alert('Benutzer ist bereits vorhanden!');</script>";
                    echo "<meta http-equiv='refresh' content='0;anmelden.php'>";
                } elseif($password == "" OR $password2 == "" OR $tel == "" OR $department == "" OR $manager == "") { 
                    echo "<script type='text/javascript'>alert('Bitte füllen Sie alle Felder (korrekt) aus!');</script>";
                    echo "<meta http-equiv='refresh' content='0;anmelden.php'>";
                } elseif($password != $password2) {
                    echo "<script type='text/javascript'>alert('Die Passwörter stimmen nicht überein!');</script>";
                    echo "<meta http-equiv='refresh' content='0;anmelden.php'>";
                } elseif($anzahl <= 7) {
                    echo "<script type='text/javascript'>alert('Passwortlänge ist nicht zulässig! Bitte wählen Sie ein Passwort zwischen 8 und 16 Zeichen.');</script>";
                    echo "<meta http-equiv='refresh' content='0;anmelden.php'>";
                } elseif($email != $firstname.".".$lastname."@bs.ch") {
                    echo "<script type='text/javascript'>alert('Die eingegebene E-Mail-Adresse ist nicht valide!');</script>";
                    echo "<meta http-equiv='refresh' content='0;anmelden.php'>";
                } else {
                    // $password = md5($password);
                    $_SESSION['password'] = $password;
                    $date = date("F j, Y, g:i a");
                    $_SESSION['date'] = $date;                                                
                }
 
Hallo,

versteh ich zwar immer noch nicht aber ok.
Es liegt vielleicht daran das alert() hast, vielleicht ist confirm besser und dann hast mitten im body
<meta http-equiv='refresh'
wie das meta dir am anfang sagen möchte ist das meta daten und das gehört ins head.

Dann hast ein grundsätzliches problem was glaube ich auch schult ist. EVA-Prinzip oder das nicht anwenden desen.
Du mischt PHP verarbeitung mit HTML code und das macht man einfach nicht.
Eingabe: get post session sachen die in einer datei ankommen
Verarbeitung: PHP code der dies verarbeitet, sql oder was für berechnungen auch immer
Ausgabe: erst jetzt gibt es die erste ausgabe in deiner Datei mit dem HTML zeug und die ergebnise von der verarbeitung als fertig aufbereitet Variable die dann nur noch ein echo bekommen.

Das ist nicht schlimmes man muss halt bloss gleich von anfang an darauf achten. wenn das auch hättest könntest einfach in head dein ausgaben machen die brauchst.

Cheffchen
 
Hallo,

versteh ich zwar immer noch nicht aber ok.
Es liegt vielleicht daran das alert() hast, vielleicht ist confirm besser und dann hast mitten im bodywie das meta dir am anfang sagen möchte ist das meta daten und das gehört ins head.

Dann hast ein grundsätzliches problem was glaube ich auch schult ist. EVA-Prinzip oder das nicht anwenden desen.
Du mischt PHP verarbeitung mit HTML code und das macht man einfach nicht.
Eingabe: get post session sachen die in einer datei ankommen
Verarbeitung: PHP code der dies verarbeitet, sql oder was für berechnungen auch immer
Ausgabe: erst jetzt gibt es die erste ausgabe in deiner Datei mit dem HTML zeug und die ergebnise von der verarbeitung als fertig aufbereitet Variable die dann nur noch ein echo bekommen.

Das ist nicht schlimmes man muss halt bloss gleich von anfang an darauf achten. wenn das auch hättest könntest einfach in head dein ausgaben machen die brauchst.

Cheffchen

Hallo Cheffchen

Wie soll ich denn sonst die verschiedenen Fehlermeldungen ausgeben ohne das Javascript-Alert und ohne die Weiterleitung? Für jeden Fehler eine eigene Fehlerseite zu generieren ist doch unmenschlich?

Ich müsste mich sowieso mal in die Funktionen einarbeiten...



Grüsse
 
Hallo Cheffchen

Ja sorry, falsch ausgedrückt. Danke für deine Geduld. ._.

Ich versuche es jetzt mal mit deinem Vorschlag.

HTML:
window.location.href=url

EDIT: Es funktioniert mit diesem Befehl, vielen Dank!



Grüsse
 
Zuletzt bearbeitet:
Zurück
Oben