PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (98): В начало « ... 74 75 76 77 [78] 79 80 81 82 ... » В конец

> Найдено сообщений: 1465
teddy Отправлено: 09 Июля, 2013 - 11:44:39 • Тема: Есть вопросы... • Форум: Вопросы новичков

Ответов: 17
Просмотров: 625
AlexAnder пишет:
что за бред

Это не бред... Я говорю то, что вижу своими глазами у себя на машине...

AlexAnder пишет:
в хроме всё нормально - пишет "404: referer not found!"

А у меня наоборот, пользователь получает доступ к файлу... Странная ситуация ))

Вообщем что бы не париться проще сделать редирект на главную страницу и все будет работать без лишних заморочек...
teddy Отправлено: 09 Июля, 2013 - 11:31:46 • Тема: Есть вопросы... • Форум: Вопросы новичков

Ответов: 17
Просмотров: 625
AlexAnder
Да не, я заметил одну особенность.. протестил сейчас через IE, всё нормально работает, а хром плюет на редирект... видимо здесь все зависит от особенностей браузера. Странно, но реально это так. В хроме даже при проверке на isset на наличие сессии даже в том случае, если её нет, выпадает ошибка которую ты указал выше. А IE делает редирект на главную страницу. Например site.ru/admin.php сработает редирект на site.ru(это в случае HTTP_REFERER)

AlexAnder пишет:
слишком толсто, есть типы поменьше

Экономим на спичках? ) Вполне удобно думаю. При регистрации не нужно создавать переменную которая будет содержать значение по умолчанию... Просто для каждого зарегистрированного пользователя role будет 0 и все.. А дальше уже работаем меняем при необходимости

P.S: у меня тоже денвер )
teddy Отправлено: 09 Июля, 2013 - 11:20:07 • Тема: Есть вопросы... • Форум: Вопросы новичков

Ответов: 17
Просмотров: 625
AlexAnder пишет:
я тебе про то что кто делает пользователям на сайте ссылки на админку?О_О она же видна только админам, а если пользователь вобьёт в адресную строку и клацнет ентер то и привет


Ничего не будет. Если запишет адрес в строку в клацнет энтер то сработает редирект.
AlexAnder пишет:
горесовет

Аргументируй Улыбка
teddy Отправлено: 09 Июля, 2013 - 11:02:46 • Тема: Есть вопросы... • Форум: Вопросы новичков

Ответов: 17
Просмотров: 625
назгул пишет:
А как это будет делаться при регистрации?

Очень просто ) создайте в БД role типа INT. При регистрации оно всегда будет равно 0. Соответственно цифра 0 будет приниматься как "обычный пользователь" Улыбка Но... если вы захотите сменить роль какому нибудь пользователю, тогда редактируйте через БД вручную роли - но это конечно же для начала. В дальнейшем можно и нужно будет сделать админку для присваивания ролей пользователям
teddy Отправлено: 09 Июля, 2013 - 10:53:21 • Тема: Есть вопросы... • Форум: Вопросы новичков

Ответов: 17
Просмотров: 625
AlexAnder
Значит дело было после любого вывода в браузер ) А так пользователя отправит туда, откуда пришел... Если приходил по прямой ссылки, то редирект сработает на главную страницу сайта
(Добавление)
назгул
Ну если сессии с ролями нет вообще, тогда это гости... Если сессия есть - смотрим какой она роли )

В момент авторизации мы ведь сверяем логин и пароль которые ввел пользователь с теми что в БД, ведь так? Паралельно нужно ещё выбрать role, но ни с чем не сверять его.. А сделать следующее: если логин и пароль совпали, тогда уже использовать роль выбранную из БД...

PHP:
скопировать код в буфер обмена
  1. if($login == $row['login'] and $password == $row['password'])
  2. {
  3.     $_SESSION['roles'] = $row['role'];
  4.     //как то так
  5. }


Кстати AlexAnder верно заметил. Забыл добавить, что редирект следует делать ДО любого вывода в браузер... А то будет ошибка
teddy Отправлено: 09 Июля, 2013 - 10:38:23 • Тема: Есть вопросы... • Форум: Вопросы новичков

Ответов: 17
Просмотров: 625
назгул
Да лан, пустяки ) Мне тоже ребята помогают здесь )

назгул пишет:
Но вот только не совсем понял про админку


Допустим у нас есть файл, где лежит код отвечающий за админку, пусть он назвается admin.php. В нем мы можем сделать соответствующую проверку:

PHP:
скопировать код в буфер обмена
  1. if($_SESSION['role'] != "admin")
  2. {
  3.     header("Location: index.php");
  4.     exit;
  5. }


Значение role должно храниться в БД и при авторизации должно записываться в сессию. Обычно роли обзывают цифрами. Например 0 - обычный пользователь, 1 модератор, 2 администратор...

Тоесть получается так - если значение в сессии, которая отвечает за роли пользователей в проекте НЕ равно admin, тогда отправляем пользователя на главную страницу. Когда скрипт видит header("Location: *"); он всё бросает, и переходит по указанному адресу.

exit нужно ставить для того, что бы код, который идет после редиректа не отработал в холостую. Можно конечно и без exit, ошибок не будет. Но считается хорошим тоном его использовать.

Так же можно вместо того, что бы отправлять пользователя на главную страницу сделать так, что бы его перебросило туда, откуда он и пытался попасть в админку.

header("Location: ".$_SERVER['HTTP_REFERER']);

Изначально в коде вообще лучше было бы проверить на наличии сессии авторизованного пользователя для полного спокойствия. Тоесть алгоритм такой:
1. При авторизации пользователя в проекте смотрим его роль, если это админ, то показываем файл admin.php, если нет, тогда не показываем (if else).

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

В первую очередь лучше проверить пункт номер 2...
teddy Отправлено: 08 Июля, 2013 - 21:29:03 • Тема: Есть вопросы... • Форум: Вопросы новичков

Ответов: 17
Просмотров: 625
назгул пишет:
Просто заносить текущие время в переменную, а её
заносить уже в базу данных?

Да. Функция называется date() - на всякий случай.

Можно ещё использовать UNIX_TIMESTAMP() при добавление данных в БД и форматировать при выводе с помощью функции date() - но это лучше оставить на будущее... сделайте пока минимум. Разница будет в том, что когда вы к примеру напишите date("d-m-Y H:i:s"); - то в БД отправится строка, которую вы не сможете отформатировать(изменить отображение даты(разве что дерактировать через БД вручную для каждой заметки, что не очень удобно). Но для начала вполне сойдет

назгул пишет:
Как сделать защиту для админки, чтоб доступ
был только у меня одного?


Сделайте доступы по ролям и при авторизации проверяйте, если это админ, показываем админку, если нет, тогда пользовательскую часть.

По поводу прямой ссылки, можно так же на странице админки сделать проверку, если нет к примеру сессии с ролью, которая должна быть только у админа, то делаем редирект на главную страницу, например.. или просто die()...

назгул пишет:
Что за не понятные символы в адресной
строке?

Это $_GET параметры. Если к примеру вы получаете данные из формы методом $_POST и атрибут name инпута автоматически становится ячейкой глобильного массива $_POST, в ссылке то, что идет после вопроса становится ячейкой массива $_GET(так будет легче понять).

Простой пример <a href="index.php?logout">Выход</a>

В данном случае мы получаем возможность использовать этот параметр. Тоесть получаем $_GET['logout']. Например в данном случае можно проверить на isset.

PHP:
скопировать код в буфер обмена
  1.  
  2. if(isset($_GET['logout']))
  3. {
  4.     unset($_SESSION['user']);
  5.     header("Location: index.php");
  6.     exit;
  7. }
  8.  

Так же $_GET параметров может быть несколько. name=value&name=value - но не до бесконечности... Лимит есть, ноот точную цифру не помню
teddy Отправлено: 07 Июля, 2013 - 12:28:58 • Тема: Регулярные выражения • Форум: Вопросы новичков

Ответов: 20
Просмотров: 827
Hapson пишет:
А вот mysqli у меня что-то не работает... почему-то. Подключены и mysql и mysqli, MySQL 5.5

Уверены?

PHP:
скопировать код в буфер обмена
  1. $mysqli = new mysqli("localhost", "root", "password", "dbName");
  2. var_dump($mysqli);
  3.  

Если результат var_dump будет object(mysqli), то значит все работает и проблема заключается только в синтаксисе )

Параметры при подключении указывайте свои, естественно )
teddy Отправлено: 07 Июля, 2013 - 12:09:39 • Тема: Регулярные выражения • Форум: Вопросы новичков

Ответов: 20
Просмотров: 827
EuGen пишет:
регулярное выражение нужно будет убирать в любом случае.

Да, я это и говорю ) как по мне, использование регулярки при вводе пароля не есть хорошо на мой взгляд, причины я описал выше )
teddy Отправлено: 07 Июля, 2013 - 11:59:18 • Тема: Регулярные выражения • Форум: Вопросы новичков

Ответов: 20
Просмотров: 827
EuGen
Спасибо за совет, Евгений )

Мой вариант - убрать регулярку и скормить пароль "солёному" md5 перед отправкой его в БД )

Таким образом мы получаем:
1. Свободный ввод пароля для пользователя
2. Исключаем к примеру, SQL иньекцию
3. Безопасное хранение паролей в БД(ну, если туда кто то проник это уже не есть хорошо то понятно, но хоть какие то палки в колёса взломщика мы уже понаставили)

Hapson
Hapson пишет:
А как MD5 работает с кириллицей?

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

А зачем вам в таком случае preg_match? Толку то от него нет, только проблемы для пользователя.. Вам в любом случае в итоге в БД запишется хеш...
teddy Отправлено: 07 Июля, 2013 - 11:42:01 • Тема: Регулярные выражения • Форум: Вопросы новичков

Ответов: 20
Просмотров: 827
EuGen
Исходное представление чего? )

Hapson пишет:
например для пароля, который может состоять из a-z A-Z 0-9 ! ? . , @ # $ % - _


Вот придет пользователь, захочет ввести пароль Русскими буквами, а ему всплывет ошибка, вот о чем я...

Поэтому думаю лучше md5 и с точки зрения безопасности и с точки зрения свободы ввода пароля для пользователей ) Всем хорошо...
teddy Отправлено: 07 Июля, 2013 - 11:24:58 • Тема: Регулярные выражения • Форум: Вопросы новичков

Ответов: 20
Просмотров: 827
PHP:
скопировать код в буфер обмена
  1. $password = $_POST['password'];
  2.  
  3.     if(!preg_match("/^[a-zA-Z0-9\!\?\.\,\@\#\$\%\_\\\-]+$/", $password))
  4.         {
  5.         echo "Что то не так";
  6.         }
  7.  

А вообще лучше для паролей использовать md5, не хорошо ограничивать пользователей в символах для ввода пароля...
teddy Отправлено: 03 Июля, 2013 - 11:11:35 • Тема: нужен примерчик (добавление и вывод по аяксу) • Форум: Вопросы новичков

Ответов: 6
Просмотров: 240
http://www[dot]youtube[dot]com/watch?v=9UxYTWO5vPo

Далее пишем Специалист AJAX (part 2 of 4) и т.д

Продолжение если не ошибаюсь должно быть в торрентах

Удачи
teddy Отправлено: 01 Июля, 2013 - 11:04:34 • Тема: Динамичное двумерное меню • Форум: Вопросы новичков

Ответов: 17
Просмотров: 659
DeepVarvar


Радость
Возможно они добавили яйца когда я ушел, никто этого не исключает ) но я готовил без яиц )


DelphinPRO пишет:
TITLE - заголовок и прочие поля

Ага, я просто для начала не установил его так как делал всё по минимуму... задачей в первую очередь было то, что бы привести скрипт в рабочее состояние.. у меня пока даже a href нет )

Спасибо за ещё один предложенный вариант, я обязательно посмотрю, только сейчас чуть отвлекся в другом направлении(не PHP), но как разгружусь - посмотрю что да как)
teddy Отправлено: 01 Июля, 2013 - 09:07:19 • Тема: Динамичное двумерное меню • Форум: Вопросы новичков

Ответов: 17
Просмотров: 659
LIME пишет:
нафига тебе JOIN

Где то месяц назад ходил на собеседку, одно из заданий было похожим... Нужно было создать структуру БД для похожей ситуации, тогда я составил одну таблицу и мне начали петь песни, что это не правильно типа получается каша и все такое...

LIME пишет:
а еще я бы наверное всетаки хранил его(меню) в виде готового сериализованного массива

Тоже интересный вариант, его наверное и возьму за основу )

Попробую всё переделывать...

Спасибо )

Страниц (98): В начало « ... 74 75 76 77 [78] 79 80 81 82 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB