Hallo iedereen,

Ik ben bezig om een profielwijzig pagina te maken, hier kun je o.a je wachtwoord wijzigen. Ik heb hiervoor een simpele pagina genaamd wijzigprofiel.php (alleen de cruciale lines heb ik geshowed):


<?php
$errors = array();
        $berichten = array();


        if($_SERVER['REQUEST_METHOD'] == 'POST')
        {
            $gebruikers_id = 3; #moet natuurlijk uit sessie komen

            #Check voor wachtwoord
            if ($_POST['oudwachtwoord'] != '' and $_POST['nieuwwachtwoord'] != '' and $_POST['nieuwwachtwoord'] != '' )
            {
                $sql = "SELECT wachtwoord FROM gebruikers WHERE gebruikers_id = :gebruikers_id"; 
                $query = $db->prepare($sql);
                $query->bindParam( ':gebruikers_id', $gebruikers_id, PDO::PARAM_INT)  ;
                $query->execute();
                $resultaat = $query->fetch(PDO::FETCH_ASSOC);


                echo $resultaat['wachtwoord'];

                if( $resultaat['wachtwoord'] == $_POST['oudwachtwoord'])
                {
                    if( $_POST['nieuwwachtwoord'] == $_POST['nieuwwachtwoordopnieuw'] )
                    {
                        $sql = "UPDATE gebruikers SET wachtwoord = :wachtwoord WHERE gebruikers_id = :gebruikers_id"; 
                        $query = $db->prepare($sql);
                        $query->bindParam( ':wachtwoord', $_POST['nieuwwachtwoordopnieuw'], PDO::PARAM_STR);
                        $query->bindParam( ':gebruikers_id', $gebruikers_id, PDO::PARAM_INT);
                        $query->execute();
                        $berichten[] = "Je wachtwoord is veranderd.";
                    }
                    else
                    {
                        $errors[] = "Je nieuwe wachtwoord komt niet overeen.";
                    }
                }
                else
                {
                    $errors[] = "Het oude wachtwoord is onjuist.";
                }
            }
?>


        <?php


        if( count($berichten) > 0 )
        {
            echo "<div style=\"background: #CEFEC8; border: 2px solid green; padding: 15px;\">";
            foreach( $berichten as $bericht )
            {
                echo "<li>" .$bericht. "</li>";
            }
            echo "</div>";
        }


        if( count($errors) > 0 )
        {

            echo "<div style=\"background: #FFC9C7; border: 2px solid red; padding: 15px;\">";
            foreach( $errors as $error )
            {
                echo "<li>" .$error. "</li>";
            }
            echo "</div";

        }






        ?>




            <fieldset>
                <legend>Wachtwoord</legend>
                <label for="oudwachtwoord">Oude wachtwoord</label>
                <input type="password" name="oudwachtwoord" /><br/>
                <label for="nieuwwachtwoord">Nieuw wachtwoord</label>
                <input type="password" name="nieuwwachtwoord" /><br/>
                <label for="nieuwwachtwoordopnieuw">Nieuw wachtwoord opnieuw</label>
                <input type="password" name="nieuwwachtwoordopnieuw" />



            </fieldset>



Als ik een onjuist "oudwachtwoord" invoer en dan op submit druk krijg ik zoals het hoort een error. Als ik dan opnieuw het oudewachtwoord invoer samen met het nieuwe wachtwoord en ik druk op submit gebeurt er niks. De pagina wordt niet opnieuw geladen, noppes, nada, niks. Kortom het formulier wordt dan niet gesubmit.

Zou iemand weten hoe dit komt?

Met vriendelijke groet,
Omar
Is je <form> nog wel compleet?
Bedankt voor de snelle reactie! Ja, ik heb enkel een snippet gepost maar dit is het hele form:


<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">

            <fieldset>
                <legend>Profielfoto</legend>
                    <label for="bestand">Selecteer een foto:</label>
                    

                    <input type="file" name="bestand" />

            </fieldset>

            <fieldset>
                <legend>Persoonlijke gegeven</legend>
                <label for="man">Man</label>
                <input type="radio" id="man" name="geslacht" value="man" />
                <label for="vrouw">Vrouw</label>
                <input type="radio" id="vrouw" name="geslacht" value="vrouw">
                <label for="dag">Geboortedatum</label>
                <br/>
                <select name="dag">
                <?php
                    for($i=1; $i <= 31; $i++ )
                    {
                        echo "<option value=" .$i. ">" .$i. "</option>";
                    }
                ?>
                </select>
                
                <select name="maand">
                <option value="1">Januari</option>
                <option value="2">Februari</option>
                <option value="3">Maart</option>
                <option value="4">April</option>
                <option value="5">Mei</option>
                <option value="6">Juni</option>
                <option value="7">Juli</option>
                <option value="8">Augustus</option>
                <option value="9">September</option>
                <option value="10">Oktober</option>
                <option value="11">November</option>
                <option value="12">December</option>
                </select>

                <select name="jaar">
                <?php
                    for($i= date("Y"); $i >= 1900; $i-- )
                    {
                        echo "<option value=" .$i. ">" .$i. "</option>";
                    }
                ?>
                </select>

            </fieldset>

            <fieldset>
                <legend>Privacy</legend>
                <label for="openbaar">Openbaar</label>
                <input type="radio" id="openbaar" name="openbaar" value="openbaar" />
                <label for="prive">Privé</label>
                <input type="radio" id="prive" name="openbaar" value="prive" />
            </fieldset>
            
            <fieldset>
                <legend>Wachtwoord</legend>
                <label for="oudwachtwoord">Oude wachtwoord</label>
                <input type="password" name="oudwachtwoord" /><br/>
                <label for="nieuwwachtwoord">Nieuw wachtwoord</label>
                <input type="password" name="nieuwwachtwoord" /><br/>
                <label for="nieuwwachtwoordopnieuw">Nieuw wachtwoord opnieuw</label>
                <input type="password" name="nieuwwachtwoordopnieuw" />



            </fieldset>
            <br />
            <input type="submit" value="Update mijn profiel" />



        </form>
Dit:

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">

kan gewoon zo:

<form action="" method="post">
Ik had het eerst op die manier, maar omdat het niet werkte ging ik gebruik maken van PHP_SELF hahaha :P.

Overigens komt het probleem niet voor als ik wel een juist oudwachtwoord, nieuwwachtwoord en nieuwwachtwoordopnieuw invul. Dan kan ik oneindig veel keer het form resubmitten. Alleen als er een error voorkomt kun je het form niet meer submitten.
Zitten bovenstaande scripts in 1 bestand?
Ja, alles zit in 1 bestand genaamd wijzigprofiel.php
Kijk eens na een fout in de broncode of het formulier nog compleet ia.
Thanks! Dat was de oplossing! Als er een error werd geprint werd de div niet met een ">" afgesloten.

Dat zo'n klein foutje zulk effect kan hebben :P.

Duizendmaal dank!
Ha, ik zie het nou ook.
Tweede script regel 23 mist inderdaad een >.
Inderdaad, dat was hem!

Nogmaals bedankt!

Reageren