Guest User

Untitled

a guest
Feb 1st, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.26 KB | None | 0 0
  1. class DB {
  2.  
  3. protected $pdo;
  4. protected $engine = 'mysql';
  5. protected $host = 'localhost';
  6. protected $db_name = 'test';
  7. protected $db_user = 'root';
  8. protected $db_passwd = '';
  9.  
  10. public function connect() {
  11. try {
  12. $this->pdo = new PDO($this->engine.':host='.$this->host.';dbname='.$this->db_name,$this->db_user,$this->db_passwd);
  13. $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  14. return $this->pdo;
  15. } catch(PDOException $e) {
  16. die($e->getMessage());
  17. }
  18. }
  19. }
  20.  
  21. class user {
  22.  
  23. public $link;
  24.  
  25. public function __construct() {
  26. $pdoObj = new DB();
  27. $this->link = $pdoObj->connect();
  28. return $this->link;
  29. }
  30.  
  31. }
  32.  
  33. $obj = new user();
  34. $obj->SelectAll();
  35.  
  36. // and so on..
  37.  
  38. public function register($username, $email, $passwd, $re_passwd) {
  39. # fix email and passwd regex
  40. $reg_error = array();
  41. $regex_username = '/[a-zA-Z0-9-._]{6,20}$/';
  42. $regex_email = '/[a-zA-Z0-9._-]{3,}@[a-zA-Z0-9]{3,}.[a-zA-Z.]{2,}$/';
  43. if (empty($username) || empty($email) || empty($passwd) || empty($re_passwd)) {
  44. $reg_error['fields'] = 'All fields are required';
  45. } else {
  46. if (!preg_match($regex_username, $username)) {
  47. $reg_error['username'] = 'Username must be at least 6 characters';
  48. } if (!preg_match($regex_email, $email)) {
  49. $reg_error['email'] = 'Invalid email';
  50. } if(strlen($passwd) <= 6) {
  51. $reg_error['passwd'] = 'Password must be at least 6 characters long and must contain at least 1 uppercase, 1 lowercase and 1 digit value';
  52. } if ($re_passwd !== $passwd) {
  53. $reg_error['match'] = 'Passwords do not match';
  54. } if($this->usernameExists($username)) {
  55. $reg_error['username_exists'] = 'Username: ' .$username. ' already exists';
  56. } if($this->emailExists($email)) {
  57. $reg_error['email_exists'] = 'Email: ' .$email. ' already exists in our database';
  58. }
  59. }
  60. if (!empty($reg_error)) {
  61. foreach($reg_error as $error => $er) {
  62. echo 'Error: '.$er.'<br />';
  63. }
  64. } else {
  65. try {
  66.  
  67. $query = $this->link->prepare("INSERT INTO users(username, email, password, ip_address, activation_code)
  68. VALUES(:username, :email, :passwd, :ip_addr, :code)");
  69. $passwd = hash('sha512', $passwd);
  70. $ip_addr = $_SERVER['REMOTE_ADDR'];
  71. $code = substr( hash('sha512', md5(rand(999, 9999))) , 15, 40);
  72. $params = array(':username' => $username,
  73. ':email' => $email,
  74. ':passwd' => $passwd,
  75. ':ip_addr' => $ip_addr,
  76. ':code' => $code);
  77. $query->execute($params);
  78. if ($query->rowCount() != 0) {
  79. redirect('index.php?lastid='.$this->lastId());
  80. } else {
  81. return 'There's been a tehnical problem during the registration process, please try again later.';
  82. }
  83. } catch (PDOException $e) {
  84. die($e->getMessage());
  85. }
  86. }
  87. }
  88.  
  89. engine = "mysql"
  90. host = "localhost"
  91. name = "test"
  92. user = "root"
  93. password = ""
  94.  
  95. class DB {
  96. private $pdo;
  97. private $engine;
  98. private $host;
  99. private $db_name;
  100. private $db_user;
  101. private $db_passwd;
  102.  
  103. public function _construct($path) {
  104. if(!is_file($path)) {
  105. throw new InvalidArgumentException("Hey, that's not a file!");
  106. }
  107.  
  108. $credentials = @parse_ini_file($path);
  109.  
  110. if(empty($credentials)) {
  111. throw new InvalidArgumentException("Hey, that's a file, but it's not a valid INI file!");
  112. }
  113.  
  114. $this->engine = $credentials["engine"];
  115. $this->host = $credentials["host"];
  116. $this->db_name = $credentials["name"];
  117. $this->db_user = $credentials["user"];
  118. $this->db_passwd = $credentials["password"];
  119.  
  120. try {
  121. $this->pdo = new PDO($this->engine.':host='.$this->host.';dbname='.$this->db_name,$this->db_user,$this->db_passwd);
  122. $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  123. return $this->pdo;
  124. } catch(PDOException $e) {
  125. throw new Exception("Boo, wrong credentials!");
  126. }
  127. }
  128.  
  129. }
  130.  
  131. $db = new DB("database.ini");
  132.  
  133. $this->engine = $credentials["engine"];
  134. $this->host = $credentials["host"];
  135. $this->db_name = $credentials["name"];
  136. $this->db_user = $credentials["user"];
  137. $this->db_passwd = $credentials["password"];
  138.  
  139. } catch(PDOException $e) {
  140. die($e->getMessage());
  141. }
  142.  
  143. } catch(PDOException $e) {
  144. throw new Exception("Boo, wrong credentials!");
  145. }
  146.  
  147. public function __construct() {
  148. $pdoObj = new DB();
  149. $this->link = $pdoObj->connect();
  150. return $this->link;
  151. }
  152.  
  153. $query = $this->link->prepare("INSERT INTO users(username, email, password, ip_address, activation_code)
  154. VALUES(:username, :email, :passwd, :ip_addr, :code)");
  155.  
  156. class DB {
  157.  
  158. ...
  159.  
  160. public function getPDO() {
  161. return $this->pdo;
  162. }
  163. }
  164.  
  165. public function __construct() {
  166. $database = new DB("database.ini");
  167.  
  168. $this->link = $database->getPDO();
  169. }
  170.  
  171. $database = new DB("database.ini");
  172.  
  173. public function __construct(DB $database) {
  174. $this->link = $database->getPDO();
  175. }
  176.  
  177. $database = new DB("database.ini");
  178. $user = new User($database);
  179.  
  180. $database1 = new DB("database1.ini");
  181. $user1 = new User($database1);
  182.  
  183. $database2 = new DB("database2.ini");
  184. $user2 = new User($database2);
  185.  
  186. class Table {
  187. protected $database;
  188.  
  189. public function __construct(DB $database) {
  190. $this->database = $database->getPDO();
  191. }
  192. }
  193.  
  194. class User extends Table {
  195.  
  196. // only user specific functions here
  197.  
  198. }
  199.  
  200. class Article extends Table {
  201.  
  202. // only article specific functions here
  203.  
  204. }
  205.  
  206. class Comment extends Table {
  207.  
  208. // only comment specific functions here
  209.  
  210. }
  211.  
  212. class User {
  213.  
  214. public function register($username, $email, $passwd, $re_passwd) {
  215. $link = $this->database->getPDO();
  216.  
  217. ...
  218.  
  219. $query = $link->prepare( ... );
  220.  
  221. ...
  222. }
  223.  
  224. }
Add Comment
Please, Sign In to add comment