Jangga
Junior Member
- Aug 8, 2016
- 196
- 11
Please guys, I have tried several thoughts in my head on how to bypass this error but it has been futile. The error I'm having is this:
Fatal error: Uncaught Error: Call to a member function passed() on boolean in C:\xampp\htdocs\test\crib\register.php:42 Stack trace: #0 {main} thrown in C:\xampp\htdocs\test\crib\register.php on line 42
i simply dont know why the passed function has this problem. It seems okay. I really need yoour help guys..... please
the full code are shown below:
register.php
validate.php
Fatal error: Uncaught Error: Call to a member function passed() on boolean in C:\xampp\htdocs\test\crib\register.php:42 Stack trace: #0 {main} thrown in C:\xampp\htdocs\test\crib\register.php on line 42
i simply dont know why the passed function has this problem. It seems okay. I really need yoour help guys..... please
the full code are shown below:
register.php
Code:
<?php
require_once '../core/init.php';
include 'header.php';
if(Input::exists('post')){
if(Token::check(Input::get('token'))){
$validate = new Validate();
$validation = $validate->check($_POST, array(
'fname' => array(
'required' => true,
'min' => 5,
'max' => 20
),
'mname' => array(
'required' => false,
'min' => 5,
'max' => 20
),
'lname' => array(
'required' => true,
'min' => 5,
'max' => 20
),
'email' => array(
'required' => true,
'min' => 10,
'max' => 20
),
'password' => array(
'required' => true,
'min' => 5
)
));
if($validation->passed()) {
$user = new User();
$salt = Hash::salt(32);
try {
$user -> create(array(
'firstname' => Input::get('fname'),
'middlename' => Input::get('mname'),
'lastname' => Input::get('lname'),
'email' => Input::get('email'),
'gender' => Input::get('sex'),
'phone' => Input::get('phone'),
'password' => Hash::make(Input::get('password'), $salt),
'salt' => $salt
) );
} catch (Exception $e) {
die($e->getMessage());
}
} else {
foreach ($validation->errors() as $error) {
echo $error, '<br>';
}
}
}
}
?>
<div class="container-fluid">
<nav class = "navbar navbar-default">
<div class = "navbar-header">
<button type = "button" class = "navbar-toggle" data-toggle = "collapse" data-target = "#example-navbar-collapse">
<span class = "sr-only">Toggle navigation</span>
<span class = "icon-bar"></span>
<span class = "icon-bar"></span>
<span class = "icon-bar"></span>
</button>
<!-- <a class = "navbar-brand navbar-left" href = "#">MySchooleyes</a>-->
</div>
<div class = "collapse navbar-collapse" id = "example-navbar-collapse">
<ul class = "nav navbar-nav">
<li class = "active"><a href = "#">HOME</a></li>
<li><a href = "about.php">ABOUT</a></li>
<li><a href = "#">BLOG</a></li>
<li><a href = "#">FAQs</a></li>
<li><a href = "contact.php">CONTACT</a></li>
<li class = "dropdown visible-xs">
<a href = "#" class = "dropdown-toggle" data-toggle = "dropdown">
Access
<b class = "caret"></b>
</a>
<ul class = "dropdown-menu">
<li class = "divider"></li>
<li><a href = "#">Login</a></li>
<li><a href = "register.php">Sign up</a></li>
</ul>
</li>
</ul>
</div>
</nav>
</div>
<div class="container">
<div class="col-sm-10">
<form class="form-horizontal" action="" method="post">
<div class="login-wrap">
<div class="form-group">
<label for="fname" class="control-label col-sm-2">Firstname</label>
<div class="input-icon right col-sm-10"><input type="text" placeholder="Firstname" name="fname" value="<?php echo Input::get('fname');?>" class="form-control"></div>
</div>
<div class="form-group">
<label for="mname" class="control-label col-sm-2">Middle name</label>
<div class="input-icon right col-sm-10"><input type="text" placeholder="Middle name" name="mname" value="<?php echo Input::get('mname');?>" class="form-control" ></div>
</div>
<div class="form-group">
<label for="lname" class="control-label col-sm-2">Last name</label>
<div class="input-icon right col-sm-10"><input type="text" placeholder="Last name" name="lname" value="<?php echo Input::get('lname');?>" class="form-control"></div>
</div>
<div class="form-group">
<label for="password" class="control-label col-sm-2">Password</label>
<div class="input-icon right col-sm-10"><input type="password" placeholder="Password" name="password" class="form-control"></div>
</div>
<div class="form-group">
<label for="email" class="control-label col-sm-2">Email</label>
<div class="input-icon right col-sm-10"><input type="text" placeholder="Email" name="email" value="<?php echo Input::get('email');?>" class="form-control"></div>
</div>
<div class="form-group">
<label for="sex" class="control-label col-sm-2">Gender</label>
<div class="input-icon right col-sm-10">
<label for="firstname" class="radio-inline">
<input type="radio" name="sex" value="m" > Male</label>
<label for="firstname" class="radio-inline">
<input type="radio" name="sex" value="f" > Female</label></div>
</div>
<div class="form-group">
<label for="phone" class="control-label col-sm-2">Phone</label>
<div class="input-icon right col-sm-10"><input type="text" placeholder="Phone" name="phone" value="<?php echo Input::get('phone');?>" class="form-control" ></div>
</div>
<div class="form-group checkbox">
<div class="input-icon col-xs-offset-3"><input type="checkbox" value="remember"> Keep me logged in</div>
</div>
<input type="hidden" name="token" value="<?php echo Token::generate();?>">
<br><br>
<div class="form-group">
<button type="submit" class="btn btn-warning col-xs-offset-2">Register<i class="fa fa-chevron-circle-right"></i></button>
</div>
</div>
</form>
</div>
</div>
<?php include 'footer.php';
[/B]
validate.php
Code:
<?php
class Validate {
//defining variables
private $_passed = false,
$_errors = array(),
$_db = null;
//getting db instance since we will be using it
public function __construct() {
$this -> _db = DB::getInstance();
}
//check the rules defined for a form
public function check($source, $items = array()) {
foreach ($items as $item => $rules) {
foreach ($rules as $rule => $rule_value) {
$value = trim($source[$item]);
//$item should be escaped with the escape function
$item = $item;
if($rule === 'required' && empty($value)) {
$this->addError("{$item} is required");
} else if(!empty($value)) {
switch ($rule) {
case 'min' :
if(strlen($value) < $rule_value) {
$this->addError("{$item} must be a minimum of {$rule_value} characters.");
}
break;
case 'max' :
if(strlen($value) > $rule_value) {
$this->addError("{$item} must be a maximum of {$rule_value} characters.");
}
break;
case 'matches' :
if($value != $source[$rule_value]) {
$this->addError("{$rule_value} must match {$item}");
}
break;
case 'unique' :
$check = $this->_db->get($rule_value, array($item, '=', $value));
if($check->count()) {
$this->addError("{$item} already exists.");
}
break;
}
}
}
}
if(empty($this->_errors)){
return $this->_passed = true;
}
return $this;
}
public function addError($error){
$this->_errors[] = $error;
}
public function errors() {
return $this->_errors;
}
public function passed() {
return $this->_passed;
}
}
[/B]