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

Регистрация на сайте ООП

07.03.2013, 22:03. Показов 8733. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте форумчане. У меня проблема такая. Написал регистрацию на сайте с помощью процедурного стиля с небольшим применением ООП,всё работает, но хочется сделать всё с помощью ООП чтобы посмотреть в чём разница между процедурным. Не могли бы помочь реаливать это. Вот код базы данных файл db.php. Делаю коннект с помощью шаблона singleton
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
<?php 
    class DB {
        
        private static $instance = null;
        private $mysqli;
        
        public static function getInstance() {
            
            if(self::$instance == null ) self::$instance = new self;
            return self::$instance;
        }
        
        private function __construct() {
            $this->mysqli = new mysqli("localhost","root","","blog");
            if($this->mysqli->connect_errno)
                echo "<p class='error'>Ошибка подключения к БД ".$this->mysqli->connect_error."<p>";
        }
        
        private function __clone() {
        
        }
        
        public function getQuery($query) {
            return $this->mysqli->query($query);
        }   
        
    }
?>
файл user.php

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
<?php
 
    class user {
        
        protected $name;
        protected $login;
        protected $email;
        protected $status;
        protected $password;
        
        public function __construct($name, $login, $email, $password) {
            $this->name = $name;
            $this->login = $login;
            $this->email = $email;
            $this->password = $password;
        }
        
        public function getName() {
            return $this->name;
        }
        
        public function getLogin() {
            return $this->login;
        }
        
        public function getEmail() {
            return $this->email;
        }
        
        public function getPassword() {
            return $this->password;
        }
 
    }
    
    class user_comment extends read_only {
        
        public function getStatus() {
            return $this->status = 'user_comment';
        }
    
    }
?>
и вот сам файл регистрации.

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
69
70
71
72
73
74
75
76
77
78
79
80
<?php
    session_start();
 
    require_once "db.php";
    require_once "user.php";
 
    if(isset($_POST['submit'])) {
        
        $login = trim(strip_tags($_POST['login'])); 
        $name = trim(strip_tags($_POST['name']));   
        $email = trim(strip_tags($_POST['email'])); 
        $password = trim(strip_tags($_POST['password']));   
        $password_two = trim(strip_tags($_POST['password_two']));
 
        if (!empty($login) && !empty($name) && !empty($email) && !empty($password) && !empty($password_two)) {
        
            $email_count = strstr($email,'@');
            if(strlen($email_count) >= 3) {
            
                if($password == $password_two) { // проверка совпадения паролей
                    
                    $user = new user($name, $login, $email, $password);
                    
                    $dbc = DB::getInstance();
                    $result = $dbc->getQuery("SELECT `login` FROM `users` WHERE `login` = '$login'");
                    $row = $result->fetch_object();
                    
                    if(empty($row->login)) { //проверка нет ли уже такого пользователя
                        
                        $result = $dbc->getQuery("INSERT INTO `users`(`id`, `login`, `name`, `email`, `password`, `status`)
                        VALUES(0, '{$user->getLogin()}', '{$user->getName()}', '{$user->getEmail()}', '{$user->getPassword()}', '{$user->getStatus()}')");
                        
                        if($result) {
                            $letter = "<p class='green'>Пользователь {$user->getLogin()} успешно зарегистрирован</p>";
                        } else $letter = "<p class='error'>Пользователь не зарегистрирован, попробуйте ещё раз</p>"; 
                        
                    } else $letter = "<p class='error'>Такой пользователь существует!</p>";
                    
                } else $letter = "<p class='error'>Пароли не совпадают!</p>";
                
            } else $letter = "<p class='error'>Введите корректный email</p>";
        
        } else $letter = "<p class='error'>Введите все данные!</p>";
    }
    
?>
 
<!DOCTUPE>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="style.css">
        <title>Мой блог</title>
    </head>
    <body>
        <ul>
            <li><a href="index.php">Главная</a></li>
        </ul>
        
        <?php echo "<div class='letter'>".$letter."</div>" ?>
        <h2>Регистрация пользователя</h2>
        <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>" class="registration">
            <label for="reg_login">Логин</label>
            <input type="text" name="login" id="reg_login" value="<?php echo $login; ?>">
            <br />
            <label for="reg_name">Имя</label>
            <input type="text" name="name" id="reg_name" value="<?php echo $name; ?>">
            <br />
            <label for="reg_email">Email</label>
            <input type="text" name="email" id="reg_email" value="<?php echo $email; ?>">
            <br />
            <label for="reg_password">Пароль</label>
            <input type="password" name="password" id="reg_password">
            <br />
            <label for="reg_password_two">Повтор пароля</label>
            <input type="password" name="password_two" id="reg_password_two">
            <br />
            <input type="submit" value="Зарегистрироваться" name="submit">
        </form>
    </body>
</html>
Хотелось бы по максиму всё сделать с помощью ООП. Буду рад любому совету, а также критике.
(Добавление)
И ещё такой вопрос где можно найти хорошие рабочие примеры на ООП(гугл можете не рекомендовать, там ничего нормального не нашёл)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2013, 22:03
Ответы с готовыми решениями:

Регистрация на сайте!
Господа, гуру и вообще все кто здесь обитает...Прошу помогите! Загорелся идеей создать сайт, и хочу сделать на нём регистрацию... Не...

Регистрация на сайте через facebook
Здравствуйте, пишу регистрацию и авторизацию на сайте через FB. Удалось получать данные с помощью кода: &lt;? if (!$_GET) { ...

Регистрация нового пользователя на сайте
Здравствуйте! Задача: зарегистрировать нового пользователя, дать ему возможность заполнить форму с его данными, добавить фото с его...

2
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
07.03.2013, 23:48
Цитата Сообщение от pogranpv Посмотреть сообщение
но хочется сделать всё с помощью ООП
ООП - это не просто использование классов.
Нужно не примеры ООП искать, а книги по ООП, по паттернам проектирования.
А примеры - это фреймворки, берите Yii, зенд, симфони 2, открывайте и изучайте, но предже прочтите о паттерннах, что бы понимать код, и для чего сделано именно так.
Синглтон - как раз один из паттернов проектирования. Но помимо того, что Вы знаете что такой паттерн есть, нужно прочитать в книгах, когда его нужно использовать, часто его используют не по назначению

Ну и прочтите о шаблонизации, что бы в файле с пхп кодом, не было html кода. А в файле с html кодом был только минимум кода, проход по циклу, проверка условия, вывод кода.
1
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
08.03.2013, 10:15
PHP
1
2
3
 if($this->mysqli->connect_errno)
                echo "<p class='error'>Ошибка подключения к БД ".$this->mysqli->connect_error."<p>";
        }
http://www.phpinfo.su/articles... v_php.html
http://www.php.net/manual/ru/l... ptions.php

PHP
1
$login = trim(strip_tags($_POST['login']));
объясни, пожалуйста, что ты делаешь в этой строке и зачем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.03.2013, 10:15
Помогаю со студенческими работами здесь

Регистрация и авторизация на php, ajax, pdo и ооп
Посоветуйте правильные примеры страницы регистрации авторизации с помощью php, ajax, ООП и pdo. Примеры по pdo есть достаточно, но все они...

Регистрация на сайте!
Имеется регистрация! ВОПРОС: хочу сделать checkbox Вот. если согласен и Все пункты заполнены правильно то Зереган а если не согласен то...

регистрация на сайте
как сделать полноценную регистрацию на своем сайте? Можно ли будет редактировать отдельные страницы зарегистрированных пользователей и как...

Регистрация на сайте
Суток. Пытаюсь сделать регистрацию, но вообще никак не выходит. /на скрине показано, какие столбцы в бд и прочем нужны./ Поможете?...

Регистрация на сайте
Здравствуйте, уважаемые пользователи! Стал изучать Php+MySQL. Решил написать пробную регистрацию без всякой обработки-просто добавление...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru