Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP для начинающих

Войти
Регистрация
Восстановить пароль
 
Roman2288
1 / 1 / 0
Регистрация: 27.05.2015
Сообщений: 83
#1

Оцените качество кода новостного сайта - PHP

10.10.2015, 17:47. Просмотров 320. Ответов 12
Метки нет (Все метки)

Пишу для практики небольшой новостной сайт. Пока на стадии написания авторизации. Суть у меня пока такая: Есть главный файл index.htm в нем только форма для входа и одновременно(пока) для регистрации, в поля вводятся пара логин/пароль, проверяется наличие данной пары в бд, если нету то записывается. Использовал сессию для сохранения вводимых данных, в show.htm просто пока для себя отображаю, что было введено пользователем, проверка входных параметров в этом же файле. Оцените по возможности. Укажите на ошибки, дайте какое - нибудь наставление или натолкните на правильную мысль.) Файлы пхп разместил в отдельной директории. В Htm файлах стараюсь только подключать нужные файлы. Оцените код)
ndex.htm
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="content-type" content="text/html" />
    <meta name="author" content="admin" />
 
    <title>вход</title>
</head>
<body>
    <form action="php/session.php" method="post">
        <label>Логин:<br /><input type="text" name="login" value="<?php echo filter_var($_SESSION['login'], FILTER_SANITIZE_SPECIAL_CHARS); ?>" /><br /></label>
        <label>Пароль:<br /><input type="password" name="pass" value="<?php filter_var($_SESSION['pass'], FILTER_SANITIZE_SPECIAL_CHARS); ?>" /><br /></label>
        <label><button type="submit">Войти</button></label>
    </form>
</body>
</html>
session.php
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
session_start();
$whitelist = array(
        'login' => 'login',
        'pass' => 'pass'
);
$incoming = array_keys(array_intersect_key($_POST, $whitelist)); //Объясните эту строку, я не совсем понимаю, что //она делает
foreach($whitelist as $key){
    $_SESSION[$key] = $_POST[$key];
}
header('Location: show.htm');
show.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
<?php
session_start();
$login = filter_var($_SESSION['login'], FILTER_SANITIZE_SPECIAL_CHARS);
$pass = filter_var($_SESSION['pass'], FILTER_SANITIZE_SPECIAL_CHARS);
require_once ('db.php');
?>
<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="content-type" content="text/html" />
    <meta name="author" content="admin" />
    <title>Результат</title>
</head>
<body>
<table>
    <tr>
        <?php echo $login; ?>
    </tr>
    <tr>
        <?php echo $pass; ?>
    </tr>
</table>
    <form action="../index.htm" method="post">
        <input type="hidden" name="login" value="<?php echo $login; ?>" />
        <input type="hidden" name="pass" value="<?php echo $pass; ?>" />
        <button type="submit">Редактровать</button>
    </form>
<?php require_once('users.php'); ?>
</body>
</html>
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2015, 17:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оцените качество кода новостного сайта (PHP):

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

Оценить качество кода написанного фреймворка - PHP
Прошу оценить то что пока написал: https://github.com/DeadMoras/tc-framework Роутеры - до этого свои были, вроде работали, но там...

Литература по написанию новостного парсера - PHP
Всем доброго времени суток. С чего вообще начать писать парсер новостей с других сайтов? Что можно почтитать? И с чего вообще начинать...

Сканирование кода сайта - PHP
Здравствуйте. Я ооооочень начинающий в программировании на PHP, но мне очень нужна весьма сложная функция. Необходимо выполнить проверку...

Получение HTML кода произвольного сайта - PHP
Здравствуйте. Не могу понять где происходит затык. Пытаюсь получить HTML код произвольного сайта, но выскакивает ошибка (отказ в доступе)....

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

12
Roman2288
1 / 1 / 0
Регистрация: 27.05.2015
Сообщений: 83
12.10.2015, 18:10  [ТС] #2
Просмотров пол сотни) Кто - нибудь прокомментируйте мой код) Выразите свое мнение, покритикуйте меня.
0
tolimadokara
743 / 405 / 61
Регистрация: 24.10.2012
Сообщений: 2,995
12.10.2015, 18:38 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Roman2288
PHP
1
$incoming = array_keys(array_intersect_key($_POST, $whitelist)); //Объясните эту строку, я не совсем понимаю, что //она делает
честно говоря, и я тоже не знаю но, вот

http://php.net/manual/ru/function.array-keys.php

(PHP 4, PHP 5)

array_keys — Возвращает все или некоторое подмножество ключей массива
http://php.net/manual/ru/function.array-intersect-key.php

(PHP 5 >= 5.1.0)

array_intersect_key — Вычислить пересечение массивов, сравнивая ключи
php.net вам в помощь если какая то функция не понятная.

это Ваш комментарий в коде?
1
Roman2288
1 / 1 / 0
Регистрация: 27.05.2015
Сообщений: 83
12.10.2015, 19:28  [ТС] #4
да, мой)
0
tolimadokara
743 / 405 / 61
Регистрация: 24.10.2012
Сообщений: 2,995
12.10.2015, 19:41 #5
вроде форма - как форма. скрипт - как скрипт. возможно вам стоит как то красивей оформлять код, если это возможно

http://habrahabr.ru/post/38214/
http://framework.zend.com/manual/1.1...ing-style.html
http://svyatoslav.biz/misc/psr_translation/

Вот я никогда не использовал встроенный механизм сессий в php через $_SESSION. Мне это как то не понять. Всегда создавал cookie в браузере пользователю и сохранял строку сессии в таблице. И все работало. Хорошо это либо не правильно кто его знает.
1
Roman2288
1 / 1 / 0
Регистрация: 27.05.2015
Сообщений: 83
12.10.2015, 20:57  [ТС] #6
хм. Ну я для практики пробую. А так лучше подготовленные выражения, конечно, использовать и PDO , естественно на ООП, что мне пока сложно освоить без должной практики. Потом на yii2 можно попробовать тоже самое проделать.
0
Jewbacabra
Эксперт PHP
2813 / 2400 / 902
Регистрация: 24.04.2014
Сообщений: 7,246
12.10.2015, 22:25 #7
Цитата Сообщение от Roman2288 Посмотреть сообщение
//Объясните эту строку, я не совсем понимаю, что //она делает
Сам написал и не понял что делает?
Получает ключи из пост запроса, которые определены в массиве $whitelist. Вот только в 8 строчке вместо $whitelist должно быть $incoming.
Нет смысла постоянно фильтровать переменные из сессии - клиент в них не может сам положить значения, проще 1 раз отфильтровать и положить в сессию уже отфильтрованное.
Нет проверок на существование в сессии ключей login и pass
И как я понимаю самое интересное происходит внутри db.php, а его тут нет
И мне кажется что логичнее пользователя добавлять до редиректа.

Не по теме:

Цитата Сообщение от tolimadokara Посмотреть сообщение
Вот я никогда не использовал встроенный механизм сессий в php через $_SESSION. Мне это как то не понять.
Если нравится создавать себе трудности, а потом героически их преодолевать, то почему бы и нет.

1
Jodah
12.10.2015, 22:32
  #8

Не по теме:

Цитата Сообщение от tolimadokara Посмотреть сообщение
Вот я никогда не использовал встроенный механизм сессий в php через $_SESSION. Мне это как то не понять. Всегда создавал cookie в браузере пользователю и сохранял строку сессии в таблице. И все работало. Хорошо это либо не правильно кто его знает.
Собственно, механизм сессий работает также, только сам за вас генерирует сессию и определяет пользователя. Из плюсов - удобство хранения временной информации вроде корзины или id/логина/пароля (шифрованного, конечно) в массиве и обращаться к ним через $_SESSION['user_id']. Главное неудобство - невнятное время работы, ограниченное слишком малыми сроками, да ещё и закрытием браузера. Для меня это критично, поэтому делаю как вы - только куки.

0
Roman2288
1 / 1 / 0
Регистрация: 27.05.2015
Сообщений: 83
13.10.2015, 07:50  [ТС] #9
Вот db.php )
PHP
1
2
3
4
5
<?php
$mysqli = mysqli_connect("localhost", "root", "", "users");
if (mysqli_connect_errno($mysqli)) {
    echo "Не удалось подключиться в бд: ", mysqli_connect_error();
}
Добавлено через 49 секунд
users.php
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
$SelectFromDb = "SELECT * FROM people WHERE name = '$login'";
    $res = mysqli_query($mysqli,$SelectFromDb);
    $num = mysqli_num_rows($res);
        if($num == 0){
    $querry = "INSERT INTO people(name, pass, email) VALUES('$login', '$pass', '$email')";
    $result = mysqli_query($mysqli, $querry) or die("Ошибка записи!");
        }
        else {
            echo include('400.php');
        }
Добавлено через 10 минут
2 - ую строку в users.php исправил на
PHP
1
$SelectFromDb = "SELECT * FROM people WHERE name = '". $login . "'"; //надежней будет думаю)
0
Jewbacabra
Эксперт PHP
2813 / 2400 / 902
Регистрация: 24.04.2014
Сообщений: 7,246
13.10.2015, 10:00 #10
Цитата Сообщение от Roman2288 Посмотреть сообщение
надежней будет думаю)
одинаково, надежней было бы через подготовленные запросы
1
g3nchik
6 / 6 / 0
Регистрация: 17.08.2012
Сообщений: 170
13.10.2015, 19:44 #11
Нужно экранировать символы в $login, $pass, $email при вставке..
Либо же юзать PDO, что более мудрое решение.
И не нужно этого:
PHP
1
"SELECT * FROM people WHERE name = '$login'"
Более осмысленно было бы просто показывать кол-во юзеров
PHP
1
"SELECT COUNT(1) FROM people WHERE name = '$login'"
1
Roman2288
1 / 1 / 0
Регистрация: 27.05.2015
Сообщений: 83
13.10.2015, 21:20  [ТС] #12
Можно ли здесь где - то использовать функции или классы? Что - то, чтобы приблизиться к ООП и стандартам написания php - скриптов :-) Ну очень мне хочется развиваться в этом направлении, стараюсь как могу)
0
Jewbacabra
Эксперт PHP
2813 / 2400 / 902
Регистрация: 24.04.2014
Сообщений: 7,246
13.10.2015, 22:08 #13
Для начинающих правда будет несколько сложновато, но можно попробовать:
http://www.ozon.ru/context/detail/id/5648968/
http://www.ozon.ru/context/detail/id/2457392/
1
13.10.2015, 22:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2015, 22:08
Привет! Вот еще темы с ответами:

Копировать часть кода php на другую страницу сайта - PHP
Здравствуйте. Задача вывести единицы измерения цены товара, которые показываются в карточке товара в список товаров категории. Напр. &quot;10...

Конфликт PHP-кода на двух разных ОС и локальных серверах при создании сайта - PHP
Использовал сборку на Windows OpenServer и на OS X использовал MAMP. Такое дело. Программирование сайта на локальном сервере. Все сделал,...

Оцените качество кода - C++
Недавно начал усиленно изучать C++ и Qt и решил написать один более-менее практический пример, а именно чат бота. Пока сделал самый...

Создание новостного сайта - C# ASP.NET
Здравствуйте! Подскажите пожалуйста, как такое реализовать? Есть сайт состоящий из главной страницы, страницы самой новости и страницы...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.