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

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

08.02.2016, 13:49. Показов 690. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru