Dubbele submit?
Ik heb een aanmeldformulier, welke na ingevuld te zijn door de gebruiker, ook door hem/haar gecontroleerd moet worden of de door het ingevulde gegevens juist zijn. De gegevens worden weergegeven onder het form.
Vervolgens wil ik ze met een submitknop laten doorgaan. Er komen dus eigenlijk 2 submitknoppen, elk met een andere naam.
Ik wou dat als volgt aanroepen, maar dat werkt niet:
Code (php)
De eerste submitknop werkt wel, maar de tweede niet. Dit ligt niet aan de code die er tussen staat, maar aan het feit dat het een tweede submitknop is.
Heeft iemand hier een oplossing voor?
Ik wil het invoeren en de check graag op de zelfde pagina houden, aangezien als het niet klopt de wijziging snel gedaan kan worden.
Gewijzigd op 01/01/1970 01:00:00 door Mark moes
Code (php)
Gewijzigd op 01/01/1970 01:00:00 door TJVB tvb
Code (php)
En dan werkt het niet meer.
Na elkaar wil wel, maar als ik nu de 2e submit doe, krijg ik een leeg form terug. Ik wil daar een echo terug hebben, die dus niet komt.
Het werkt wel. Als je een hidden input-field maakt met de naam aanmelden :)
Ik zou ze in een session zetten, en na het verwerken van het 2e formulier de session unsetten.
Zie het zo:
1 Form invullen (aanmeldform)
1.1 Form Submitten (knop Aanmelden)
2 Input van gebruiker door gebruiker laten checken
2.1 Input goedkeuren en verzenden (knop Verder)
3.x Gegevens form verwerken.
Zo is de opzet. Waar moet ik dat hidden input-field verwerken dan? In het eerste form?
Dit is de broncode van het form en de 2e submitknop.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<h2>Aanmelden</h2>
<form method="post" action="/website/Classes/test.php">
<label for="naam" class="floated">Gebruikersnaam:</label>
<input type="text" id="naam" name="naam" maxlength="40" value="blaat" /><br />
<label for="email" class="floated">Email:</label>
<input type="text" id="email" name="email" maxlength="255" value="[email protected]" /><br />
<label for="postcode" class="floated">Postcode:</label>
<input type="text" id="postcode" name="postcode" maxlength="6" value="1234AB" /><br />
<label for="wachtwoord" class="floated">Wachtwoord:</label>
<input type="password" id="wachtwoord" name="wachtwoord" maxlength="40" value="schaap" /><br />
<label for="retypewachtwoord" class="floated">Herhaal wachtwoord:</label>
<input type="password" id="retypewachtwoord" name="retypewachtwoord" maxlength="40" value="schaap" /><br />
<fieldset>
<legend>Geslacht:</legend>
<input type="radio" id="geslacht1" name="geslacht" value="1" checked="checked" /><label for="geslacht1">Man</label><br />
<input type="radio" id="geslacht2" name="geslacht" value="2" /><label for="geslacht2">Vrouw</label><br />
</fieldset><br />
<input type="checkbox" id="voorwaarden" name="voorwaarden" value="1" checked="checked" /><label for="voorwaarden"><b>Ja</b> ik ga akkoord met de voorwaarden.</label><br />
<label for="nietverplicht" class="floated">Niet verplicht veld:</label>
<input type="text" id="nietverplicht" name="nietverplicht" maxlength="30" value="" /><br />
<input type="submit" id="aanmelden" name="aanmelden" value="Aanmelden" />
<input type="reset" id="wis" name="wis" value="Wis velden" />
</form>
Dit is het resultaat van de door u ingevulde gegevens.<br />Naam: blaat<br />Email: [email protected]<br />Postcode: 1234AB<br />Wachtwoord: schaap<br />Geslacht: 1<br /><h2>Check</h2>
<form method="post" action="/website/Classes/test.php">
<input type="submit" id="next" name="next" value="Next" />
</form>
<form method="post" action="/website/Classes/test.php">
<label for="naam" class="floated">Gebruikersnaam:</label>
<input type="text" id="naam" name="naam" maxlength="40" value="blaat" /><br />
<label for="email" class="floated">Email:</label>
<input type="text" id="email" name="email" maxlength="255" value="[email protected]" /><br />
<label for="postcode" class="floated">Postcode:</label>
<input type="text" id="postcode" name="postcode" maxlength="6" value="1234AB" /><br />
<label for="wachtwoord" class="floated">Wachtwoord:</label>
<input type="password" id="wachtwoord" name="wachtwoord" maxlength="40" value="schaap" /><br />
<label for="retypewachtwoord" class="floated">Herhaal wachtwoord:</label>
<input type="password" id="retypewachtwoord" name="retypewachtwoord" maxlength="40" value="schaap" /><br />
<fieldset>
<legend>Geslacht:</legend>
<input type="radio" id="geslacht1" name="geslacht" value="1" checked="checked" /><label for="geslacht1">Man</label><br />
<input type="radio" id="geslacht2" name="geslacht" value="2" /><label for="geslacht2">Vrouw</label><br />
</fieldset><br />
<input type="checkbox" id="voorwaarden" name="voorwaarden" value="1" checked="checked" /><label for="voorwaarden"><b>Ja</b> ik ga akkoord met de voorwaarden.</label><br />
<label for="nietverplicht" class="floated">Niet verplicht veld:</label>
<input type="text" id="nietverplicht" name="nietverplicht" maxlength="30" value="" /><br />
<input type="submit" id="aanmelden" name="aanmelden" value="Aanmelden" />
<input type="reset" id="wis" name="wis" value="Wis velden" />
</form>
Dit is het resultaat van de door u ingevulde gegevens.<br />Naam: blaat<br />Email: [email protected]<br />Postcode: 1234AB<br />Wachtwoord: schaap<br />Geslacht: 1<br /><h2>Check</h2>
<form method="post" action="/website/Classes/test.php">
<input type="submit" id="next" name="next" value="Next" />
</form>
Vervolgens tik ik de knop Next als de gegevens juist zijn, en worden de gegevens verwerkt.
EDIT
Zie nu pas dat er al 2 reacties zijn voor die van mij. Sorry.
Kun je me een eindje op weg helpen met wat je zei over sessions?
ik had nog niet zo ver gedacht, aangezien ik dit form met een class creeer.
Gewijzigd op 01/01/1970 01:00:00 door mark moes
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<form method="post" action="/website/Classes/test.php">
<input type="hidden" id="aanmelden" name="aanmelden" value="Aanmelden" />
<input type="submit" id="next" name="next" value="Next" />
</form>
Nu zit er een hidden field in. Maar t wordt er nog niet veel anders van.
@Jurgen, kun je me een zetje in de rug geven van wat jij bedoelt?
Edit
Sorry voor de bump... was niet de bedoeling. Ging weer lekker fris aan de slag zo na het eten, maar was vergeten dat ik net gepost had...
Gewijzigd op 01/01/1970 01:00:00 door mark moes
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
function registerUser()
{
try
{
$oForm = new Formulier('Aanmelden');
$oForm->add( new Text('Gebruikersnaam:', 'naam', 40), 'isAlnum' );
$oForm->add( new Text('Email:', 'email', 255), 'isEmail' );
$oForm->add( new Text('Postcode:', 'postcode', 6), 'isPostcode');
$oForm->add( new Password('Wachtwoord:', 'wachtwoord', 40), array('minLengte', 5));
$oForm->add( new Password('Herhaal wachtwoord:', 'retypewachtwoord', 40), array('minLengte', 5));
$oForm->add( new Radio('Geslacht:', 'geslacht', array('Man', 'Vrouw') ), 'verplicht' );
$oForm->add( new Checkbox('<b>Ja</b> ik ga akkoord met de voorwaarden.', 'voorwaarden', '1'), 'verplicht' );
$oForm->add( new Submit('aanmelden', 'Aanmelden') );
$oForm->add( new Reset('wis', 'Wis velden') );
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['aanmelden']))
{
if( $oForm->controleerVelden() )
{
if($_POST['wachtwoord'] !== $_POST['retypewachtwoord'])
{
$html = 'De wachtwoorden komen niet overeen.';
return $html;
}
else
{
$sUsername = $_POST['naam'];
$sPassword = md5($_POST['wachtwoord']);
$sPass_noMD5 = $_POST['wachtwoord'];
$sEmail = $_POST['email'];
$sPostcode = $_POST['postcode'];
$sGeslacht = $_POST['geslacht'];
$che = new clsLogin;
$check = $che->checkRegister($sUsername, $sEmail, $sPostcode, $sPassword, $sPass_noMD5, $sGeslacht);
unset($_SERVER['REQUEST_METHOD']);
unset($_POST['aanmelden']);
return $check;
}
}
}
}
return $oForm;
}
catch( Exception $e )
{
echo '<pre>'.$e->getMessage().'</pre>';
}
}
//user check user input
function checkRegister($sUsername, $sEmail, $sPostcode, $sPassword, $sPass_noMD5, $sGeslacht)
{
$html = 'Dit is het resultaat van de door u ingevulde gegevens.<br />';
$html.= 'Naam: '.$sUsername.'<br />';
$html.= 'Email: '.$sEmail.'<br />';
$html.= 'Postcode: '.$sPostcode.'<br />';
$html.= 'Wachtwoord: '.$sPass_noMD5.'<br />';
$html.= 'Geslacht: '.$sGeslacht.'<br />';
echo $html;
$oForm = new Formulier('Check');
$oForm->add( new Hidden('doorgaan', 'Doorgaan') );
$oForm->add( new Submit('doorgaan', 'Doorgaan') );
echo $oForm;
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['Doorgaan']))
{
$fgetRegister = new Login();
echo $fgetRegister->getRegister($sUsername, $sEmail, $sPostcode, $sPassword, $sPass_noMD5, $sGeslacht);
}
}
}
function getRegister($sUsername, $sEmail, $sPostcode, $sPassword, $sPass_noMD5, $sGeslacht)
{
$this->dConnector->MySQLquery("INSERT INTO users (id, rank, username, password, email, activation) VALUES ('', '0', '$sUsername', '$sPassword', '$sEmail', '$sPostcode', '$sGeslacht', '$sActcode')"); //Insertquery
if($connector->query)
{
//mail activatiecode, gebruikersnaam en wachtwoord
$sMsgSub = 'Activatie'.$this->sRoot.'!';
$sMsg = 'Gefeliciteerd!\n\n';
$sMsg.= 'Uw activatie op '.$this->sRoot.' kan succesvol worden afgerond!\n\n';
$sMsg.= 'U bent geregistreerd met de volgende gegevens:\n';
$sMsg.= 'Gebruikersnaam: '.$sUsername.'.';
$sMsg.= 'Wachtwoord: '.$sPass_noMD5.'.\n';
$sMsg.= 'Bewaar deze gegevens goed! Ze zijn uniek.\n\n';
$sMsg.= 'Het enige wat nog moet gebeuren is het activeren van uw account.';
$sMsg.= 'Dit kan door te klikken op de onderstaande link, waarna u meteen gebruik kunt maken van '.$this->sRoot.'!\n\n';
$sMsg.= 'http://www.'.$this->sRoot.'?activation='.$sActcode.'&&user='.$sUsername.'\n\n';
$sMsg.= 'Veel succes, en tot WWW!\n\n';
$sMsg.= 'Met vriendelijke groet,\n';
$sMsg.= 'de webmaster van '.$this->sRoot.'.';
$mail = new mailer();
$mail->addReceiver($sEmail);
$mail->setSender();
$mail->setSubject($sMsgSub);
$mail->setMessage($sMsg);
}
else
{
$html = 'Het is helaas niet gelukt om de gegevens naar de database te schrijven.\n';
$html.= 'De registratie is helaas mislukt.\n';
$html.= 'Probeer het a.u.b. later nog eens!';
echo $html;
}
}
?>
function registerUser()
{
try
{
$oForm = new Formulier('Aanmelden');
$oForm->add( new Text('Gebruikersnaam:', 'naam', 40), 'isAlnum' );
$oForm->add( new Text('Email:', 'email', 255), 'isEmail' );
$oForm->add( new Text('Postcode:', 'postcode', 6), 'isPostcode');
$oForm->add( new Password('Wachtwoord:', 'wachtwoord', 40), array('minLengte', 5));
$oForm->add( new Password('Herhaal wachtwoord:', 'retypewachtwoord', 40), array('minLengte', 5));
$oForm->add( new Radio('Geslacht:', 'geslacht', array('Man', 'Vrouw') ), 'verplicht' );
$oForm->add( new Checkbox('<b>Ja</b> ik ga akkoord met de voorwaarden.', 'voorwaarden', '1'), 'verplicht' );
$oForm->add( new Submit('aanmelden', 'Aanmelden') );
$oForm->add( new Reset('wis', 'Wis velden') );
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['aanmelden']))
{
if( $oForm->controleerVelden() )
{
if($_POST['wachtwoord'] !== $_POST['retypewachtwoord'])
{
$html = 'De wachtwoorden komen niet overeen.';
return $html;
}
else
{
$sUsername = $_POST['naam'];
$sPassword = md5($_POST['wachtwoord']);
$sPass_noMD5 = $_POST['wachtwoord'];
$sEmail = $_POST['email'];
$sPostcode = $_POST['postcode'];
$sGeslacht = $_POST['geslacht'];
$che = new clsLogin;
$check = $che->checkRegister($sUsername, $sEmail, $sPostcode, $sPassword, $sPass_noMD5, $sGeslacht);
unset($_SERVER['REQUEST_METHOD']);
unset($_POST['aanmelden']);
return $check;
}
}
}
}
return $oForm;
}
catch( Exception $e )
{
echo '<pre>'.$e->getMessage().'</pre>';
}
}
//user check user input
function checkRegister($sUsername, $sEmail, $sPostcode, $sPassword, $sPass_noMD5, $sGeslacht)
{
$html = 'Dit is het resultaat van de door u ingevulde gegevens.<br />';
$html.= 'Naam: '.$sUsername.'<br />';
$html.= 'Email: '.$sEmail.'<br />';
$html.= 'Postcode: '.$sPostcode.'<br />';
$html.= 'Wachtwoord: '.$sPass_noMD5.'<br />';
$html.= 'Geslacht: '.$sGeslacht.'<br />';
echo $html;
$oForm = new Formulier('Check');
$oForm->add( new Hidden('doorgaan', 'Doorgaan') );
$oForm->add( new Submit('doorgaan', 'Doorgaan') );
echo $oForm;
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['Doorgaan']))
{
$fgetRegister = new Login();
echo $fgetRegister->getRegister($sUsername, $sEmail, $sPostcode, $sPassword, $sPass_noMD5, $sGeslacht);
}
}
}
function getRegister($sUsername, $sEmail, $sPostcode, $sPassword, $sPass_noMD5, $sGeslacht)
{
$this->dConnector->MySQLquery("INSERT INTO users (id, rank, username, password, email, activation) VALUES ('', '0', '$sUsername', '$sPassword', '$sEmail', '$sPostcode', '$sGeslacht', '$sActcode')"); //Insertquery
if($connector->query)
{
//mail activatiecode, gebruikersnaam en wachtwoord
$sMsgSub = 'Activatie'.$this->sRoot.'!';
$sMsg = 'Gefeliciteerd!\n\n';
$sMsg.= 'Uw activatie op '.$this->sRoot.' kan succesvol worden afgerond!\n\n';
$sMsg.= 'U bent geregistreerd met de volgende gegevens:\n';
$sMsg.= 'Gebruikersnaam: '.$sUsername.'.';
$sMsg.= 'Wachtwoord: '.$sPass_noMD5.'.\n';
$sMsg.= 'Bewaar deze gegevens goed! Ze zijn uniek.\n\n';
$sMsg.= 'Het enige wat nog moet gebeuren is het activeren van uw account.';
$sMsg.= 'Dit kan door te klikken op de onderstaande link, waarna u meteen gebruik kunt maken van '.$this->sRoot.'!\n\n';
$sMsg.= 'http://www.'.$this->sRoot.'?activation='.$sActcode.'&&user='.$sUsername.'\n\n';
$sMsg.= 'Veel succes, en tot WWW!\n\n';
$sMsg.= 'Met vriendelijke groet,\n';
$sMsg.= 'de webmaster van '.$this->sRoot.'.';
$mail = new mailer();
$mail->addReceiver($sEmail);
$mail->setSender();
$mail->setSubject($sMsgSub);
$mail->setMessage($sMsg);
}
else
{
$html = 'Het is helaas niet gelukt om de gegevens naar de database te schrijven.\n';
$html.= 'De registratie is helaas mislukt.\n';
$html.= 'Probeer het a.u.b. later nog eens!';
echo $html;
}
}
?>
Ik ben, zoals je ziet ook wat aan het klooien geslagen met return enzo: kan ik 3 verschillende returns tegelijk doen in 1 functie, en ze ook nog laten zien? Volgens mij hapert er hier dan wat, maar t kan ook aan de rest liggen.
(graag hoor ik ook jullie commentaar over dit stukje script, ik maak het om te leren, niet omdat deze zo goed is...)
Je kan maar 1 return doen. Als je meerdere waarden wil returnen zul je deze in een array moeten zetten.
Of met .= in een variabele zetten zoals je bij de html variabele doet onderaan je code.
De waarden zijn verschillende waarden, en worden op een verschillend moment gereturned. Werkt dat ook in een array?
Dennis Mertens schreef op 25.03.2009 11:05:
Of met .= in een variabele zetten zoals je bij de html variabele doet onderaan je code.
Dan zul je hem weer moeten exploden wat niet praktisch is.
Je zou in het html-formulier 2 knoppen kunnen aanmaken (niet submit maar echt button). Geef deze beide knoppen een verschillende ID of class. Dan kan je in een javascriptje laten kijken welke knop geklikt is (onclick) en je zet in dat javascriptje een variabele op "aan" (of knop 1 of whatever). Afhankelijk van de waarde van die variabele kun je in php laten afhandelen wat er moet gebeuren.