Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 18

Как написать грамотный код на примере входа и регистрации

21.08.2016, 21:12. Показов 1200. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой простой код для регистрации:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?
include('template.html');
 
class db
{ 
    protected $dsn = 'mysql:host=localhost;dbname=learn';
    protected $pass ="";
    protected $user = 'root' ; 
    protected $opt; 
    
  function __construct($name,$password)
  {
     $this->name = $name;
     $this->password = $password;
  }
  function connect()
    {
        $this->opt = array(
            PDO::ATTR_ERRMODE               =>  PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE    =>  PDO::FETCH_ASSOC);
        try{
            $this->pdo = new PDO($this->dsn,$this->user,$this->pass,$this->opt);
            }catch(PDOException $x){
                die('подключение не удалось '. $x->getMessage().
                    '<br />ошибка на строчке '. $x->getLine()    );
        }
    }
 
    function check()
    {
        $output = true;
        $this->show = $this->pdo->query('SELECT*FROM id');//выводим всё с бд
        
        while($this->row = $this->show->fetch() ) 
        {
            if($this->name == $this->row['name'])
            {
                $output = false; //если имя введенное пользователем совпадает с именем в базе
            }
            
        }
        if(isset($_POST['add']))
        {
            if($output)
            {
            $name = $_POST['name'];
            $password = $_POST['password'];
            
            $result = $this->pdo->prepare("INSERT INTO id(name,years) VALUES(:name,:password)");    
            $result->bindParam(':name',$name);
            $result->bindParam(':password',$password);
            $result->execute();
                echo 'удалось,теперь вы можете войти на сайт';
?>
                <a href="sign_up.php">Вход</a>
<?
            }else{
                echo 'Пользователь с таким именем уже есть,выберите другой ник';
            }
        }
        
    }
}
 
$user1 = new db($_POST['name'],$_POST['password']);
$user1->connect();
$user1->check();
?>
Хочу сделать такой же примитивный вход с использованием ооп, но тут начинаю понимать что нужно будет дублировать код даже для подключения к бд.Собственно вопросы:
1. как этого избежать
2.Есть в моём коде ужасы?(только начал учиться и не хочеться сразу привыкать делать плохо)
3.Если не сложно можете подсказать в виде текстового алгоритма как его лучше сделать вход(что больше полезного впитать),а то в голове сессии,куки,подключения к бд,проверки на совпадения введенного пользователем и данными с бд и т.д,но как это сделать толково очень туманно представляю.
4.Кто-то может посоветовать толковую книгу связки php+oop+pdo.Читал Зандстру обьекты паттерны шаблоны,но как дошло до шаблонов(примерно 10 глава) как-то стало не понятно для чего они нужны и т.д. вообщем как-то мотивация пропала её дальше штудировать .Я правильно сделал или упускаю самое полезное?
5.Может вопросы странные,но я щас как-то завис и не знаю куда двигать дальше.В сторону документации и попыток написать разные модули для сайта или лучше книги или ?
//
Заранее очень благодарен тем,кто хоть чем-то внесёт ясность в мою голову
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.08.2016, 21:12
Ответы с готовыми решениями:

Как можно написать по короче код в этом примере?
Нужно сократить до минимума код в этом примере. А то сильно большой получился. using System; using System.Collections.Generic; ...

Как написать код для вывода на экран времени последнего входа в ОС?
Кому не лень, подскажите код для вывода на экран время последнего входа в Windows, что бы программка при ее запуске выводила на экран...

Окно входа и регистрации
День добрый, уважаемые форумчане!!!! думал справлюсь самостоятельно, но как-то не выходит. Вообщем мне надо чтоб при входе я вбивал пароль...

8
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
22.08.2016, 12:55
Цитата Сообщение от Shvarko Посмотреть сообщение
1. как этого избежать
Осилить паттерны
Цитата Сообщение от Shvarko Посмотреть сообщение
2.Есть в моём коде ужасы?
Полно: шорт-теги, include template.html, protected поля (хотя допустимо), $this->name которого нету в полях класса, захардкоженые данные подключения к бд. И это я еще код не скролил.
1
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 18
22.08.2016, 13:20  [ТС]
Cпасибо большое за советы.Значит буду учить паттерны,надеюсь пойму для чего они нужны.
Хотелось бы уточнить по замечаниям,правильно ли я понял.
Шорт-теги, это просто вместо <? использовать <?php ?
вместо include require?
$this-name я передал в параметрах когда создавал обьект.Так нельзя делать,нужно только в классе обьявлять?Я сначала пытался в классе обьявить мол $name = $_POST['name'] но оно отказывалось работать
И можете пожалуйста подробнее про хардкорные данные в бд, а то вообще не понял что это значит
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
22.08.2016, 13:59
Цитата Сообщение от Shvarko Посмотреть сообщение
вместо include require?
Его тут вообще не должно быть.

Цитата Сообщение от Shvarko Посмотреть сообщение
$this-name я передал в параметрах когда создавал обьект.Так нельзя делать,нужно только в классе обьявлять?
Можно передавать, и нужно изначально объявить.
1
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 18
22.08.2016, 14:11  [ТС]
А как подключить дизайн и форму?Читал что нужно разделять html и php, правда может не правильно понял смысл
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
22.08.2016, 14:47
Цитата Сообщение от Shvarko Посмотреть сообщение
А как подключить дизайн и форму?
Читайте про MVC.
1
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
22.08.2016, 16:12
Цитата Сообщение от Shvarko Посмотреть сообщение
вместо include require?
нет. прямое подключение файлов допустимо внутри загрузчика классов, внутри методов для включения шаблогов или конфигов, возможно в каких-то нестандартных ситуациях.
Цитата Сообщение от Shvarko Посмотреть сообщение
$this-name я передал в параметрах когда создавал обьект.Так нельзя делать,нужно только в классе обьявлять?
Можно, но тогда оно будет доступно как public.
Цитата Сообщение от Shvarko Посмотреть сообщение
хардкорные данные
не хардкор, а hard code (антипаттерн такой). Жестко прописанные данные, в данном случае подключения бд в самом коде, а не в конфигурационных файлах
1
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
22.08.2016, 21:38
Shvarko, еще вы должны полностью понимать, как происходит клиент-серверное взаимодействие по протоколу HTTP, как передаются куки в обоих направлениях (отдельно можно почитать про то, как они используются в сессиях PHP), на какой стадии это происходит. В ответ на POST в под. большинстве случаев принято делать редирект методом GET, а не выдавать «тело» страницы.
1
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 18
22.08.2016, 22:44  [ТС]
буду начинать разбор Yii 2 , надеюсь многое осмыслится
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.08.2016, 22:44
Помогаю со студенческими работами здесь

Программа входа и регистрации
Здравствуйте! Я написал для себя программку: она записывает логин и пароль в файл, а затем сверяет его в следующий раз при логине. ...

Формы регистрации и входа
Добрый день. Возникла проблемка с выполнением задания. Моя задача сделана по примеру товарища, но проблема в том, что у меня код почему то...

Система регистрации и входа
Здравствуйте Делаю систему регистрации и входа на сайте. При открытии сайта вылетает ошибка: Parse error: syntax error, unexpected $end...

Формы регистрации и входа
Формы регистраци и входа свёрстаны в виде модальных окон. Возможно ли сделать только с помощью HTML и CSS чтобы из формы входа можно было...

Формы входа и регистрации в лайтбоксе
У меня на сайте (Wordpress) в меню есть ссылки на вход и регистрацию.Как сделать чтобы (вход и регистрация ) открывались не в новой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru