Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> страница администрирования, показывать по паролю 
:(
    Опции темы
lovermann
Дата 17.1.2005, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 28.12.2004
Где: Прага

Репутация: 1
Всего: 8



1) Делаешь форму для ввода логина и пароля. (она у тебя уже есть).
2) Если логин и пароль верные -- начинаешь сессию и присваиваешь какой-либо сессионной переменной какое-то значение (см. мой kontrola.php, только вместо ГЕТ -- ПОСТ)
3) В начале каждой страницы закрытой зоны проверяешь, установлена ли эта сессионная переменная. Если установлена - отображаешь, что надо, если нет, пуляешь на страницу с формой для входа (см. моё сообщение от 16.1.2005, 18:15).


PM WWW ICQ   Вверх
Gold Dragon
Дата 17.1.2005, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Всё понял, всем большое спасибо..


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
lovermann
Дата 17.1.2005, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 28.12.2004
Где: Прага

Репутация: 1
Всего: 8



Я свои мысли последней инстанцией не делаю -- кому есть, что сказать/подправить/исправить -- пожалуйста. Я ведь сам только учусь.
PM WWW ICQ   Вверх
Gold Dragon
Дата 17.1.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Самое лучшее это выложить готовый код с описанием, т.е. файл такой-то, делает то и то... Я что-то делаю, вроде всё работает, но столько уже нагородил, никакой оптимизации кода smile


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Alx
Дата 17.1.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Red Dragon
значешь я че понял - вот начинаешь писать скрипт - так не хочется писать грамотно, лишь бы побыстрее, а потом, когда приходит время оптимизации - нет ничего хуже!


--------------------
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 17.1.2005, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Вот и хочу, чтоб кто-нибудь выложил шаблон.... smile а то у меня такой карявый код получается, что сам путаюсь


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sardar
Дата 17.1.2005, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



Довольно кривой пример, но реально поставлен и запущен smile
Ниже кусок кода из начала index.php - единственная точка входа. Пароль лежит в файле в директории защищённой апачем, так захотел закачик, дабы не было траблов с юзерами(суеверие), всё остальное в БД. Шаблонизаторами не пользуюсь ибо вёрстка тоже моя и ни кем в будущем вроде менятся не будет. Расставил коментарии.
Код
//все инклюды проверяют эту константу, если её нет, то посылают юзера на вход.
define("PROCESS", true);
require_once("./include/config.php");

ob_start("ob_gzhandler"); //по умолчанию не включена, потому врубаем
session_set_cookie_params(0); //cookie current session only
session_start();
//check if we are logged in
if(!isset($_SESSION['logged_in'])||$_SESSION['logged_in']!=true) { //если не залогинен
 include_once "./templates/login.inc"; //здесь несколько функций выдающих формы входа и сообщений
 if (!isset($_POST['login_user'])||!isset($_POST['login_pass'])) { //если не пришли данные
   login_make_form(false); //например форма входа
   exit();
 }
 ignore_user_abort(true); //let us do the work without problems...
//запретить одновременный доступ с двух компов
 if(file_exists("./sec/.tempdb")&&(time()-filemtime("./sec/.tempdb"))<$login_time_out) { //1 hour
    $fp=fopen("./sec/.tempdb","rb"); //для этого юзаем файл - лок
    @flock($fp, LOCK_SH);
    $ipc=trim(fread($fp, 1024));
    fclose($fp);
    if($ipc!=$_SERVER['REMOTE_ADDR']) {
       session_destroy();
       login_message_only_one();
       exit();
    }
 }
 sleep(3); //что бы брут форсом не брали, простому юзеру ничего от 3 сек. не будет
 if(!file_exists("./sec/pass.db")) exit("Critical Error: can't find password DB");
 $fl=file("./sec/pass.db"); //да, юзер в файле, не надо меня ругать =)
 if(trim($fl[0])==""||trim($fl[1])=="") exit("Critical Error: password file is damaged");
 if(trim($_POST['login_user'])==trim($fl[0]) && md5(trim($_POST['login_pass']))== trim($fl[1])) {
    $_SESSION['logged_in']=true;
    $_SESSION['logged_at']=time();

    $fp=fopen("./sec/.tempdb","wb");
    @flock($fp, LOCK_EX);
    fwrite($fp,$_SERVER['REMOTE_ADDR']);
    fclose($fp);

    login_message_logged_in(); //post data flush
 } else login_make_form(true);
 ob_end_flush(); //flush all messages en forms
 exit();
}

//обновим лок, этакая реализация семафоров =)
$fp=fopen("./sec/.tempdb","rb");
@flock($fp, LOCK_SH);
$ipc=trim(fread($fp, 1024));
fclose($fp);
if($ipc!=$_SERVER['REMOTE_ADDR']) { //you was to long away...
  session_destroy();
  include_once "./templates/login.inc";
  login_message_only_one();
  ob_end_flush();
  exit();
}

//ну а дальше открываем соединение с БД и инклюдим запрашиваемый файл



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Alx
Дата 18.1.2005, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



вот что мне отвечает на код
Код

if ($dataRight)
{echo "<b style='color:green;'>Авторизация прошла успешно!</b><br>";
session_start();
$_SESSION['user_login'] = $_POST["login"];
header ("Location: Admin.php");
exit;
}


Цитата
Warning: session_start() [function.session-start]: open(/tmp\sess_ab121f77f2ac1fca7ae7057412cb91cd, O_RDWR) failed: No such file or directory (2) in H:\home\alx\www\portfolio\scripts\php\voting\index.php on line 77

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at H:\home\alx\www\portfolio\scripts\php\voting\index.php:7) in H:\home\alx\www\portfolio\scripts\php\voting\index.php on line 77

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at H:\home\alx\www\portfolio\scripts\php\voting\index.php:7) in H:\home\alx\www\portfolio\scripts\php\voting\index.php on line 77

Warning: Cannot modify header information - headers already sent by (output started at H:\home\alx\www\portfolio\scripts\php\voting\index.php:7) in H:\home\alx\www\portfolio\scripts\php\voting\index.php on line 79

Warning: Unknown(): open(/tmp\sess_ab121f77f2ac1fca7ae7057412cb91cd, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0


smile


--------------------
PM MAIL WWW ICQ   Вверх
Irokez
Дата 18.1.2005, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



1) неправильно прописана директория где должны храниться файлы сессии
2) посылаешь хедеры после вывода в браузер
PM   Вверх
Alx
Дата 19.1.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Цитата(Irokez @ 18.1.2005, 22:18)
1) неправильно прописана директория где должны храниться файлы сессии

а где их вообще прописывать? вот весь код, который связан с этой ерундой я показал... остально не касается, их ещё надо где-то прописывать?


--------------------
PM MAIL WWW ICQ   Вверх
Irokez
Дата 19.1.2005, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Alx
создай директорию или укажи существующую, к примеру c:\temp (винда), /tmp (*никс), потом ее прописываешь в конфигах пхп:
session.save_path = c:\temp
session.save_path = /tmp
или можешь в ходе работы скрипта:
session_save_path('c:\temp') , но это прописываешь до session_start(), т.е. иницилизации сессии, но лучше первый вариант - прописать в конфигах
PM   Вверх
Alx
Дата 20.1.2005, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Цитата(Irokez @ 18.1.2005, 22:18)
2) посылаешь хедеры после вывода в браузер

а что делать? тогда придётся через JS. там же вот как - в одно м случае echo в определённом месте, в другом - переход.


--------------------
PM MAIL WWW ICQ   Вверх
The MASTER
Дата 20.1.2005, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Old master)
**


Профиль
Группа: Участник
Сообщений: 862
Регистрация: 19.7.2004
Где: Санкт-Петербург

Репутация: -1
Всего: 5



Я здесь выкладывал небольшой скрипт авторизации но IZATOP к сожалению удалил, но он у меня остался вот:

Код

<?php
if (isset($login) == false) { $login = ""; }
if (isset($password) == false) { $password = ""; }
$v = "<center><br><b><font color=#7F9DB9>Script Writen by MASTER ©2005</font></b>";
if (
$login == "1" &&  ##здесь логин
$password == "1" ##здесь пароль
)
(
print "<br><center>Пароль введён правильно</center>");
else {
echo "<br><br><center>
<table cellspacing=4 cellpadding=3 width=300 id='login'>
<tr><td colspan=2>
<form action='index.php' method=post>
<tr><td colspan=2>Введите Логин: </td>
<td align=right>
<input name='login' type=text align=right style='width:150' id='input'></td></tr>
<br>
<tr><td colspan=2>Введите пароль: </td><td align=right>
<input name='password' type=password align=right style='width:150' id='input'></td></tr>
<br>
<tr><td colspan=2><input type='submit' value='Вход' style='width:100' style='height:22' id='input'>
</td></tr></td></tr></table></center>
</body>
</html>";}
echo "$v";
?>

PM MAIL WWW ICQ   Вверх
penizillin
Дата 21.1.2005, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 10.11.2004

Репутация: 8
Всего: 9



замечательный скрипт. "в топку!" (забыл, чье)
PM MAIL ICQ   Вверх
Gold Dragon
Дата 21.1.2005, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Ну и код smile


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.