php functie aanroepen binnen een form: reset password met random nieuw password

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco V

Marco V

18/08/2010 20:22:25
Quote Anchor link
Hallo allen,

Ik zoek naar een oplossing voor het volgende...

Ik heb een formulier met contactpersoon gegevens, roep ik een bestaande op dan worden alle velden gevuld met de data dat bij het desbetreffende record behoort. So far so good. Een van de velden is het password waarmee de persoon kan inloggen.

Nu wil ik naast het password een knop plaatsen om het password te resetten, dat wil zeggen... een nieuw (random) password genereren en de huidige daarmee dus vervangen.
Hiervoor wil ik de volgende functie gebruiken...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
function createRandomPassword() {
$chars = "abcdefghijkmnopqrstuvwxyz023456789"; // welke karakters mag het wachtwoord bevatten?
srand((double)microtime()*1000000);
$i = 0;
$pass = '' ;
// het aantal karakters van het wachtwoord
while ($i <= 6) {
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$pass = $pass . $tmp;
$i++;
}

return $pass;
}

?>


Mijn vraag is, hoe kan ik deze functie nu aanroepen? Bij voorkeur zou ik de reset knop als een submit knop gebruiken die naast het posten ook meteen deze functie aanroept en zodoende de huidige waarde van de variabele vervangen door een nieuw (random) password.
 
PHP hulp

PHP hulp

28/03/2024 13:04:03
 
Tom de vries

Tom de vries

18/08/2010 21:10:15
Quote Anchor link
$value = "";
if(isset($_POST['submit'])){
$value = createRandomPassword();
}

en dan in html zoiets:
print '<input value="'.$value.'"...


Of is dit niet wat je bedoelde?

Edit:
De knop moet dan overigens zowiest zijn:
<input type="submit" name="submit" value="Klik hier om je password te resetten en misschien zelfs nog om wat anders leuks te doen :D">
Gewijzigd op 18/08/2010 21:14:31 door Tom de vries
 
Marco V

Marco V

18/08/2010 22:01:16
Quote Anchor link
Tom, dank voor je reactie!

Even een vraag nog... ik heb in mijn formulier al een andere submit knop, gaat dit ook werken als ik de naam van mijn reset knop verander? Dus zoiets;

$value = "";
if(isset($_POST['reset'])){
$value = createRandomPassword();
}

en dan in html zoiets:
print '<input value="'.$value.'"...

De knop moet dan zowiest zijn:
<input type="submit" name="reset" value="Klik hier om je password te resetten en misschien zelfs nog om wat anders leuks te doen :D">

Want ik wil natuurlijk niet altijd het password wijzigen als ik het formulier opnieuw post.

Toevoeging op 18/08/2010 22:31:15:

Uit mijn testen blijkt voorgaande niet te werken!

Wat ik eigenlijk zou willen, maar weet even niet hoe, is een tweede submit button die ik bij het verwerken van het formulier signaleer. (dus zodra ik weet dat de post gedaan wordt door de tweede submit button, kan ik de huidige waarde vervangen!)

<html>
<form action="contactpersonen.php" method="post" target="_self">
<input name="CONTACTPERSOON[PASS]" type="text" id="PASS" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $CONTACTPERSOON[PASS] ?>
" size="6" maxlength="6" />
<input name="pass" type="hidden" id="pass" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo createRandomPassword() ?>
" />
<input type="submit" name="reset" value="reset" />
<input type="submit" name="Opslaan" value="Opslaan" />
</form>
</html>

in het script dat de invoer verwerkt staat;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if ($CONTACTPERSOON[PASS]) {
    if(isset($_POST['reset'])){
        $CONTACTPERSOON[PASS] = $pass;
    }

    $CONTACTPERSOON[PASS] = trim($CONTACTPERSOON[PASS]);
}

?>


Maar dit werkt dus niet!? Iemand nog een idee?
Gewijzigd op 19/08/2010 08:57:30 door Marco V
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.