Помогите пожалуйста реализовать этот код соблюдая концепцию ООП или подскажите как это можно сделать, а также есть вопрос как здесь реализовать session and coockies и ajax запросы ФОРМА АВТОРИЗАЦИИ PHP: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Авторизация</title> </head> <body> <?php require_once "CRUD.php"; $pass; if(isset($_POST['loginn'])) { $salt = '1b34r7q5'; $pass = md5($salt.$_POST['password']); $validlogin(); $paslog(); if ($GLOBALS['log']==1) { if ($GLOBALS['pas']==1) { print_r("Вы авторизованны"); $_SESSION['LogUser']=$_POST['name'];?> <p>Войти на<a href="/Site.php"> главную</a></p> <?php } else { print_r("Неверно введён пароль!"); } } else { print_r("Такого логина не существует!"); } } ?> <form action="/Autorise.php" method = "POST" name="register"> <p> <p><strong></strong>Введите логин</p> <input type="text" name="login"> </p> <p> <p><stronh></strong>Введите пароль</strong>:</p> <input type="text" name="password"> </p> <p> <button type="submit" name="loginn">Войти</button> </p> </form> <p>У вас нет аккаунта ? <a href="/signup.php">Зарегистрируйтесь</a></p> ФАЙЛ ЗАПРОСОВ PHP: <?php $log; $maillog; $pas; function CRUD_ADD() { $salt = '1b34r7q5'; //чтение файла $data = file_get_contents('user.json'); //декодирование файла из json $data = json_decode($data, true); //создание нового юзера $add_arr = array( 'login' => $_POST['login'], 'password' => md5($salt.$_POST['password1']), 'email' => $_POST['email'], 'name' => $_POST['name'] ); // присвоение масива переменной $data[] = $add_arr; //кодирование в json формат $data = json_encode($data, JSON_PRETTY_PRINT); //запись данных в файл file_put_contents('user.json', $data); } function ValidLog() { //чтение файла $data = file_get_contents('user.json'); //декодирование файла из json $data = json_decode($data,true); // проход по массиву foreach ($data as $value) {// поиск нужной переменной if ($value['login'] == $_POST['login']) {// если есть совпадение $GLOBALS['log']=1; break; } else {// если нет совпадений $GLOBALS['log']=0; } } } function EmailLog() { $data = file_get_contents('user.json'); $data = json_decode($data,true); foreach ($data as $value) { if ($value['email'] == $_POST['email']) { $GLOBALS['maillog']=1; break; } else { $GLOBALS['maillog']=0; } } } function passLog() { $data = file_get_contents('user.json'); $data = json_decode($data,true); foreach ($data as $value) { if ($value['password'] == $GLOBALS['pass']) { $GLOBALS['pas']=1; break; } else { $GLOBALS['pas']=0; } } } $paslog='passLog'; $mailyes = 'EmailLog'; $validlogin = 'ValidLog'; $add = 'CRUD_ADD'; ?> ФФОРМА РЕГИСТРАЦИИ PHP: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Регистрация</title> </head> <!--подключение jquery и ajax библиотек--> <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <!--подключение CRUD файла--> <?php require_once "CRUD.php"; $data = $_POST; // нажатие кнопки "зарегистрироваться" if(isset($_POST['signup'])) { // проверка на регистрируемый логин $validlogin(); // проверка на регистрируемый емаил $mailyes(); if(trim($data['login'])=='') { print_r("Введите логин"); } elseif (trim($data['password1'])=='') { print_r("Введите пароль"); } elseif (trim($data['password2'])=='') { print_r("Введите пароль повторно"); } elseif (trim($data['email'])=='') { print_r("Введите E-mail"); } elseif (trim($data['name'])=='') { print_r("Введите имя"); } elseif ($GLOBALS['log']== 1) { print_r("Этот логин уже занят придумайте другой "); } elseif($_POST['password2']!=$_POST['password1']) { print_r("Повторный пароль введён не верно"); } elseif($GLOBALS['maillog']==1) { print_r("Этот маил уже зарегестрирован введите другой"); } else { // использование функции CRUD_ADD $add(); unset($data); unset($_POST); echo '<div style="color: green;">Вы успешно зарегестрировались!</div>'; } } ?> <!--форма регистрации--> <form action="/signup.php" method = "POST" name="register"> <p> <p><stronh></strong>Введите логин</p> <input required type="text" id="nameid" name="login" pattern="[А-Яа-яЁё0-9]{6,}|[A-Za-z0-9]{6,}" placeholder="Не менее 6 символов" value ="<?php echo $data['login'];?>" > <img src="/help.png" width="20" height="20" alt="помощь" title="Логин должен состоять только из латинских/русских символов с цифрами или без них"> </p> <p> <p><stronh></strong>Введите пароль</strong>:</p> <input required type="text" name="password1" pattern="[А-Яа-яЁё0-9]{6,}|[A-Za-z0-9]{6,}" placeholder="не менее 6 символов" value ="<?php echo $data['password1'];?>"> <img src="/help.png" width="20" height="20" alt="помощь" title="минимум 6 символов , обязательно должны состоять из цифр и букв"> </p> <p> <p><stronh></strong>Подтвердите пароль</strong>:</p> <input required type="text" name="password2" value ="<?php echo $data['password2'];?>"> </p> <p> <p><stronh></strong>введите E-mail</strong>:</p> <input required type="email" name="email" value ="<?php echo $data['email'];?>" pattern="\ ^ [ AZ 0-9 ._% + - ] + @ [ AZ 0-9 . - ] + \. [ AZ ] {2,} \ $ " required> </p> <p> <p><stronh></strong>Введите имя</strong>:</p> <input required type="text" name="name" pattern="[А-Яа-яЁё]{2,}" placeholder="Не менее 2 символов" value ="<?php echo $data['name'];?>" > <img src="/help.png" width="20" height="20" alt="помощь" title="Имя должно быть написано на русском языке (только имя без фамилии и отчества)"> </p> <p> <input type="submit" class="signupbtn" value="Зарегистрироваться" name="signup"> <p>Уже есть учётная запись ? <a href="/Autorise.php">Войти</a></p> </p> </form> САМ САЙТ НА КОТОРЫЙ ДОЛЖНО ВЫВОДИТЬ ПОСЛЕ АВТОРИЗАЦИИ PHP: <?php require_once "CRUD.php"; if (isset($_SESSION['LogUser'])) { print_r("YES!"); } else { print_r("NO!"); } ?>
я с этим потом разберусь, лишь бы я видел результат, что работает, мне в дальнейшем нужно будет сделать вывод ошиб под полями где была ошибка. Что я также пока не знаю как это реализовать
Простая логика регистрации например PHP: <?php declare ( strict_types = 1 ); namespace Nouvu\Resources\Controllers; use Nouvu\Web\Http\Controllers\AbstractController; use Nouvu\Web\View\Repository\CommitRepository; use Nouvu\Web\Component\Validator\Exception\ViolationsException; final class RegistrationController extends AbstractController { public function register(): CommitRepository { if ( $this -> isGranted( [ 'ROLE_USER' ] ) ) { return $this -> redirect( '/' ); } $this -> title( [ 'Регистрация' ] ); $model = $this -> getModel(); if ( $this -> app -> request -> isMethod( 'POST' ) ) { try { $user = $model -> getUserRegister(); $model -> validateRegister( $user ); $password = $this -> getEncoder( $user ) -> encodePassword( $user -> getPlainPassword(), $user -> getSalt() ); $user -> setPassword( $password ); $this -> app -> repository -> get( 'query.database.insert.users_register' )( $user ); return $this -> render( 'user/register-success', 'user/form-template' ); } catch ( ViolationsException $e ) { if ( $this -> isAjax() ) { return $this -> customJson( $e -> getErrors() ); } $this -> app -> request -> attributes -> set( 'errors', $e ); } } return $this -> render( 'user/register', 'user/form-template' ); } }
Я не называл ничего фреймворком, под ответом есть какая-то цитата "MyPHPWorld Если видите, что фреймворк использует что-то, что вы не до конца понимаете – выясните что это за штука!" я подумал это тоже в ответе. что это за строки, что здесь происходит ? use Nouvu\Web\Http\Controllers\AbstractController; use Nouvu\Web\View\Repository\CommitRepository; use Nouvu\Web\Component\Validator\Exception\ViolationsException;
https://www.php.net/manual/ru/language.namespaces.php под логикой я имел ввиду суть регистрации, действия, а не синтаксис который должен изучать сам. строки: 15 - 18 перенаправляем на главную юзера, если он авторизован на сайте. 20 Устанавливаем название страницы 24 Запрашиваем - POST запрос пришел ? 30 Валидация входящих данных. Иначе - Выбрасывается исключение с сообщениями (email не верный... логин такой существует...) 32 Кодируем пароль. Гугли в сторону password_hash 36 Заносим в БД данные о новом пользователе 38 Страница с сообщением - рег гуд, можно авторизоваться 40-48 Обработка исключения от валидации 51 Вывод формы с регистрацией
ваш код даже процедурным подходом назвать сложно, просто подряд все идет.... надо вам изучить что такое ООП для чего и как делается...
Да ладно, а то я не понимаю, я сюда пришёл не для того, чтобы мне тычили носом, что мне нужно учить, а для того чтобы помочь разобраться и подсказать, как это делается, я не сижу на 5 точке ровно и ничего не делаю, я читаю-разбираюсь, пробую разные варианты и закрепляю на практике, а вы в каждой моей теме только и тычите, что мне нужно что-то учить, зачем вы вообще отвечаете в таком случае вместо того чтобы помогать ?
А вы думаете вам что - готовый код предоставят и все? Советы - они тоже многого стоят. Трудно начать с сложного проекта, начинайте с малого... ну для примера создайте класс пользователь User по английски определите ему поля, посмотрите какие виды полей есть - private, protected, public определите коструктор, сделайте парочку методов которые будут работать с данными пользователя. например чтение данных по id, обновление данных, проверку в отдельный метод вынесите, попробуйте поработать с этим классом, потом продвигайтесь дальше - постепенно дойдете и до своей задачи и сможете ее на рельсы ООП перевести...
Именно XD --- Добавлено --- Я как раз этим и занимаюсь, пробуя все советы на практике, которые мне здесь пишут
я что-то попытался сделать но записывает в файл "null". Почему так происходит ? PHP: <?php // создание класса юзер class User { // объект public $name; // метлд для связи с файлом public function Connect() { // чтение файла $data = file_get_contents('User.json'); //декодирование файла из json $data = json_decode($data, true); } public function Write() { // кодирование в json формат $data = json_encode($data, JSON_PRETTY_PRINT); // запись данных в файл file_put_contents('User.json', $data); } public function Create_user() { $this -> Connect(); $add_array = array ( $name -> $_POST['name'] ); $data[] = $add_array; $this -> Write(); } } ?> PHP: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Регистрация</title> </head> <?php require_once "Use.php"; if (isset ($_POST['loginn'])) { $user = new User; $user -> Create_user(); } ?> <form action="/Site.php" method = "POST" name="register"> <p><stronh></strong>Введите имя</p> <input required type="text" name="name"> <button type="submit" name="loginn">Добавить</button> </form>
1. странно но метод write ничего не принимает в качестве аргументов 2. $data = json_encode($data, JSON_PRETTY_PRINT); а $data то не определена.... вот вам и пишется null
Как их определить не понимаю Ругается на $data в методе Write И на $name в методе Create_user Пишет, что они не определенны, как их определить ?
откатываемся дальше - что такое аргументы понимаете? - что такое функция? Для чего она и как передать аргумент в функцию? + зона видимости переменных
Я передал все аргументы и теперь оно добавляет, но всё ещё присутствуют ошибки такие как: 1) Notice: Undefined variable: name in E:\OpenServer\domains\User\Site.php on line 15 2) Notice: Undefined variable: data in E:\OpenServer\domains\User\Site.php on line 15 А это когда я создаю нового юзера и передал ему аргументы которые ему нужны для этого, почему ошибка ? Ещё такой вопрос. Введённые данные записываются вот так: "": "ANDREI" А нужно чтобы было так : "name": "ANDREI" Как это сделать ?
Чел от темы отписался, чтоб не видеть переписку больше. Я наверное тоже отпишусь, а вам советую книжку какую нить толковую скачать или купить и с простейших вещей постепенно осваивать все. А то вы так каждую строчку да ещё и по несколько раз будете спрашивать