Hoi,
Ik wil in mijn script op 2 verschillende momenten een submit kunnen doen. Dit werkt alleen niet.
Het moet zo ongeveer gaan:
Aanmelden -> submit
Check door gebruiker -> submit
Verwerk gegevens -> message...
<?php
function registerUser()
{
try
{
$oForm = new Formulier('Aanmelden');
$oForm->add( new Text('Gebruikersnaam:', 'naam', 40), 'isText' );
$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') );
$html = $oForm;
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if( $oForm->controleerVelden() )
{
if($_POST['wachtwoord'] !== $_POST['retypewachtwoord'])
{
$html.= 'De wachtwoorden komen niet overeen.';
}
else
{
//Session maken van de posts
$_SESSION['input']['username'] = $_POST['naam'];
$_SESSION['input']['password'] = $_POST['wachtwoord'];
$_SESSION['input']['pass_md5'] = md5($_POST['wachtwoord']);
$_SESSION['input']['email'] = $_POST['email'];
$_SESSION['input']['postcode'] = $_POST['postcode'];
$_SESSION['input']['geslacht'] = $_POST['geslacht'];
$this->sUsername = $_SESSION['input']['username'];
$this->sPassword = $_SESSION['input']['password'];
$this->sPass_MD5 = $_SESSION['input']['pass_md5'];
$this->sEmail = $_SESSION['input']['email'];
$this->sPostcode = $_SESSION['input']['postcode'];
$this->sGeslacht = $_SESSION['input']['geslacht'];
//unset($_SESSION['input']);
}
if(isset($_POST['aanmelden']))
{
$html = clsLogin::checkRegister();
}
else
{
if(isset($_POST['Doorgaan']))
{
$html = clsLogin::verwerkRegister();
}
}
}
}
return $html;
}
catch( Exception $e )
{
return '<pre>'.$e->getMessage().'</pre>';
}
}
//user check user input
function checkRegister()
{
$html = 'Dit is het resultaat van de door u ingevulde gegevens.<br /><br />';
$html.= 'Naam: '.$this->sUsername.'<br />';
$html.= 'Email: '.$this->sEmail.'<br />';
$html.= 'Postcode: '.$this->sPostcode.'<br />';
$html.= 'Wachtwoord: '.$this->sPassword.'<br />';
$html.= 'Geslacht: '.$this->sGeslacht.'<br />';
$oForm = new Formulier('Check');
$oForm->add( new Submit('doorgaan', 'Doorgaan') );
$html.= $oForm;
return $html;
}
function verwerkRegister()
{
$this->sActcode = clsCode::Randpass(15);
$dConnector = new DbConnect('mark moes');
$dConnector->DbConnector();
$dConnector->MySQLquery("INSERT INTO users (
id,
username,
password,
email,
postcode,
city,
country,
geslacht,
activation,
rank,
activation_date,
times_online,
last_online
) VALUES (
'',
'".mysql_real_escape_string($this->sUsername)."',
'".mysql_real_escape_string($this->sPass_MD5)."',
'".mysql_real_escape_string($this->sEmail)."',
'".mysql_real_escape_string($this->sPostcode)."',
'Haulerwijk',
'NL',
'".mysql_real_escape_string($this->sGeslacht)."',
'".$this->sActcode."',
'00',
NOW(),
'2',
NOW()
)"); //Insertquery
//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: '.$this->sUsername.'.';
$sMsg.= 'Wachtwoord: '.$this->sPassword.'.\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='.$this->sActcode.'&&user='.$this->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($this->sEmail);
$mail->setSender();
$mail->setSubject($sMsgSub);
$mail->setMessage($sMsg);
$html = $sMsg;
return $html;
}
?>
Het registreren gaat goed. Velden worden door script gecontroleerd, anders overnieuw invullen.
Vervolgens wordt het resultaat geechoed, gebruiker moet dit checken, en vervolgens doorgaan. Dit gaat ook goed, alleen als de gebruiker klikt op doorgaan, krijg ik het aanmeld formulier weer, met 2 meldingen dat ik 2 velden niet heb ingevoerd. dat gaat dus niet goed, het form moet verzonden worden, en een msg op het scherm komen.
Ter informatie:
Er staat inderdaad session_start() bovenin mijn script, en error reporting staat ook op schreeuwen.
Weet iemand de oplossing?
<b>edit:</b> vraagteken vergeten, lijkt zo onvriendelijk... ;-)
1.202 views