Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте уважаемые форумчане ,Я новичок в Ларавель версии 5.3. Создав простую регистрацию и логин в этом фреймворке, я задался вопросом ,как перенести или вписать свой класс users в котором есть переменные,методы, хэш и поля с проверкой . Подскажите пожалуйста , как создавать ООП клаccы в ларе, а главное где? Вот пример моего класса users.
По старинке я делал так.
/Подключаем файл класса Users к index.php .
require_once("class.user.php");
//Запускаем сессию Users.
session_start();
//Тестовая переменная которая будет запускать роутинг.
$router_strart;
// с помощью переменной создаём нового пользователя.
$login = new USER();
// если новый пользователь залогинился
if($login->is_loggedin()!="")
{
//Перенаправляем его с логина на страницу'profile.php'.
$login->redirect('profile.php');
}
//Заполнения полей в логине и отправка запросов POST переменных серверу .
// Если кнопка батон логин нажата и поля правильно заполненны после регистрации.
if(isset($_POST['btn-login']))
{
$uname = strip_tags($_POST['txt_uname_email']);
$umail = strip_tags($_POST['txt_uname_email']);
$upass = strip_tags($_POST['txt_password']);
// если поля переменных $uname,$umail,$upass заполнены
if($login->doLogin($uname,$umail,$upass))
{
// то перенапрвляем пользователя на страницу профайл.php
$login->redirect('profile.php');
}
// иначе
else
{
// ошибка (вывод на экран)
$error= "Неправильный логин или пароль";
}
}
Сам класс Юзеров с функциями и методами.
<?php
require_once('dbconfig.php');
class USER
{
public $username;
private $login = false;
private $conn;
public function __construct()
{
$database = new Database();
$db = $database->dbConnection();
$this->conn = $db;
}
public function runQuery($sql)
{
$stmt = $this->conn->prepare($sql);
return $stmt;
}
public function register($uname,$umail,$upass)
{
try
{
$new_password = password_hash($upass, PASSWORD_DEFAULT);
$stmt = $this->conn->prepare("INSERT INTO users(user_name,user_email,user_pass)
VALUES(:uname, :umail, :upass)");
$stmt->bindparam(":uname", $uname);
$stmt->bindparam(":umail", $umail);
$stmt->bindparam(":upass", $new_password);
$stmt->execute();
return $stmt;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function doLogin($uname,$umail,$upass)
{
try
{
$stmt = $this->conn->prepare("SELECT user_id, user_name, user_email, user_pass FROM users WHERE user_name=:uname OR user_email=:umail ");
$stmt->execute(array(':uname'=>$uname, ':umail'=>$umail));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() == 1)
{
if(password_verify($upass, $userRow['user_pass']))
{
$_SESSION['user_session'] = $userRow['user_id'];
return true;
}
else
{
return false;
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function is_loggedin()
{
if(isset($_SESSION['user_session']))
{
return true;
}
}
public function redirect($url)
{
header("Location: $url");
}
public function doLogout()
{
session_destroy();
unset($_SESSION['user_session']);
return true;
}
}
Изменено Viktor92 (24.07.2017 18:18:18)
Не в сети
Я тебе один умный совет дам, только ты не обижайся. Забудь про велосипеды, прочитай документацию и используй функционал фреймворка. В Laravel есть шикарная ORM, вылизанная система авторизации и десятки других ништяков. А ты берешь код уровня 2000х и суешь его в современный фреймворк.
Не в сети
Ок спасибо большое пошёл читать ORM
Не в сети
Мне кажется тут проблема не в ORM а в том, что у автора нет понимания MVC, по этому надо сначала подучить MVC, еще в него вникнуть.
Изучаю Laravel, до этого дела с фреймворками не имел.
Печальные познания в английском.
Не в сети
Дак я не только про ORM написал. Код автора вообще полностью оторван от фреймворка, я бы посоветовал начать с книги или туториала (доки не помогут), которая разжевывает на все с нуля на реальном примере.
Не в сети
Спасибо я во всём разобрался.
Не в сети
Страницы 1