Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1 2 3 4 ... >>

Общие вопросы новичков

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#11
Про .htaccess напишу ок. про авторизацию тоже. а чтобы сессии работали надо перед работой с ними их инициализаровать

 1 
 2 
<?php session_start();?>

и только потом можно с ними работать. другими словами если вы хотите повсемесно работать с сессией то вам надо в начале каждого файла ее инициализаровать как написанно выше. А еще лучше делать это в одном файле а его везде подключать

 1 
 2 
<?php include_once 'sessions.php';?>

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#12
Ну это понятно, просто, я думал, что в в сессиях при их использовании, можно закрыть доступ на страницу не прошедшему авторизацию.
Я это представляю себе примерно так:
Обработка
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
<?php <?php
session_start
();

// Описание переменных пропускаем

if ($_POST['password'] == $password && $_POST['login'] == $login)  // проверяем логины и пароли
    
$_SESSION['id'] = 1// устанавливаем ключ ID для сессии авторизованного
    
header("Location: ../main.php"); // отправляем на закрытую страницу
else  
  
$_SESSION['id'] = 0// устанавливаем ключ ID для сессии неавторизованного
  
header("Location: ../index.php"); // отправляем обратно на авторизацию?>

в нужном файле:
 1 
 2 
 3 
 4 
 5 
 6 
 7 
<?php session_start();
if (
$_SESSION['id'] = 1)  // проверяем сессию (вот думаю, стоит ли приписывать isset?)
    
{ } // просто показываем содержимое страницы, так как юзер получил правильный ключ
else
 { 
 
header("Location: ../index.php"); // Отправляем на авторизацию
}?>

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#13
Верно ли это будет работать?

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#14
будет но както это не по понятиям :|

ты выше говорил о том что будешь брать данные о юзерах из базы вот и бери их оттуда. Если нашлись данные с такой парой логин/пароль то все данные этого юзера и пихай в сессию.

 1 
 2 
 3 
 4 
 5 
 6 
<?php if ($q mysql_query("SELCT * FROM users WHERE pass=$_POST['pass'] AND login=$_POST['login'] LIMIT 1"))  // проверяем логины и пароли
    
$_SESSION['user'] = mysql_result($q0); // устанавливаем ключ ID для сессии авторизованного
    
header("Location: ../main.php"); // отправляем на закрытую страницу
else  
  unset(
$_SESSION['user']);
  
header("Location: ../index.php"); // отправляем обратно на авторизацию?>

а дальше на других страницах


 1 
 2 
 3 
 4 
 5 
 6 
 7 
<?php session_start();
if (!empty(
$_SESSION['user']['id']))  // проверяем сессию (вот думаю, стоит ли приписывать isset?)
    
{ } // просто показываем содержимое страницы, так как юзер получил правильный ключ
else
 { 
 
header("Location: ../index.php"); // Отправляем на авторизацию
}?>


ну таког плана. это я утрированно все пишу, чисто чтобы смысл передать.

Добавлено 2010.10.06 15-03

естественно все что пришло от юзера перед запросом квоть, а то туда могут все что угодно написать и если без проверки пихать все в запрос это будет угроза безопасности

Отредактировано автором 6 Окт 2010
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#15
Я вот не понял это:
 1 
 2 
<?php $_SESSION['user'] = mysql_result($q0);?>
и
 1 
 2 
<?php !empty($_SESSION['user']['id']?>
В последнем я не нашел, где задавался id

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#16
Ну тут я немного ошибся. что-то типо такого надо

 1 
 2 
<?php $_SESSION['user'] = mysql_fetch_array($q);?>

тогда в $_SESSION['user'] будет массив состоящий из всей записи найденного в бд юзера. Обычно это ID, NAME, STATUS, EMAIL, и т.д.

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#17
И вот ещё спросить хотел, как прикрутить сюда ещё проверку группы и верное отображение прав для групп
 1 
 2 
 3 
 4 
 5 
 6 
<?php if ($q mysql_query("SELCT * FROM users WHERE pass=$_POST['pass'] AND login=$_POST['login'] LIMIT 1"))  
    
$_SESSION['user'] = mysql_result($q0);
    
header("Location: ../main.php");
else  
  unset(
$_SESSION['user']);
  
header("Location: ../index.php");?>

Если по русски, то идея такова:
Есть 100% не пустые поля в таблице юзеры:
id login password mail group
group может быть равен 0(юзер), 1(модератор), 2(админ) или 3(гл. админ) и назначается непосредственно мною(админом)
Вот мы увидели и нашли логин и пароль, теперь мы должни взять эту строку и сделать так:
Выбрать из строки, где логин и пароль равны найденному поле group
Если group == 0, то вернуть на главную (там уже с джавой попробую разобраться и вывести ему меседж, что у вас нет прав, просматривать админ-панель)
потом 2 варианта, elseif или просто новый if. Выбираю новый if
если group == 1 то присвоить $_SESSION['group'] = 1 переместить на нужную страницу, на странице каждая ссылка на модуль, должна будет быть с
 1 
 2 
 3 
<?php if ($_SESSION['group'] = or $_SESSION['group'] = or $_SESSION['group'] = 3) { echo "LINK";  } // для общедоступного
if ($_SESSION['group'] = or $_SESSION['group'] = 2) { echo "";  } elseif ($_SESSION['group'] = 3) { echo "Link"; } // для только гл. админа
#Возможны другие вариации, ну это уже логично.
?>
так? Но вот я хочу заделать эти все линки в шаблонные переменные, вставляемые не инклудом, а, к примеру, {menu}, от чего будет выводиться все линки.

Мысли в том направлении? Правильно, вообще, думаю? Получится ли таким способом?

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#18
ну если чисто цифрами будет поля group то можно и так проверять

 1 
 2 
<?php if ($_SESSION['user']['group'] < 2header(); die();?>
заметь после вызова хеадер я вызываю die() это обязательно иначе будет серьезная угроза безопасности, так как хедер не всегда может отработать, это всего лишь заголовок.

если делать так
 1 
 2 
<?php $_SESSION['user'] = mysql_fetch_array($q);?>
то $_SESSION['user'] будет содержать всю инфу о юзере из бд, в том числе group


На счет шаблонов
 1 
 2 
 3 
 4 
<?php //это файл шаблона. в нем например метки типа {MARKET}
$templ file_get_contents('template.html');
//теперь все метки будут замененны на значение переменной $market
$templ str_replace('{MARKET}'$market$templ);?>

Отредактировано автором 6 Окт 2010
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#19
 1 
 2 
 3 
<?php <?php 
$templ 
file_get_contents('template.html'); // можно про это подробней?
$templ str_replace('{MARKET}'$market$templ);?>  // можно про это подробней??>

Первое - он достает контент из шаблона и инклудит в документ с данным скриптом? А php скрипты, тогда куда вставлять? К примеру, обработки сессий.
Второе - это функция, которая будет менять {MARKET} на значение переменной $market, а зачем тут ещё $templ?
[/b]

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#20
skad0 пишет:
Второе - это функция, которая будет менять {MARKET} на значение переменной $market, а зачем тут ещё $templ?
$templ - это где менять. тоесть в какой переменной находится текст над которым необходимо произвести действие

 1 
 2 
<?php $templ file_get_contents('template.html'); // можно про это подробней??>

Это просто функция которае не инклудит файл а кладет его содержимое в переменную. В данном случае переменная $templ будет содержать текст из шаблона.

А PHP скрипты в шаблон так просто не вставишь. Но если уж сильно надо то можно вставить HTML код в PHP файл типа так

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
<?php if ($q mysql_query("SELCT * FROM users WHERE pass=$_POST['pass'] AND login=$_POST['login'] LIMIT 1"))  {
?>

тут любой HTML код
<?php
} else {  
?>
тут любой HTML код
<?php
 
}?>
[/php]

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)
1 2 3 4 ... >>
Сейчас online: 46. Зарегистрированных: 2. Гостей: 44.