messing around and fixing throwing of exceptions in DBLayer
This commit is contained in:
parent
f6511b256f
commit
197457c356
3 changed files with 105 additions and 80 deletions
|
@ -5,6 +5,7 @@ class DBLayer{
|
|||
|
||||
function __construct($db)
|
||||
{
|
||||
try{
|
||||
$dsn = "mysql:";
|
||||
$dsn .= "host=". $db['host'].";";
|
||||
$dsn .= "dbname=". $db['name'].";";
|
||||
|
@ -15,18 +16,29 @@ class DBLayer{
|
|||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
|
||||
);
|
||||
$this->PDO = new PDO($dsn,$db['user'],$db['pass'], $opt);
|
||||
}catch (PDOException $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
public function executeWithoutParams($query){
|
||||
try{
|
||||
$statement = $this->PDO->prepare($query);
|
||||
$statement->execute();
|
||||
return $statement;
|
||||
}catch (PDOException $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
public function execute($query,$params){
|
||||
try{
|
||||
$statement = $this->PDO->prepare($query);
|
||||
$statement->execute($params);
|
||||
return $statement;
|
||||
}catch (PDOException $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,19 +1,19 @@
|
|||
<?php
|
||||
class Users{
|
||||
|
||||
public function add_user(){
|
||||
|
||||
helpers :: loadtemplate( 'register', $pageElements );
|
||||
|
||||
}
|
||||
|
||||
public function check_Register(){
|
||||
/**
|
||||
* Function check_register
|
||||
*
|
||||
* @takes $array with username,password and email
|
||||
* @return string Info: Returns a string, if input data is valid then "success" is returned, else an array with errors
|
||||
*/
|
||||
public function check_Register($values){
|
||||
// check values
|
||||
if ( isset( $_POST["Username"] ) and isset( $_POST["Password"] ) and isset( $_POST["Email"] ) ){
|
||||
$user = Users :: checkUser( $_POST["Username"] );
|
||||
$pass = Users :: checkPassword( $_POST["Password"] );
|
||||
if ( isset( $values["Username"] ) and isset( $values["Password"] ) and isset( $values["Email"] ) ){
|
||||
$user = Users :: checkUser( $values["Username"] );
|
||||
$pass = Users :: checkPassword( $values["Password"] );
|
||||
$cpass = Users :: confirmPassword($pass);
|
||||
$email = Users :: checkEmail( $_POST["Email"] );
|
||||
$email = Users :: checkEmail( $values["Email"] );
|
||||
}else{
|
||||
$user = "";
|
||||
$pass = "";
|
||||
|
@ -74,25 +74,22 @@ class Users{
|
|||
if ( isset( $username ) ){
|
||||
if ( strlen( $username ) > 12 ){
|
||||
return "Username must be no more than 12 characters.";
|
||||
}elseif ( strlen( $username ) < 5 ){
|
||||
}else if ( strlen( $username ) < 5 ){
|
||||
return "Username must be 5 or more characters.";
|
||||
}elseif ( !preg_match( '/^[a-z0-9\.]*$/', $username ) ){
|
||||
}else if ( !preg_match( '/^[a-z0-9\.]*$/', $username ) ){
|
||||
return "Username can only contain numbers and letters.";
|
||||
}elseif ( $username == "" ){
|
||||
}else if ( $username == "" ){
|
||||
return "You have to fill in a username";
|
||||
|
||||
/*}elseif ( sql :: db_query( "SELECT COUNT(*) FROM {users} WHERE name = :name", array(
|
||||
':name' => $username
|
||||
) ) -> fetchField() ){
|
||||
/*}elseif ($this->dbs->execute("SELECT * FROM user WHERE Login = :name",array('name' => $username))->rowCount()){
|
||||
return "Username " . $username . " is in use.";*/
|
||||
}else{
|
||||
return "success";
|
||||
}
|
||||
}else{
|
||||
return "success";
|
||||
}
|
||||
return "fail";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function checkPassword
|
||||
*
|
||||
|
@ -114,6 +111,8 @@ class Users{
|
|||
}
|
||||
return "fail";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function confirmPassword
|
||||
*
|
||||
|
@ -133,6 +132,8 @@ class Users{
|
|||
}
|
||||
return "fail";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function checkEmail
|
||||
*
|
||||
|
@ -146,20 +147,23 @@ class Users{
|
|||
return "Email address is not valid.";
|
||||
}else if($email == ""){
|
||||
return "You have to fill in an email address";
|
||||
}
|
||||
/*}elseif ( db_query( "SELECT COUNT(*) FROM {users} WHERE mail = :mail", array(
|
||||
':mail' => $email
|
||||
) ) -> fetchField() ){
|
||||
return "Email is in use.";}*/
|
||||
/*}elseif ( $this->dbs->execute("SELECT * FROM user WHERE Email = :email",array('email' => $email))->rowCount()){
|
||||
return "Email is in use.";*/}
|
||||
else{
|
||||
return "success";
|
||||
}
|
||||
}else{
|
||||
return "success";
|
||||
}
|
||||
return "fail";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Function validEmail
|
||||
*
|
||||
* @takes $email
|
||||
* @return true or false depending on if its a valid email format.
|
||||
*/
|
||||
public function validEmail( $email ){
|
||||
$isValid = true;
|
||||
$atIndex = strrpos( $email, "@" );
|
||||
|
@ -203,6 +207,14 @@ class Users{
|
|||
return $isValid;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Function generateSALT
|
||||
*
|
||||
* @takes $length, which is by default 2
|
||||
* @return a random salt of 2 chars
|
||||
*/
|
||||
public function generateSALT( $length = 2 )
|
||||
{
|
||||
// start with a blank salt
|
||||
|
@ -237,21 +249,25 @@ class Users{
|
|||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Function create
|
||||
*
|
||||
* @takes $array with name,pass and mail
|
||||
* @return ok if it's get correctly added to the shard, else return lib offline and put in libDB, if libDB is also offline return liboffline.
|
||||
*/
|
||||
function createUser($values){
|
||||
|
||||
$libdb = $values['db']['lib'];
|
||||
$sharddb = $values['db']['shard'];
|
||||
|
||||
try {
|
||||
//make connection with and put into shard db
|
||||
$dbs = new DBLayer($sharddb);
|
||||
global $cfg;
|
||||
$dbs = new DBLayer($cfg['db']['shard']);
|
||||
$dbs->execute("INSERT INTO user (Login, Password, Email) VALUES (:name, :pass, :mail)",$values["params"]);
|
||||
return "ok";
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
//oh noooz, the shard is offline! Put in query queue at ams_lib db!
|
||||
try {
|
||||
$dbl = new DBLayer($libdb);
|
||||
$dbl = new DBLayer($cfg['db']['lib']);
|
||||
$dbl->execute("INSERT INTO ams_querycache (type, query) VALUES (:type, :query)",array("type" => "createUser",
|
||||
"query" => json_encode(array($values["params"]["name"],$values["params"]["pass"],$values["params"]["mail"]))));
|
||||
return "shardoffline";
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
<?php
|
||||
|
||||
function add_user(){
|
||||
$result = Users :: check_Register();
|
||||
//print_r($result);
|
||||
|
||||
$params = Array('Username' => $_POST["Username"], 'Password' => $_POST["Password"], 'Email' => $_POST["Email"]);
|
||||
$result = Users::check_Register($params);
|
||||
|
||||
// if all are good then create user
|
||||
if ( $result == "success"){
|
||||
$edit = array(
|
||||
|
@ -14,10 +16,8 @@ function add_user(){
|
|||
'status' => 1,
|
||||
'access' => $_SERVER['REQUEST_TIME']
|
||||
);
|
||||
//header( 'Location: email_sent.php' );
|
||||
$status = write_user( $edit );
|
||||
$pageElements['status'] = $status;
|
||||
//TODO: perhaps send email!
|
||||
$pageElements['no_visible_elements'] = 'TRUE';
|
||||
helpers :: loadtemplate( 'register_feedback', $pageElements);
|
||||
exit;
|
||||
|
@ -36,9 +36,6 @@ function add_user(){
|
|||
|
||||
function write_user($newUser){
|
||||
|
||||
//get the db specifics out of the config file
|
||||
global $cfg;
|
||||
|
||||
//create salt here, because we want it to be the same on the web/server
|
||||
$hashpass = crypt($newUser["pass"], Users::generateSALT());
|
||||
|
||||
|
@ -51,14 +48,14 @@ function write_user($newUser){
|
|||
//print_r($params);
|
||||
//make a $values array for passing all data to the Users::createUser() function.
|
||||
$values["params"] = $params;
|
||||
$values["db"] = $cfg['db'];
|
||||
|
||||
//Create the user on the shard + in case shard is offline put copy of query in query db
|
||||
//returns: ok, shardoffline or liboffline
|
||||
$result = Users :: createUser($values);
|
||||
$result = Users::createUser($values);
|
||||
|
||||
try{
|
||||
//make connection with web db and put it in there
|
||||
global $cfg;
|
||||
$dbw = new DBLayer($cfg['db']['web']);
|
||||
$dbw->execute("INSERT INTO ams_user (Login, Password, Email) VALUES (:name, :pass, :mail)",$params);
|
||||
|
||||
|
|
Loading…
Reference in a new issue