Guest User

Untitled

a guest
Nov 1st, 2017
1,034
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.23 KB | None | 0 0
  1. <?php
  2. // author oran - email: oranm23@gmail.com
  3. class Settings
  4. {
  5.     protected $dbh;
  6.     function __construct()
  7.     {
  8. $dsn = 'mysql:dbname=loginsys;host=localhost';
  9. $user = 'root';
  10. $password = '';
  11.  
  12. try {
  13.     $this->dbh = new PDO($dsn, $user, $password);
  14.    
  15. } catch (PDOException $e) {
  16.     echo 'Connection failed: ' . $e->getMessage();
  17. }
  18. }
  19. }
  20. class Registration extends Settings
  21. {
  22.     protected $Username;
  23.     protected $Password;
  24.     protected $Email;
  25.    
  26.    
  27.     /**
  28.      * @param $username
  29.      * @return insert to private var
  30.      */
  31.     function SetUsername($username)
  32.     {
  33.         return $this->Username = mysql_real_escape_string($username);
  34.     }
  35.     /**
  36.      * @return username
  37.      */
  38.     function GetUsername()
  39.     {
  40.         return $this->Username;
  41.     }
  42.     /**
  43.      * @param $password
  44.      * @return insert to private password var
  45.      */
  46.     function SetPassword($password)
  47.     {
  48.         return $this->Password = sha1(mysql_real_escape_string($password));
  49.     }
  50.     /**
  51.      * @param $Email
  52.      * @return insert to private var
  53.      */
  54.     function SetEmail($email)
  55.     {
  56.         return $this->Email = mysql_real_escape_string($email);
  57.     }
  58.     /**
  59.      * @return email
  60.      */
  61.     function GetEmail()
  62.     {
  63.         return $this->Email;
  64.     }
  65.     /**
  66.      * @return array of erros if any
  67.      */
  68.     function Validate()
  69.     {
  70.         $errors =  array();
  71.        
  72.         // username must be at list 3 charecters
  73.         if((strlen($this->Username)) < 3 )
  74.         {
  75.             $errors[] = "Username must be at list 3 characters";
  76.         }
  77.         // end username check
  78.         // valid mail
  79.        
  80.         if(false === filter_var($this->Email, FILTER_VALIDATE_EMAIL))
  81.         {
  82.             $errors[] = "Email not valid";
  83.         }
  84.        
  85.         if((strlen($this->Password)) < 5 )
  86.         {
  87.             $errors[] = "Password must be at list 5 characters";
  88.         }
  89.         //
  90.         return $errors;
  91.        
  92.     }
  93.     /**
  94.      * @return return array of errors if false
  95.      * return true if o.k
  96.      */
  97.     function InsertUserToSql()
  98.     {
  99.         $error = $this->Validate();
  100.         if(count($error) > 0 )
  101.         {
  102.                 return $error;    
  103.         }
  104.         else
  105.         {
  106.  
  107.         $stmt = $this->dbh->prepare("INSERT INTO users (username, password, email, regdate) VALUES (:username,    
  108.        :password, :email, :regdate)");
  109.        
  110.         $stmt->bindParam(':username', $this->Username);
  111.         $stmt->bindParam(':password', $this->Password);
  112.         $stmt->bindParam(':email', $this->Email);
  113.         $stmt->bindParam(':regdate', time());
  114.         $stmt->execute();
  115.         $arr = array();
  116.         $arr = $stmt->errorInfo();
  117.         return $arr;
  118.        
  119.         }
  120.        
  121.     }    
  122.    
  123.    
  124. }
  125.     class login extends Registration
  126.     {
  127.         /**
  128.          * @return if falis return false if ok return session
  129.          */
  130.         function CheckLogin()
  131.         {
  132.            
  133.             $stmt = $this->dbh->prepare("SELECT username, password FROM users
  134.            WHERE username = :username AND password =  :password
  135.            ");
  136.             $stmt->bindParam(':username', $this->Username);
  137.             $stmt->bindParam(':password', $this->Password);
  138.             $stmt->execute();
  139.            
  140.             if($stmt->rowCount() > 0 )
  141.             {    
  142.                
  143.            
  144.             $_SESSION['username'] = $this->Username;
  145.                
  146.             }
  147.             else
  148.             {
  149.                 return false;
  150.             }
  151.            
  152.         }
  153.     }
  154.     class ChangeSetting extends Registration
  155.     {
  156.        
  157.         /**
  158.          * @return return true on succsess
  159.          */
  160.         function ChangeMail()
  161.         {
  162.            
  163.             $EmailPattren = '/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])' .
  164.             '(([a-z0-9-])*([a-z0-9]))+' . '(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+$/i';
  165.        
  166.         $IsEmailValid = preg_match($EmailPattren, $this->Email);
  167.         if($IsEmailValid > 0)
  168.         {
  169.             $stmt = $this->dbh->prepare("UPDATE users
  170.            SET email = :email WHERE username = :username
  171.            ");
  172.             $stmt->bindParam(':email', $this->Email);
  173.             $stmt->bindParam(':username', $_SESSION['username']);
  174.             $stmt->execute();
  175.             return true;
  176.         }
  177.         else
  178.         {
  179.             return false;
  180.         }
  181.         }
  182.             protected  $oldpass;
  183.            
  184.         function SetOldPass($oldpass)
  185.         {
  186.             return $this->oldpass = sha1($oldpass);
  187.         }
  188.        
  189.         function ChangePass()
  190.         {
  191.            
  192.             $stmt = $this->dbh->prepare("UPDATE users
  193.            SET password = :password  WHERE username = :username AND password = :oldpass
  194.            ");
  195.             $stmt->bindParam(':password', $this->Password);
  196.             $stmt->bindParam(':oldpass', $this->oldpass);
  197.             $stmt->bindParam(':username', $_SESSION['username']);
  198.             $stmt->execute();
  199.            
  200.            
  201.         }
  202.         function SendMailForNewPass()
  203.         {
  204.            
  205.             $voucher = rand() . rand() . rand();
  206.             $stmt = $this->dbh->prepare("UPDATE users
  207.            SET CpassReqDate = :CpassReqDate, voucher = :voucher WHERE email = :email
  208.            ");
  209.             $stmt->bindParam(':CpassReqDate', time());
  210.             $stmt->bindParam(':email', $this->Email);
  211.             $stmt->bindParam(':voucher', $voucher);
  212.        
  213.             $stmt->execute();
  214.            
  215.            
  216.             mail($this->Email,"new pass ","
  217.            this is link for change pass : <a href='localhost/loginsys/sample.php/?newpassv=$voucher>link</a>'
  218.            ");
  219.         }
  220.         function SetNewPass()
  221.         {
  222.             if(!empty($_GET['newpassv']))
  223.             {
  224.                 $voucher = $_GET['newpassv'];
  225.                 $d = time() - 1800;
  226.                
  227.             $stmt = $this->dbh->prepare("SELECT CpassReqDate, email FROM users WHERE
  228.            voucher = :voucher
  229.            ");
  230.            
  231.             $stmt->bindParam(':voucher', $voucher);
  232.             $stmt->execute();
  233.             $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
  234.            
  235.            
  236.            
  237.                 $TimeLimit = $result[0]['CpassReqDate'] - time();
  238.                 if($TimeLimit > 1800)
  239.                 {
  240.                     echo "Voucher Experid";
  241.                 }
  242.                 else
  243.                 {
  244.                    
  245.                     $stmt = $this->dbh->prepare("UPDATE users
  246.            SET password = :password WHERE email = :email
  247.            ");
  248.                     $email = $result[0]['email'];
  249.                     $pass = rand() . rand();
  250.                     ;
  251.             $stmt->bindParam(':password', sha1($pass));
  252.             $stmt->bindParam(':email', $email);
  253.             $stmt->execute();
  254.             mail($email,"your new pass", "the new pass is<b>:  $pass</b>");
  255.            
  256.                 }
  257.             }
  258.        
  259.            
  260.         }
  261.        
  262.        function Logout()
  263.        {
  264.           session_start();
  265.           unset($_SESSION['username']);
  266.       }
  267.        
  268.     }
  269.    
  270.  
  271.    
  272.    
  273. ?>
Add Comment
Please, Sign In to add comment