вопрос
Здравствуйте
есть скрипт который отвечает за регистрацию и в нем находиться подключение к БД
я пытаю убрать из него подключение так как уже все подключено в config
прошу помощи
Вот содержимое файла
есть скрипт который отвечает за регистрацию и в нем находиться подключение к БД
я пытаю убрать из него подключение так как уже все подключено в config
прошу помощи
Вот содержимое файла
<?php
class User{
private $mysqli;
private $id;
private $user;
private $user_id;
private $is_authorized = false;
public function __construct()
{
$this->mysqli = new mysqli("localhost", "root", "12345", "mydb");
}
public function __destruct()
{
$this->mysqli = null;
}
public function checkUser($field, $value)
{
$user_exist = $this->mysqli->query("SELECT $field FROM users WHERE $field = '$value' LIMIT 1");
if ($user_exist->num_rows == 0){
return true;
}
return false;
}
public function register($data){
$login = strip_tags(trim($data['login']));
$email = strip_tags(trim($data['email']));
$password = strip_tags(trim($data['password']));
$group = strip_tags(trim($data['group']));
$valids = $this->validate($login, $email, $password, $group);
if (empty($valids)){
$password = md5($password);
$result = $this->mysqli->query("INSERT INTO users (login, email, password, group_id) VALUES ('$login', '$email', '$password', $group)");
if ($result){
header("Location:login.php");
}
} else {
return $valids;
}
}
private function validate($login, $email, $password, $group)
{
$errors = array();
if (strlen($login) < 3 || strlen($login) > 16) {
$errors['login'] = "Логин должен быть больше 3 символов и не более 16 символов";
}
if (!preg_match('~^[a-z0-9_\-]*$~i',$login)) {
$errors['login'] = "Разрешается только ввод латинских символом, цифр а также знака подчеркивания";
}
if (!$this->checkUser('login', $login)){
$errors['login'] = "Логин $login уже зарегестрирован";
}
if (strlen($password) < 3 || strlen($password) > 16) {
$errors['password'] = "Пароль должен быть больше 3 символов и не более 16 символов";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors['email'] = "Не верный email адресс";
}
if (!$this->checkUser('email', $email)){
$errors['email'] = "Email $email уже зарегестрирован";
}
if ($group == 0) {
$errors['group'] = "Выберите группу из списка";
}
return $errors;
}
public static function isAuthorized()
{
if (!empty($_SESSION["user_id"])) {
return (bool) $_SESSION["user_id"];
}
return false;
}
public static function user(){
if (!empty($_SESSION["user_id"])) {
$id = $_SESSION['user_id'];
//$query = "SELECT id, login, email, group_id, created_at FROM users WHERE id = $id LIMIT 1";
//$result = $this->mysqli->query($query);
//return $result->fetch_assoc();
}
return false;
}
public function authorize($login, $password, $remember = false)
{
$password = md5($password);
$query = "SELECT id, login FROM users WHERE login = '$login' AND password = '$password' limit 1";
$result = $this->mysqli->query($query);
$this->user = $result->fetch_assoc();
if (!$this->user) {
$this->is_authorized = false;
} else {
$this->is_authorized = true;
$this->user_id = $this->user['id'];
$this->saveSession($remember);
}
return $this->is_authorized;
}
public function saveSession($remember = false, $http_only = true, $days = 7)
{
$_SESSION["user_id"] = $this->user_id;
if ($remember) {
$sid = session_id();
$expire = time() + $days * 24 * 3600;
$domain = ""; // default domain
$secure = false;
$path = "/";
$cookie = setcookie("sid", $sid, $expire, $path, $domain, $secure, $http_only);
}
}
public function logout()
{
if (!empty($_SESSION["user_id"])) {
unset($_SESSION["user_id"]);
}
}
public function reset_password($data){
$email = strip_tags(trim($data['email']));
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$check = $this->checkUser('email',$email);
if (!$check) {
$password = $this->randomString();
$pass = md5($password);
$this->mysqli->query("UPDATE users SET password = '$pass' WHERE email = '$email'");
$this->sendMail($email, $password);
return true;
}
}else {
$check = $this->checkUser('login',$email);
if (!$check) {
$password = $this->randomString();
$pass = md5($password);
$result = $this->mysqli->query("UPDATE users SET password = '$pass' WHERE login = '$email'");
$user = $result->fetch_assoc();
$this->sendMail($user['email'], $password);
return true;
}
}
return false;
}
private function randomString($length = 10) {
return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)) )),1,$length);
}
private function sendMail($email, $password){
$title = "Восстановления пароля";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; Charset=utf-8' . "\r\n";
$msg = 'Ваш новый пароль:'.$password;
mail($email, $title, $msg, $headers);
}
}
$user = new User();
?>