Hallo,

Ik ben een beginner met php en maak op dit moment een script om je wachtwoord te wijzigen terwijl je ingelogd bent dit is mijn code:

<?php
            session_start();  
            if (isset($_SESSION['username'])) {
                //u bent ingelogd als user, klik op uitloggen om uit te loggen *//
                $gebruiker= ucwords(strtolower($_SESSION['username']));
        ?>
                            <div class="menubalk">
                            <div align="left" class="menu">
                                <ul>
                                    <li><a class="link" href="../overzicht.php">Home</a></li>
                                    <li><a class="link" href="../pakket/overzicht_pakket.php">Pakket</a></li>
                                    <li><a class="link" href="../keuzepakket/overzicht_keuzepakket.php">Keuzepakket</a></li>
                                    <li><a class="link" href="../korting/overzicht_korting.php">Korting</a></li>                                    
                                </ul>
                            </div>
                            <div class="inloggen">
                                <form action="../index.php" method="post">
                                    U bent ingelogd als <?php print($gebruiker); ?><input type="submit" name="uitloggen" value="Uitloggen" />
                                </form>
                            </div>
                            </div>
            <div align="center" class="prijzen">
                <?php
                include '../functies/functies.php';
//                if($gebruikersnaam == 'Niels') {
                    if(!isset($_POST['submit'])) {
                ?>
                <form action="wachtwoordwijzigen.php" method="POST">
                <table>
                    <tr>
                        <th colspan="3">Wachtwoord Wijzigen</th>
                    </tr>
                    <tr>
                        <th>Naam</th>
                        <th>Wachtwoord</th>
                        <th>Herhaal wachtwoord</th>
                    </tr>
                    <tr>
                        <td><input type="text" name="gebruiker" value="<?php print($gebruiker); ?>" readonly /></td>
                        <td><input type="password" name="wachtwoord" value=""/></td>
                        <td><input type="password" name="wachtwoord2" value=""/></td>
                    </tr>
                    <tr>
                        <th colspan="2"></th>
                        <td><input type="submit" name="submit" value="Wijzigen"/></td>
                    </tr>
                </table>
                </form>
                <?php
                    }
                    if(isset($_POST['submit'])) {
						$wachtwoord = $_POST['wachtwoord'];  
                        $wachtwoord2 = $_POST['wachtwoord2'];
                        if (strlen($wachtwoord) <=7 AND strlen($wachtwoord2) <= 7  OR strlen($wachtwoord) >= 13 AND strlen($wachtwoord2) >= 13) { //deze functie controleert of het wachtwoord minimaal 8 tekens bevat.
                            print('Het wachtwoord moet minimaal 8 tekens bevatten en mag maximaal 12 tekens bevatten <br/> Klik <a href="wachtwoordwijzigen.php">hier</a> om terug te gaan<br/>');
                        }
                        if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,12}$/', $wachtwoord2)) {
                                //indien dit niet zo is roept hij dit aan.
                                echo ("Het wachtwoord moet vreemde tekens bevatten.<br>");
                        }
                        if($wachtwoord != $wachtwoord2) {
                            print('De wachtwoorden komen niet overeen!');
                        } 
                        elseif(strlen($wachtwoord) >=8 AND strlen($wachtwoord2) >= 8  OR strlen($wachtwoord) >=12  AND strlen($wachtwoord2) >= 12){ 
                            //als het ww tussen de 8 en 12 tekens is en voldoet aan eisen	
                            $count = wachtwoordWijzigen($gebruiker,$wachtwoord);
                            if($count == 1) {
                                print ('U wachtwoord is veranderd. <br/> Klik <a href="wachtwoordwijzigen.php">hier</a> om terug te gaan<br/>');//Wanneer de gegevens succesvol zijn veranderd in de database geeft de script dit weer.
                            }
                            else {//anders geeft het een foutmelding
                                print('Er is iets misgegaan <br/> Klik <a href="wachtwoordwijzigen.php">hier</a> om terug te gaan<br/>');
                            }
                        }
                    }
//                }
//                else{
//                    print('U hebt niet de bevoegdheden om dit gedeelte van de website te betreden');
//                }
                ?>

mijn functier.php

function wachtwoordWijzigen($gebruiker,$wachtwoord) {
    //gemaakt door: Dany Panis
    global $naamdatabase,$inlog,$ww,$host,$poort;
    //verbinding maken database, uitvoeren query's
        $verbinding = new PDO("mysql:host=$host;port=$poort;dbname=$naamdatabase","$inlog","$ww");
        $sql=("UPDATE gebruikers SET wachtwoord =:wachtwoord where gebruiker =:gebruikersnaam ");	
			 
        $statement = $verbinding ->prepare($sql);
        $statement->bindValue(':gebruikersnaam', $gebruiker, PDO::PARAM_STR);
        $statement->bindValue(':wachtwoord', $wachtwoord, PDO::PARAM_STR);
        $statement->execute();
        $count = $statement->fetchAll(PDO::FETCH_ASSOC);
        return $count; 
}
?>



Mijn bedoeling is om mijn wachtwoord te kunnen veranderen terwijl ik als persoon x ben ingelogd.
Als ik ingelogd ben als persoon x dan krijg ik dat te zie wanneer ik mijn wachtwoord wil wijzigen.
Voer mijn wachtwoord in die ik wil en wil de wachtwoord en sessie of gebruikersnaam doorsturen naar de database en het updaten. Er staat alleen een foutmeldingg dat: Er is iets misgegaan .
Geen foutmeldingen van php of wat dan ook.
Snap niet wat ik hier verkeerd doe.

Of de query correct wordt uitgevoerd kan je zo niet zien, want je checkt het helemaal niet. Wat je wel probeert te doen is een resultset ophalen via fetchAll. Dat kan echter helemaal niet, want een UPDATE query levert geen resultset op. Je return zal dus altijd een lege array zijn. Het aantal aangepaste records kan je opvragen met de methode rowCount().
het dat geprobeerd, het geeft nog steeds dezelfde foutmedeling bij het updaten.

Toevoeging op 08/01/2014 19:45:11:

function WachtwoordWijzigen($gebruiker,$wachtwoord) {
//gemaakt door: Dany Panis
global $naamdatabase,$inlog,$ww,$host,$poort;
//verbinding maken database, uitvoeren query's
$verbinding = new PDO("mysql:host=$host;port=$poort;dbname=$naamdatabase","$inlog","$ww");
$sql=("UPDATE gebruikers SET wachtwoord =:wachtwoord where gebruiker =:gebruikersnaam ");

$statement = $verbinding ->prepare($sql);
$statement->bindValue(":gebruikersnaam", $gebruiker, PDO::PARAM_STR);
$statement->bindValue(":wachtwoord", $wachtwoord, PDO::PARAM_STR);
$statement->execute();
$count = $statement->rowCount();// telt de accounts die er zijn gemaakt.
return $count;
}


werkt ook niet
wat is nu de inhoud van $count?

geef na $count = $statement....

eens een regel

var_dump($count); exit();

Wat komt daar uit? False?

--
je zou ook kunnen toevoegen:


<?php
if(!$statement->execute()) {
  $arr = $statement->errorInfo(); 
  print_r($arr);
}
?>
er komt int(0) uit

Toevoeging op 08/01/2014 20:32:13:

de 2e optie geeft
Array ( [0] => 42S22 [1] => 1054 [2] => Unknown column 'gebruiker' in 'where clause' )
Dan bevat de tabel gebruikers kennelijk geen kolom gebruiker ?
het bevat een kolom gebruikersnaam
Moet het dan niet zijn:
[code]
<?php
$sql=("UPDATE gebruikers SET wachtwoord =:wachtwoord where gebruikersnaam =:gebruikersnaam ");
?>
[code]
OMG je bent een held het doet het.
Ik ben hier 3 dagen aan het klooien mee geweest hartstikke bedankt.
Nee hoor geen held.
Het was dat Ivo de tip var_dump() gaf, en jij zelf het antwoord al.

Dus het was een gevalletje gewoon eenvoudig meedenken. ;)
Daar zijn we voor he, graag gedaan hoor.

Ja maar ben heel blij voor de hulp.
Morgen moest ik het al inleveren en ik was een beetje gaar dus vroeg ik wat rond ;)

Reageren