Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 1

Ваши советы, на счет того как было-бы правильнее. PHP UCP

08.02.2016, 13:49. Показов 703. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю UCP, просто ради практики, хотел бы получить советы от людей чей опыт поболее моего.

index.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
<!DOCTYPE html>
<?php
    include("template.php");
    $template = new Template();
    $db = new Database();
    if(isset($_POST['confirm']) && isset($_POST['login']) && isset($_POST['password']))
    {
        $_GET['page'] = $db->LogIn($_POST['login'], $_POST['password']);
    }
?>
<html>
    <head>
        <title>UCP</title>
        <link rel="stylesheet" type="text/css" href="css/style.css">
    </head>
    
    <body>
        <header><a class="ucp_name" href="index.php">USER CONTROL PANEL</a></header>
        <article>
            <?php 
                if(isset($_GET['page']))
                { 
                    if($_GET['page']=='recover' || $_GET['page']=='info') $template->ShowContent($_GET['page']); 
                    else $template->ShowContent();
                }
                else $template->ShowContent();
            ?>
        </article>
        <footer>
            <?php echo 'UCP &copy '.date("Y"); ?>
        </footer>
    </body>
</html>
template.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
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php 
    session_start();
    class Template
    {
        public function ShowContent($id='index'){
            
            switch($id)
            {
                case 'index':
                echo 
                    '
                    <form method="post" class="log_in" action="">
                        <input type="text" name="login" placeholder="Nickname" required><br>
                        <input type="password" name="password" placeholder="Password" required><br>
                        <input type="submit" name="confirm" value="Log In"><br> 
                        <a href="index.php?page=recover">Forgot your password?</a>
                    </form>
                    ';
                break;
 
                case 'recover':
                echo 
                    '
                    <form method="post" class="log_in">
                        <input type="text" placeholder="E-mail" required><br>
                        <input type="submit" value="Recovery">
                    </form>     
                    ';
                break;
 
                case 'info':
                    $_SESSION['user']->ShowUserPed();
                    $_SESSION['user']->ShowUserStats();
                echo 
                    '
 
                    ';
                break;
            }
        }
    }
 
    class Database{
        private $con_id;
        private $host = "localhost";
        private $name = "root";
        private $pass = "";
        private $db = "mydb";
 
        public function __construct(){
            $this->con_id = mysqli_connect($this->host, $this->name, $this->pass);
            mysqli_select_db($this->con_id, $this->db);
            if(mysqli_error($this->con_id)) echo "Failed to connect!";
        }
 
        public function GetConnectionId(){
            return $this->con_id;
        }
 
        public function LogIn($login, $password){
            $query = mysqli_query($this->con_id, "SELECT * FROM accounts WHERE NAME='$login'");
            if(mysqli_num_rows($query) == 0) echo "Accont doesn exist!";
            else
            {
                $user_data = mysqli_fetch_array($query);
                if($password == $user_data['PASS'])
                {
                    $_SESSION['user'] = new User();
                    $_SESSION['user']->SetUserStats($user_data['ID'],$user_data['NAME'],$user_data['PASS'],$user_data['EMAIL'],$user_data['PED']);
                    return "info";
                }
            }
        }
    }
 
    class User{
        private $id;
        private $name;
        private $pass;
        private $email;
        private $ped = 16;
 
        public function ShowUserPed(){
            echo '<img class="usr" src="img/peds/Skin_'.$this->ped.'.png">';
        }
 
        public function ShowUserStats(){
            echo
                '
                <p class="usr_stats">
                ID: '.$this->id.'<br>
                Name: '.$this->name.'<br>
                E-mail: '.$this->email.'<br>
                Ped ID: '.$this->ped.'
                </p>
                ';
        }
 
        public function SetUserStats($i, $n, $p, $e, $pd){
            $this->id = $i;
            $this->name = $n;
            $this->pass = $p;
            $this->email = $e;
            $this->ped = $pd;
        }
    }
?>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2016, 13:49
Ответы с готовыми решениями:

Как правильнее проинициализировать char's, чтобы не было мусора?
struct ElementOfTree { char value; ElementOfTree *parent; ElementOfTree *left; ElementOfTree *right; }; struct Tree ...

Ваши советы по оптимизации.
Привет, имею развлекательный портал. Регистрировал по тысячам разных каталогов, пытаюсь сделать сайт для людей, а не для рекламы,...

Сборка ПК. Ваши советы
Привет, мне нужна ваша помощь. Собираю(сам) свой ПК, поэтому будут ошибки и без вышей помощи, естественно, не обойтись. Вот моя сборка: ...

1
 Аватар для rasschitai
34 / 34 / 20
Регистрация: 02.02.2016
Сообщений: 123
08.02.2016, 21:03
ну как минимум
1. данные в базу приходят не экранированные
2. проверить login и password на содержимое, зачем просто так базу гонять
3. пароль в базе храниться не зашифрованный
4. зачем то в сессию засунули весь класс user
5. и т.д.

улыбнуло )

PHP
1
<?php echo 'UCP &copy '.date("Y"); ?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2016, 21:03
Помогаю со студенческими работами здесь

Как правильнее записать код.Так чтобы его еще можно было вставить в Word?
Здесь сначала пишется интеграл потом первообразная потом вычисленное и округленное значение. Добавлено через 3 минуты Print выводит...

Шаблонизатор с нуля (ваши советы)
Буду писать с нуля. Нужны ваши советы по проектированию основы. Да вопрос очень емкий и абстрактный, ответы мне особо конкретные не...

Ваши советы верного направления
Понимаю что создаю глупую тему, но сеичас мне действительно нужен ваш совет, надеюсь на ваше понимание и отзывчивость. Поиск юзать умею, но...

Ваши советы, наставления, критика
Добрый день. Сделал сайт - нужны Ваши советы и критика. На скриншоте. Помогите с оптимизацией - плохо ищется. Если что необходимо для...

Ваши советы по оптимизации сайта
Что можете посоветовать по оптимизации сайта http://podlodka.info


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru