wo is der fehler?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • wo is der fehler?

    hi

    ich habe eine options datei, in der der eingeloggte seine einstellungen ändern kann.

    das passwort-feld bleibt leer -> passwort wird nicht geändert (geht!)
    das passwort-feld wird beschrieben -> passwort wird md5 codiert und der rest ändert sich je nach einstellunge (geht nicht!)

    PHP-Code:
    else {
     if (empty(
    $pass)) {
      @
    mysql_query("UPDATE `tabelle` SET name = '$name', mail = '$mail', gpath = '$gpath' WHERE user = '".$_SESSION['user']."'") or die('<p align="center">Fehler beim Ändern der Optionen.<br><br><a href="options.php">Zurück</a></p>');
      echo 
    '<p align="center">Änderung der Optionen erfolgreich.<br><br><a href="options.php">Zurück</a></p>';
     }
     else {
      
    $pass md5($pass);
      @
    mysql_query("UPDATE `tabelle` SET pass = '$pass', name = '$name', mail = '$mail', gpath = '$gpath' WHERE user = '".$_SESSION['user']."'") or die('<p align="center">Fehler beim Ändern der Optionen.<br><br><a href="options.php">Zurück</a></p>');
      echo 
    '<p align="center">Änderung der Optionen erfolgreich.<br>Bitte neu einloggen!<br><br><a href="index.php?content=login" target="_top">Login</a></p>';
      
    session_destroy();
     }

    ps: am session_destroy liegt es bestimmt nicht, ich habe es auch schon ohne mehrmals ausprobiert, erfolglos! ich hoffe jemand hier sieht den fehler.

    danke schonmal

    sp4z

  • #2
    PHP-Code:
    else {
      
    $pass md5($pass);
      
    $sql="UPDATE `tabelle` 
      SET pass = '
    $pass', name = '$name', mail = '$mail', gpath = '$gpath
    WHERE user = '"
    .$_SESSION['user']."'";
      echo 
    $sql;
      
    mysql_query($sql) or die(mysql_error());
     } 
    ausgabe?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      das ist ja das problem, es gibt keine ausgabe. es gibt weder einen fehler noch sonst was. gar nichts. das einzige was angezeigt wird ist der HTML Kopf- und Fußbereich, der ausserhalb der Funktion definiert wurde. Auch wenn ich den Code so abändere wie du dort getan hast (oder das sogar kopiere) ist folgendes das einzige Ergebnis (im Quelltext):

      Code:
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      
      <head>
       <title>Titel</title>
       <link rel="stylesheet" type="text/css" href="style.css">
      </head>
      
      <body>
      
      
      </body>
      
      </html>

      Kommentar


      • #4
        dann geht er nicht in diesen else-zweig

        wie sehen die ifs vorher aus?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          moment...

          also folgendes kommt direkt nach dem Formular (das komische daran ist ja, wenn das pw nicht geändert wird geht alles):

          PHP-Code:
          if(!isset($_POST['speichern'])) {
           
          FORMULAR
          }
          elseif(!
          $_POST['name'] || $_POST['name'] == "") {
           echo 
          '<p align="center">Bitte einen Namen eintragen.<br><br><a href="options.php">Zurück</a></p>';
          }
          elseif(!
          $_POST['mail'] || $_POST['mail'] == "") {
           echo 
          '<p align="center">Bitte die E-Mail Adresse eintragen.<br><br><a href="options.php">Zurück</a></p>';
          }
          elseif(!
          $_POST['gpath'] || $_POST['gpath'] == "") {
           echo 
          '<p align="center">Bitte einen Pfad für die Grafiken angeben.<br><br><a href="options.php">Zurück</a></p>';
          }
          else {
           function 
          isValidMail($mail) {
            return 
          preg_match ("/^[0-9a-z]([-_.]?[0-9a-z])*@[a-z0-9-]+.([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|shop)$/i",$mail);
           }
           if (!empty(
          $pass)) {
            if (!
          preg_match("=^[a-zA-Z0-9]+$=i",$pass)) {
             echo 
          '<p align="center">Für das Passwort sind nur a-z, A-Z und 0-9 erlaubt, keine sonstigen Zeichen.<br><br><a href="options.php">Zurück</a></p>';
            }
           }
           elseif (
          isValidMail($mail) == false) {
            echo 
          '<p align="center">Die E-Mail Adresse ist ungültig.<br><br><a href="options.php">Zurück</a></p>';
           }
           else {
            if (empty(
          $pass)) {
             @
          mysql_query("UPDATE `tabelle` SET name = '$name', mail = '$mail', gpath = '$gpath' WHERE user = '".$_SESSION['user']."'") or die('<p align="center">Fehler beim Ändern der Optionen.<br><br><a href="options.php">Zurück</a></p>');
             echo 
          '<p align="center">Änderung der Optionen erfolgreich.<br><br><a href="options.php">Zurück</a></p>';
            }
            else {
             
          $pass md5($pass);
             @
          mysql_query("UPDATE `tabelle` SET pass = '$pass', name = '$name', mail = '$mail', gpath = '$gpath' WHERE user = '".$_SESSION['user']."'") or die('<p align="center">Fehler beim Ändern der Optionen.<br><br><a href="options.php">Zurück</a></p>');
             echo 
          '<p align="center">Änderung der Optionen erfolgreich.<br>Bitte neu einloggen!<br><br><a href="index.php?content=login" target="_top">Login</a></p>';
            }
           }

          Kommentar


          • #6
            schau dir das nochmal an
            PHP-Code:
            if (!empty($pass)) {
                if (!
            preg_match("=^[a-zA-Z0-9]+$=i",$pass)) {
                }
            }
            elseif (
            isValidMail($mail) == false) {
            }
            else {
                if (empty(
            $pass)) {
                }
                else {
                    
            //Passwort wurde auch geändert
                

            wenn $pass gefüllt is, geht php in das obere if und ignoriert das else, also wird da auch nix ausgeführt
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              aha aha

              danke schonmal für die schnelle hilfe. aber php kann doch nicht einfach meine einteilungen ignosieren?! der soll gar nicht zurück gehen...

              Kommentar


              • #8
                php macht das, was du programmiert hast

                wenn das erste if (!empty($pass)) zutrifft, ignoriert php alle dazugehörigen elseif und else zweige,was ja richtig is
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  hm dann müsste ich ja eigentlich nur die reihenfolge der { } ein bisscchen verändern und verschieben. moment ...

                  also das sollte jetz gehen

                  PHP-Code:
                  else {
                   if (
                  isValidMail($mail) == false) {
                    echo 
                  '<p align="center">Die E-Mail Adresse ist ungültig.<br><br><a href="options.php">Zurück</a></p>';
                   }
                   else {
                    if (empty(
                  $pass)) {
                     @
                  mysql_query("UPDATE `tabelle` SET name = '$name', mail = '$mail', gpath = '$gpath' WHERE user = '".$_SESSION['user']."'") or die('<p align="center">Fehler beim Ändern der Optionen.<br><br><a href="options.php">Zurück</a></p>');
                     echo 
                  '<p align="center">Änderung der Optionen erfolgreich.<br><br><a href="options.php">Zurück</a></p>';
                    }
                    else {
                     if (!
                  preg_match("=^[a-zA-Z0-9]+$=i",$pass)) {
                      echo 
                  '<p align="center">Für das Passwort sind nur a-z, A-Z und 0-9 erlaubt, keine sonstigen Zeichen.<br><br><a href="options.php">Zurück</a></p>';
                     }
                     else {
                      
                  $pass md5($pass);
                      @
                  mysql_query("UPDATE `tabelle` SET pass = '$pass', name = '$name', mail = '$mail', gpath = '$gpath' WHERE user = '".$_SESSION['user']."'") or die('<p align="center">Fehler beim Ändern der Optionen.<br><br><a href="options.php">Zurück</a></p>');
                      echo 
                  '<p align="center">Änderung der Optionen erfolgreich.<br>Bitte neu einloggen!<br><br><a href="index.php?content=login" target="_top">Login</a></p>';
                     }
                    }
                   }

                  so, klappt danke für die hilfe!! die isValidMail Function steht in einer functions.inc.php die ich require()
                  Zuletzt geändert von sp4z; 28.10.2003, 11:23.

                  Kommentar

                  Lädt...
                  X