Advertisement
lamorfini

Untitled

Aug 22nd, 2024
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.57 KB | None | 0 0
  1. <?php
  2. /*
  3.  
  4. CREATE TABLE users (
  5.     id INT(11) AUTO_INCREMENT PRIMARY KEY,
  6.     username VARCHAR(50) NOT NULL UNIQUE,
  7.     email VARCHAR(100) NOT NULL UNIQUE,
  8.     password VARCHAR(255) NOT NULL,
  9.     nome_cognome VARCHAR(200) NOT NULL,
  10.     data_nascita DATE,
  11.     sesso ENUM('M', 'F', 'Altro'),
  12.     bio TEXT,
  13.     città VARCHAR(100),
  14.     provincia VARCHAR(100),
  15.     paese_regione VARCHAR(100),
  16.     indirizzo VARCHAR(255),
  17.     numero_civico VARCHAR(10),
  18.     foto VARCHAR(255),
  19.     telefono VARCHAR(15),
  20.     codice_postale VARCHAR(10),
  21.     role ENUM('admin', 'staff', 'user') DEFAULT 'user',
  22.     email_verified TINYINT(1) DEFAULT 0,
  23.     is_active TINYINT(1) DEFAULT 0,
  24.     token VARCHAR(100) DEFAULT NULL,
  25.     token_expiration DATETIME DEFAULT NULL,
  26.     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  27.     updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  28. );
  29. */
  30.  
  31.  
  32.     public function register($username, $email, $password, $nome_cognome, $data_nascita, $sesso, $bio, $citta, $provincia, $paese_regione, $indirizzo, $numero_civico, $foto, $telefono, $codice_postale, $role = 'user') {
  33.         // Controlla se l'username è unico
  34.         if (!$this->isUnique('username', $username)) {
  35.             return "Username already exists.";
  36.         }
  37.    
  38.         // Controlla se l'email è unica
  39.         if (!$this->isUnique('email', $email)) {
  40.             return "Email already exists.";
  41.         }
  42.    
  43.         $hash_password = password_hash($password, PASSWORD_BCRYPT);
  44.         $token = bin2hex(random_bytes(50)); // Genera un token per la verifica email
  45.         $token_expiration = date("Y-m-d H:i:s", strtotime('+24 hours')); // Imposta la scadenza del token
  46.    
  47.         $query = "INSERT INTO users (username, email, password, nome_cognome, data_nascita, sesso, bio, città, provincia, paese_regione, indirizzo, numero_civico, foto, telefono, codice_postale, role, email_verified, is_active, token, token_expiration)
  48.                  VALUES (:username, :email, :password, :nome_cognome, :data_nascita, :sesso, :bio, :città, :provincia, :paese_regione, :indirizzo, :numero_civico, :foto, :telefono, :codice_postale, :role, :email_verified, :is_active, :token, :token_expiration)";
  49.    
  50.         $email_verified =0;
  51.         $is_active = 0;
  52.        
  53.         $stmt = $this->conn->prepare($query);
  54.         $stmt->bindParam(':username', $username);
  55.         $stmt->bindParam(':email', $email);
  56.         $stmt->bindParam(':password', $hash_password);
  57.         $stmt->bindParam(':nome_cognome', $nome_cognome);
  58.         $stmt->bindParam(':data_nascita', $data_nascita);
  59.         $stmt->bindParam(':sesso', $sesso);
  60.         $stmt->bindParam(':bio', $bio);
  61.         $stmt->bindParam(':città', $citta);
  62.         $stmt->bindParam(':provincia', $provincia);
  63.         $stmt->bindParam(':paese_regione', $paese_regione);
  64.         $stmt->bindParam(':indirizzo', $indirizzo);
  65.         $stmt->bindParam(':numero_civico', $numero_civico);
  66.         $stmt->bindParam(':foto', $foto);
  67.         $stmt->bindParam(':telefono', $telefono);
  68.         $stmt->bindParam(':codice_postale', $codice_postale);
  69.         $stmt->bindParam(':role', $role);
  70.         $stmt->bindParam(':email_verified', $email_verified);
  71.         $stmt->bindParam(':is_active', $is_active);
  72.         $stmt->bindParam(':token', $token);
  73.         $stmt->bindParam(':token_expiration', $token_expiration);
  74.  
  75.         if ($stmt->execute()) {
  76.             $mailer = new Mailer();
  77.             $mailer->sendVerificationEmail($email, $token);
  78.             return true;
  79.         }
  80.         return "Registration failed, please try again.";
  81.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement