bool Wert "false" obwohl er eigentlich "true" sein sollte :/

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

  • bool Wert "false" obwohl er eigentlich "true" sein sollte :/

    Hallo liebe Gemeinde
    ich kann und will es einfach nicht verstehen...
    Mein Cousin hat mich auf seinen Webshop aufmerksam gemacht. Dort kann man sich anmelden, man wird Produkte kaufen können etc etc.

    So jetzt gibt es folgendes Problem, er schreibt gerade das Usercenter, die Seite wo man bei Bedarf verschiedene Angaben verändern kann, und wenn man sein Passwort ändern möchte... dann funktioniert das zwar, aber die funktion, die überprüft ob das eingegebene KW dem bisherigen entspricht meint das es Probleme gibt.

    Bitte macht euch selbst ein Bild:
    Usercenter

    test account: "mamu"
    test KW: "mamu"

    Hier die Funktionen:
    PHP-Code:
    function has_changed($var) {
        if (
    $_POST[$var] != $_SESSION['user_'.strtolower($var)] AND !empty_formular($var))
            return 
    true;
        else
            return 
    false;
    }

    function 
    new_kennwort() {
        if (!
    has_changed("Kennwort") AND (!empty_formular('new') AND
     !
    empty_formular('new2')) AND $_POST['new'] == $_POST['new2'])
            return 
    true;
        else
            return 
    false;
    }

    function 
    update_kennwort() {
        if (
    new_kennwort()) {
            
    $_SESSION['user_kennwort'] = $_POST['new'];
            return 
    "Kennwort = MD5('".$_POST['new']."')";
        }
    }

    function 
    changeformular($label$name$type) {
        echo 
    "<tr><td width=\"200\">".$label.":</td><td><input type=\"".$type."\"";
        if (
    $type != 'password') {
            echo 
    ' value="'.$_SESSION['user_'.strtolower($name)].'"';
        }
        echo 
    " name=\"".$name."\" class=\"registerform\" />";
        if (isset(
    $_POST[$name])) {
            echo 
    "</td><td align=\"left\"><span class=\"smallalert\">";
            if (
    exists($name))
                echo 
    "* \"".$_POST[$name]."\" ist bereits in Verwendung";
            if (
    invalid_email($name))
                echo 
    "* Ihre email-Adresse ist ung&uuml;ltig";
            if (!
    new_kennwort() AND $name == "Kennwort" AND has_changed($name))
                echo 
    "* Falsches Kennwort";
            echo 
    "</span>";
        }
        echo 
    "</td></tr>\n";

    Und noch die Seite selbst:

    PHP-Code:
    echo '        <p id="title">Usercenter</p>';
        
            if (isset(
    $_POST['submit'])) {
            
                if ((!
    empty_formular('Vorname') AND
                    !
    empty_formular('Nachname') AND
                    !
    empty_formular('email') AND
                    !
    empty_formular('Adresse') AND
                    !
    invalid_email('email') AND
                    !
    exists('email')) AND
                
                    (
    has_changed('Vorname') OR 
                    
    has_changed('Nachname') OR 
                    
    has_changed('email') OR 
                    
    has_changed('Adresse') OR 
                    
    has_changed('email') OR 
                    
    new_kennwort())) {
            
                    
    $update "UPDATE
                            Users
                        SET
                            "
    .update_change('Vorname')."
                            "
    .update_change('Nachname')."
                            "
    .update_change('email')."
                            "
    .update_change('Adresse')."
                            "
    .update_kennwort()."
                        WHERE
                            ID = "
    .$_SESSION['user_id'].";";
                    
                    
    var_dump($update);
                    
    var_dump(new_kennwort());
                    
    //mysql_query($update) OR die(mysql_error());
                    
    echo '<br /><p id="suc">Daten erfolgreich ge&auml;ndert!</p>';
                } else {
                    echo 
    '<br /><p id="badsuc">Es wurden keine Daten
                        ver&auml;ndert!</p>'
    ;
                }
            }
            
            echo 
    '
                <p id="def">Falls Sie ihre Benutzerdaten &auml;ndern wollen,<br />
                geben Sie ihre gew&uuml;nschten Daten in die richtigen Felder ein.<br />
                Nach dem Absenden, gehen ihre urspr&uuml;nglichen Daten verloren!<br />
                Falls Sie ein falsches altes Kennwort eingeben, werden trotzdem die
                restlichen Ver&auml;nderungen vollzogen.<br />
                Es ist also nicht notwendig ein neues Kennwort anzugeben.
                </p>'
    ;
            echo 
    '
            <form action="index.php?section=usercenter" method="post">
                <table align="center">'
    ;
                    
    changeformular('Vorname''Vorname''text');
                    
    changeformular('Nachname''Nachname''text');
                    
    changeformular('email''email''text');
                    
    changeformular('Adresse''Adresse''text');
                    echo 
    '<tr>
                        <td width="250">Benutzername:</td>
                        <td>&nbsp;&nbsp;&nbsp;'
    .$_SESSION['user_benutzername'].'</td>
                    </tr>'
    ;
                    
    changeformular('Altes Kennwort''Kennwort''password');
                    
    changeformular('Neues Kennwort''new''password');
                    
    changeformular('Kennwort wiederholen''new2''password');
                    echo 
    '<tr>
                        <td align="right"><input type="submit" name="submit" value="Daten &auml;ndern" /></td>
                    </tr>
                </table>
            </form>'

    Bitte um Rat, denn ich kenn mich nicht aus

    lg Flo

    EDIT:
    HAT SICH ERLEDIGT
    Das hab ich gemacht
    PHP-Code:
    function update_kennwort() {
        if (
    new_kennwort()) {
            
    $_SESSION['user_kennwort'] = $_POST['new'];
            
    $_POST['Kennwort'] = "";
            return 
    "Kennwort = MD5('".$_POST['new']."')";
        }
    }

    Vergleiche:

    function 
    update_kennwort() {
        if (
    new_kennwort()) {
            
    $_SESSION['user_kennwort'] = $_POST['new'];
            return 
    "Kennwort = MD5('".$_POST['new']."')";
        }


    Zuletzt geändert von flowgrow; 21.03.2008, 20:13.

  • #2
    Hehe, jetzt hab ich ein anderes Problem... wenn etwas anderes als das Kennwort ändert, meint der Server, dass ich einen Fehler in meinem Query habe :/ bitte schaut es euch an, einfach mal die Daten ändern
    Zuletzt geändert von flowgrow; 21.03.2008, 20:30.

    Kommentar


    • #3
      ass ich einen Fehler in meinem Query habe :/ bitte schaut es euch an, einfach mal die Daten ändern
      Poste doch einfach mal die Query + Fehlermeldung, so wie es jeder andere bei einem solchen Problem auch macht...

      Kommentar


      • #4
        PUNKT 1... Query ist im anfangsbeitrag drinnen,
        PUNKT 2... die fehlermeldung hat nur nochmal den query angezeigt und gemeint, dass ein fehler drinnen is

        ich habs eh schon rausgefunden, es waren keine beistriche zwischen den werten, die upgedatet werden sollten

        Kommentar


        • #5
          1) da ist nur PHP-Code drin. Dass dieser im geparsten Zustand zufällig eine Query ergibt mag sein. Jedoch steht dieses Ergebnis hier nirgendwo. Also bitte!

          2) Ich geb es zu, ich hatte nicht erwartet, dass man im Projekthilfe-Forum die Funktion mysql_error() kennt. Aber dass du unsere Regeln befolgst, kann ich hoffentlich voraussetzen. Also bitte!

          ich habs eh schon rausgefunden, es waren keine beistriche zwischen den werten, die upgedatet werden sollten
          Das ist doch schonmal was. Einfach in Zukunft 1) und 2) befolgen, dann siehst du sowas direkt.

          Viel Erfolg noch!

          Kommentar


          • #6
            OK ich werds versuchen
            das letzte mal, dass ich die regeln gelesen habe is schon ne weile her und deswegen hab ich zb vergessen den query nochmal explizit anzugeben bzw den mysql error...

            ich hoff ich merks mir bis zum nächsten mal

            Kommentar

            Lädt...
            X