Echo wird in IF nicht ausgeführt

robotsox

Grünschnabel
Hallo liebe Community,

ich hänge nun seit ein paar Stunden an einem sehr mysteriösen Problem.
Ich habe ein PHP Code, welcher in der Datei unter dem HTML ausgeführt wird.
Nun vergleiche ich mein Ergebnis einer MySQL Abfrage und wenn diese "TRUE" ist, soll er ein echo (im code mit Pfeilen markiert) ausführen....

Nun zum Problem:
Das echo wird innerhalb der ersten zwei IF's (egal in welchen der zwei IF's) NICHT ausgeführt.
Setze ich das echo allerdings ausserhalb des IF's, erscheint mir sofort nach dem laden der Site, der gewünschte Dialog.

Das IF wird tatsächlich ausgeführt, da ich immer eine E-Mail erhalte, sobald das IF=TRUE ist...

Ich hoffe Ihr könnt mir da ein bisschen unter die Arme greifen :)


Gruß RobotSox


PHP:
<?php

    error_reporting(-1); // Alle Bits setzen = alle Fehler anzeigen
    ini_set('display_errors', 1); 
   
    require_once 'dist/database_engine.php';
    require_once 'dist/config.php';
   
    DB::$user = $mysql_db_user;
    DB::$password = $mysql_db_pass;
    DB::$dbName = $mysql_db_name;
    DB::$host = $mysql_db_host;
    DB::$port = $mysql_db_port;
    DB::$encoding = $mysql_encoding;

    $methode = htmlentities($_GET["methode"]);
   
    if($methode == "passwd_reset")
    {
        $user = htmlentities($_GET["user"]);

        $mail_sender_address_query = DB::queryFirstRow("SELECT value FROM settings WHERE setting=%s", 'email_sender_address');
        $mail_sender_address = $mail_sender_address_query['value']; 
       
        $mail_sender_name_query = DB::queryFirstRow("SELECT value FROM settings WHERE setting=%s", 'email_sender_name');
        $mail_sender_name = $mail_sender_name_query['value'];
       
        $mail_passwd_recovery_subj_query = DB::queryFirstRow("SELECT value FROM settings WHERE setting=%s", 'email_passwd_recovery_subj');
        $mail_passwd_recovery_subj = $mail_passwd_recovery_subj_query['value'];
       
        $mail_passwd_recovery_msg_query = DB::queryFirstRow("SELECT value FROM settings WHERE setting=%s", 'email_passwd_msg_subj');
        $mail_passwd_recovery_msg = $mail_passwd_recovery_msg_query['value'];
       
        DB::query("SELECT email FROM users WHERE email=%s OR username=%s", $user, $user);
        $counter = DB::count();
       
        if($counter >= 1)
        {
            // Benutzer gefunden --> Passwort erstellen --> EMail versenden --> Success PopUp oeffnen
           
            echo "<script type='text/javascript'>user_passwd_reset_success();</script>";//   <<<<-------------------
           
            $user_email_query = DB::queryFirstRow("SELECT email FROM users WHERE email=%s OR username=%s", $user, $user);
            $user_email = $user_email_query['email'];
            mail($user_email, $mail_passwd_recovery_subj, $mail_passwd_recovery_msg, "From: " .$mail_sender_name. " <".$mail_sender_address.">");
        }
       
        else
        {
            // Fehlermeldung wenn kein Benutzer gefunden wurde!
            echo "<script type='text/javascript'>user_passwd_reset_fail();</script>"; //     <<<<-------------------
        }
    }
   
    if($methode == "login")
    {
        $username = htmlentities($_POST["username"]);
        $password = htmlentities($_POST["password"]);
        $submit = htmlentities($_POST["submit"]);
       
        if(!empty($username) && !empty($password) && $submit == "1")
        {
            echo "ok";
        }
    }

?>
 
Was ist DB für eine Klasse=?
Warum machst du da einen Statischen Zugriff und keine Instanz?

Deine 2 Echos erstellen je ein Javascript. Also keine direkte Ausgabe. Schau mal den generierten Source-Code, ob du das das Javascript siehst. In der Normalansicht wirst du diese nicht sehen.

Kann es sein, dass dein $counter auch NULL sein kann?
 
Die Klasse DB ist = MeekroDB

Genau und die Javascriptfunktion rufen dann via SweetAlert eine PopUp Nachricht auf.
Problem ist nur, dass ich im Seiten SourceCode den PHP Teil natürlich nicht sehe :/
 
Die Javascript Funktionen werden mir angezeigt:

Code:
function user_passwd_reset_fail()
{
    swal("Fehler", "Es konnte kein neues Passwort generiert werden, bitte versuchen Sie es später erneut!", "error");
}

function user_passwd_reset_success()
{
    alert("test");
    swal("Erledigt!", "Bitte kontrollieren Sie Ihr E-Mail Postfach!", "success");
}
 
Die Funktionen schon. Aber der Aufruf den du mit Echo ausgeben willst?

<script type='text/javascript'>user_passwd_reset_success();</script>
oder
<script type='text/javascript'>user_passwd_reset_fail();</script>
 
Den Teil sehe ich leider nicht, wird doch erst Sichtbar wenn das If=True wird oder? Dies ist erst der Fall wenn das Passwort Reset Popup einen httpRequest gesendet hat und das if(passwd_reset) Wahr ist...
 
Falsch. Der Else-Teil sollte angezeigt werden, wenn der if auf false ist.
Ich schreibe über diesem if-else. Welchen meinst du?
PHP:
        if($counter >= 1)
        {
            // Benutzer gefunden --> Passwort erstellen --> EMail versenden --> Success PopUp oeffnen
          
            echo "<script type='text/javascript'>user_passwd_reset_success();</script>";//   <<<<-------------------
          
            $user_email_query = DB::queryFirstRow("SELECT email FROM users WHERE email=%s OR username=%s", $user, $user);
            $user_email = $user_email_query['email'];
            mail($user_email, $mail_passwd_recovery_subj, $mail_passwd_recovery_msg, "From: " .$mail_sender_name. " <".$mail_sender_address.">");
        }
      
        else
        {
            // Fehlermeldung wenn kein Benutzer gefunden wurde!
            echo "<script type='text/javascript'>user_passwd_reset_fail();</script>"; //     <<<<-------------------
        }
Die Eine oder Andere Ausgabe muss da sein. Ansonsten ist das Problem beim Äusseren if.
 
Ja wir reden vom selben IF :)
Das If wird auch ordnungsgemäß ausgeführt....woher ich das weiß? Weil ich eine E-Mail bekomme mit dem neuen Passwort...

Problem nur, im Seitenquelltext wird mir der "user_passwd_reset_success" Dialog nicht angezeigt und demnach auch nicht visuell auf der Seite angezeigt :(

Hast du da vllt eine Idee?
 
Nochmals. Wenn du den QUELTEXT anschaust. Siehst du dan dein kleines Einzeiler Javascript, welches dein Popupscript aufrufen soll oder siehst du es nicht?
Wenn du es siehst, dann funktioniert das echo. Und ich bin sicher dass es da ist.
Wenn aber das Ausgegebene Javascript nicht ausgeführt wird, dann hat das nix mit PHP zu tun sondern mit Javascript.

So, nachher geb ich es auf, dir zu sagen, dass du im Quelltext den Javascriptaufruf suchen musst. Eigentlich gebe ich jetzt vollständig auf, da ich nicht fähig bin dir zu erklären was du wo sehen solltest und was wo läuft.
 

Neue Beiträge

Zurück