I have a page to register users and followed phpacademy's tutorials on 'PHP OOP Login/Register System'. It was working fine until I checked again today and errors everytime. I'm not sure what has changed but I can now see that my VALUES are being entered as '?'.
if(Input::exists()) {
if(Token::check(Input::get('token'))) {
$validate = new Validate();
$validation = $validate->check($_POST, array(
'Username' => array(
'required' => true,
'min' => 2,
'max' => 40,
'unique' => 'user'
),
'password' => array(
'required' => true,
'min' => 6
),
'password_again' => array(
'required' => true,
'matches' => 'password'
),
'UserFName' => array(
'required' => true,
'min' => 2,
'max' => 50
),
'UserLName' => array(
'required' => true,
'min' => 2,
'max' => 50
),
'UserEmail' => array(
'required' => true
),
));
if($validation->passed()) {
$user = new User();
$salt = Hash::salt(32);
try {
$user->create(array(
'UserFName' => Input::get('UserFName'),
'UserLName' => Input::get('UserLName'),
'UserEmail' => Input::get('UserEmail'),
'DepartmentId' => 1,
'Username' => Input::get('Username'),
'Password' => Hash::make(Input::get('password'), $salt),
'salt' => $salt,
'group' => 1
));
Session::flash('home', 'You have been registered and can now log in!');
Redirect::to('index.php');
} catch(Exception $e) {
die($e->getMessage());
}
} else {
foreach($validation->errors() as $error) {
echo $error, '<br>';
}
}
}
}
<form action="" method="post">
<fieldset>
<legend>Enter Details Below</legend>
<p>
<label class="field" for="UserFName">First Name: </label>
<input type="text" name="UserFName" id="UserFName" value="<?php echo escape(Input::get('UserFName')); ?>" autocomplete="off">
</p>
<p>
<label class="field" for="UserLName">Last Name: </label>
<input type="text" name="UserLName" id="UserLName" value="<?php echo escape(Input::get('UserLName')); ?>" autocomplete="off">
</p>
<p>
<label class="field" for="UserEmail">Email: </label>
<input type="text" name="UserEmail" id="UserEmail" value="<?php echo escape(Input::get('UserEmail')); ?>" autocomplete="off">
</p>
<p>
<label class="field" for="Username">Username: </label>
<input type="text" name="Username" id="Username" value="<?php echo escape(Input::get('Username')); ?>" autocomplete="off">
</p>
<p>
<label class="field" for="password">Password: </label>
<input type="password" name="password" id="password">
</p>
<p>
<label class="field" for="password_again">Re-enter Password: </label>
<input type="password" name="password_again" id="password_again">
</p>
<input type="hidden" name="token" value="<?php echo Token::generate(); ?>">
<input type="submit" value="Register">
So, no matter what I enter I receive the error 'There was a problem creating your account.'
When doing a print_r($validate);
or print_r($user)
the result shows '?' as the VALUES in the INSERT query.
Validate Object ( [_passed:Validate:private] => 1 [_errors:Validate:private] => Array ( ) [_db:Validate:private] => DB Object ( [_pdo:DB:private] => PDO Object ( ) [_query:DB:private] => PDOStatement Object ( [queryString] => INSERT INTO user (`UserFName`, `UserLName`, `UserEmail`, `DepartmentId`, `Username`, `Password`, `salt`, `group`) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ) [_error:DB:private] => 1 [_results:DB:private] => Array ( ) [_count:DB:private] => 0 ) )
I am completely stumped!