Движок на PHP+MySQL
Я вот решил ваять движок для сайта(такой не большой портальчик), а т.к. я этого ни разу не далал у меня появились вопросы:
1. С чего начинать писать движок?
2. На что конкретно стоит обратить внимание в первую очередь?
3. А так же выслушаю советы по безопасности.
Заранее спасибо коллеги. :!!!:
А вообще если с ООП хорошо, то я бы посоветовал написать несколько классов, таких как работа с базой данных, класс парсинга шаблонов и вывода их на экран, класс обработки стандартных полей (ну например комментарии к разным разделам)...
потом на основе этих классов уже писать всё остальное...
а по безопасности всегда жди, что юзер введёт абсолютно не то, что от него просят... особенно обращай внимание на ограниченные выборки из бд (например, вывод какой-либо страницы новостей).. передавая в строке число, которое будет вставлено после LIMIT надо ждать, что взломщик введёт вместо числа что-нить типа UNION SELECT ... /* я обычно такие условия просто проверяю функцией is_numeric().
ну ещё на авторизацию пользователей надо обратить внимание...
ну вот вроде и всё.. хотя конечно не всё, но основное я думаю написал) удачи)
з.ы. потом дашь посмотреть творение )
Начал с админки, но возникли проблемы с авторизацией...
Админ вводит как обычно в форму логин и пасс, скрипт проверяет если логин и пасс верны, то пихаем енти переменные в сессию и кидаем в панель админа, иначе выводим ошибку о неверно введенных данных. Если данные введены неверно скрипт реагирует правильно, а если данные введены верно происходит вот что кидает обратно на логин-форму и говорит что данные введены неверно + Notice: Undefined index: login in w:\home\localhost\www\expengine\admin\index.php on line 30
Вот код:
$log="admin";
$pas="admin";
if ($_GET['act']=="go") {
if ($_POST['login']==$log && $_POST['passwd']==$pas) {
$_SESSION['user']=$_POST['login'];
$_SESSION['pass']=$_POST['passwd'];
echo "<META HTTP-EQUIV='REFRESH' CONTENT='1; admin.php'>";
} else {
echo "Login or pass incorrect!";
}
}
?>
такой небольшой портальчик
Я бы рекомендовал начать с теории и терминологии:
http://www.russ.ru/netcult/cathedra/20010329_sebrant.html
Лучше помоги с постом содержащим проблему и кусок кода.
ну значит у тебя имя поля для ввода называется не login а ещё как-то... поэтому $_POST['login'] считается незаданным...
Нет поле называется login
у меня все переменные правильны...
На счет Т3 я уже догнал, правда у меня это называлось планом :)
Начал с админки, но возникли проблемы с авторизацией...
Админ вводит как обычно в форму логин и пасс, скрипт проверяет если логин и пасс верны, то пихаем енти переменные в сессию и кидаем в панель админа, иначе выводим ошибку о неверно введенных данных...
Notice: Undefined index: login in w:\home\localhost\www\expengine\admin\index.php on line 30
Вот код:
$log="admin";
$pas="admin";
if ($_GET['act']=="go") {
if ($_POST['login']==$log && $_POST['passwd']==$pas) {
$_SESSION['user']=$_POST['login'];
$_SESSION['pass']=$_POST['passwd'];
echo "<META HTTP-EQUIV='REFRESH' CONTENT='1; admin.php'>";
} else {
echo "Login or pass incorrect!";
}
}
?>
Я конечно могу ошибаться, но мне кажется, что если вся форма передается через $_GET[], то и значения полей надо снимать с масива $_GET[].
Приветы!
Я вот решил ваять движок для сайта(такой не большой портальчик), а т.к. я этого ни разу не далал у меня появились вопросы:
1. С чего начинать писать движок?
2. На что конкретно стоит обратить внимание в первую очередь?
3. А так же выслушаю советы по безопасности.
Заранее спасибо коллеги. :!!!:
А если вопрос о том с чего, начать, то любой большой (и не большой тоже) серьезный проект начинается с построения базы данных. А потом на базу данных вешается сайт. И чем грамотнее спроектирована эта база, тем легче будет в будущем. Так что учи теорию баз данных. Вещь нудная, но ОЧЕНЬ полезная.
А если вопрос о том с чего, начать, то любой большой (и не большой тоже) серьезный проект начинается с построения базы данных. А потом на базу данных вешается сайт. И чем грамотнее спроектирована эта база, тем легче будет в будущем. Так что учи теорию баз данных. Вещь нудная, но ОЧЕНЬ полезная.
Спасибо за совет!
С БД вроде в ладах :)
А форма имеет метод POST к вашему сведению.
$log="admin";
$pas="admin";
if ($_GET['act']=="go") {
if(isset($_POST['login']) && isset($_POST['passwd'])) {
if ($_POST['login']==$log && $_POST['passwd']==$pas) {
$_SESSION['user']=$_POST['login'];
$_SESSION['pass']=$_POST['passwd'];
echo "<META HTTP-EQUIV='REFRESH' CONTENT='1; admin.php'>";
} else {
echo "Login or pass incorrect!";
}
}
}
?>
Меня смущает одновременно использование массивов $_GET и $_POST.
Меня тоже :)
и зря смущает. это вполне возможно.
вопрос только в другом - насколько нужно.
далее:
сумрок:
редирект делай хедером
echo session_id(); - и смотри теряется твоя сессия или нет
в сессиях храни _только_ ид пользователя, т.к.
- зачем тебе вообще его пароль там
- по хорошему все действия/права/... пользователя определяются его ид, а логин в будущем может потребоваться изменить
для начала думаю хватит
Типа если залогинился он говорит хеллоу админ, а если зашел просто на страницу admin.php он выдает просто hello, но факт не в выводе хелло а в том что он пускает на эту страницу...
Как это исправить? Я знал способ проверить сессию, правда забыл :(
Тэк-с, вроде авторизацию у меня хватило ума сделать :) тока вот я забыл как проверять правильность сессионых данных на странице админа?
Типа если залогинился он говорит хеллоу админ, а если зашел просто на страницу admin.php он выдает просто hello, но факт не в выводе хелло а в том что он пускает на эту страницу...
Как это исправить? Я знал способ проверить сессию, правда забыл :(
научись свои мысли оформлять нормальными словами - чтобы тебя все понимали
представим что в сессии ты хранишь uid (ид пользователя), тогда на _любой_ странице (на админ.рхр в том числе) проверяешь права (это уже будет зависеть от того как ты эти пава собственно раздаёшь) и выводишь то что пользователь должен увидеть
ps: "проверить сессию" print_r( $_SESSION );
isset( $_SESSION['var'] );
if ( $_SESSION['var'] === 'foo' )
выбирай
научись свои мысли оформлять нормальными словами - чтобы тебя все понимали
представим что в сессии ты хранишь uid (ид пользователя), тогда на _любой_ странице (на админ.рхр в том числе) проверяешь права (это уже будет зависеть от того как ты эти пава собственно раздаёшь) и выводишь то что пользователь должен увидеть
ps: "проверить сессию" print_r( $_SESSION );
isset( $_SESSION['var'] );
if ( $_SESSION['var'] === 'foo' )
выбирай
Спасибо зерокул. Извиняюсь конечно, что выражал свои мысли не совсем понятно, я торопился.
За то теперь у меня все работает. =) Сейчас буду писать скрипт новостей.