Оценка кода скрипта...

Печать RSS
331

Автор
Чатланин
0
Всем привет. Вот уже где то неделя прошла, с тех пор как я начал писать на php. Собственно решил написать небольшую админку, других идей для начала не было. Впрочем о скрипте (если так можно сказать о нем ). Есть админка через которую можно создавать страницы и разделы сайта. Ну и естественно эти разделы и страницы выводятся на сайте. Скрипт прикрепляю. Оценивать грубо говоря нечего наверное, ведь за неделя изучения php, что можно написать. Собственно жду от вас критики, что и как лучше сделать, что как выводить. И сразу же такие вопросы.
1. Реализация админки такова. Вы переходите по адресу site.ru/admin.php, вводите там код, если он совпал с тем, что в базе, то для вас открывается сессия, если нет, то вас посылают. И дальше на страницах админки просто проверяется открыта ли сессия. Вопрос: Можно ли так сделать. Или надо как то по другому сделать.

Установка: Пишите данные от базы в файле config.php, переходите по адресу Site.ru/install.php, вводите код который будет стоять на входе в админку, нажимаете ок. Если все прошло успешно, удаляете файл install.php.
Прикрепленные файлы:
adminka.zip (18.14Kb)
Изменил: Абдула (28.04.2013 / 11:51)
I

Пришелец
0
Итак.

1. Не храни конфиг доступным из веба. Поставь запрет на его просмотр через .htaccess. Запомни - системные файлы нужно держать в закрытой папке.

2. Прочитай мануалы по составлению SQL-запросов. Те, что в install.php неправильные. Во-первых на большинстве серверов стоит MySQL версии > 5.5, поэтому нужно использовать ENGINE, а не TYPE. Во-вторых AUTO_INCREMENT можно использовать когда есть PRIMARY KEY.

3. Используй функцию mysql_result вместо mysql_num_rows.

4. Проверка в админке не пойдет. Сам подумай, если хакер узнает название сессии auth, то он сможет подставить в неё любое значение и будет авторизован.

5. В файле page.php выводи шапку после проверки на существование записи, ибо:
Warning: mysql_result() expects parameter 1 to be resource, boolean given in ***********\tests\head.php on line 4
// http://tests/page.php?id=

6. При создании/редактировании учитывай пробелы функцией trim.
Изменил: iNeeXT (28.04.2013 / 13:03)
Автор
Чатланин
0
2. iNeeXT, Во-вторых AUTO_INCREMENT можно использовать когда есть PRIMARY KEY. Вот это не очень понял, что ты хотел сказать.

На счет авторизации. Так надо каждый раз сверить содержимое $_SESSION[auth] с тем что есть в базе? Я правильно понял?
P.S. Спасибо...
Изменил: Абдула (28.04.2013 / 13:12)
I

Пришелец
0
3. LN Donokate, вот здесь пояснение. Если в твоей таблице нету уникального ключа (PRIMARY KEY), то использование AI приведет к ошибке.

Чтобы не создавать "груз" на мускул вообще не нужно хранить пароль в таблице (если не предусмотрено паблишеров или др. админов), а так верно - нужно все время проверять пароль.

Добавлено через 03:11 сек.
А так не плохо, все таки только начал писать на PHP.
Изменил: iNeeXT (28.04.2013 / 13:17)
Автор
Чатланин
0
4. iNeeXT, `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY? что тут исправить? че то никак не могу въехать в то, что ты говоришь

и еще. пароль хранить в файле?
Изменил: Абдула (28.04.2013 / 13:22)
I

Пришелец
0
LN Donokate (28 Апреля 2013 / 11:21)
4. iNeeXT, `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY? что тут исправить? че то никак не могу въехать в то, что ты говоришь

и еще. пароль хранить в файле?
Там все правильно, вот:
	<?php
$query = array("CREATE TABLE `admin` (
		`pass` VARCHAR(128) NOT NULL
		) TYPE = MyISAM AUTO_INCREMENT=1;",

AUTO_INCREMENT=1 не нужно.

Да, можно хранить его в переменной.
Изменил: iNeeXT (28.04.2013 / 13:28)
Автор
Чатланин
0
6. iNeeXT, Спасибо. Все понял .
I

Пришелец
0
ZiGR (28 Апреля 2013 / 11:30)
2. iNeeXT, mysql_result уже давно устарела, mysql_fetch_row надо бы использовать.
Тогда и я не просветлен smile
Автор
Чатланин
0
8. ZiGR, $name = mysql_fetch_row($result);
echo $name[1]; ???

думал так легче
$name = mysql_result($result, 0, 'name');
ну или так
$name = mysql_result($result, 0, '2');
или так
$result = mysql_query("SELECT `name` FROM `page` WHERE `id` = $_REQUEST['id']");
$name = mysql_result($result, 0); Вроде не ошибся
Изменил: Абдула (28.04.2013 / 13:43)
Автор
Чатланин
0
11. ZiGR, Спс. Учту.
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск