[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: админка для мини сайта
Rustam Karimov
Как создать админ. часть, как сделать так чтобы на страницу можно было зайти, только после того как введен пароль и имя пользователя, то есть, есть форма для ввода данных и кнопка после ввода идет проверка с базой в случае совпадения дается доступ к странице. (в базе 3 поля id, log ,pass), (на странице меню для редактирования контента сайта). На данном сайте нашел, но там формочка появляется для ввода, а мне надо что бы был ввод на странице, потом открытие страницы админа.


<?php
$db=mysql_connect("","","");
mysql_select_db("allbook",$db);
if(isset($_POST['user'])) {$user=$_POST['user']; if ($user== ''){unset($user);}}
if(isset($_POST['pass'])) {$pass=$_POST['pass']; if ($pass== ''){unset($pass);}}
if (isset($user)&& isset($pass))
{
$sql="select*from users where user='".$user."'";
$result=mysql_query($sql);
$usr=mysql_fetch_array($result);}
if ($usr['pass']==md5($pass))



а дальше как!!!
?>




как в случае правильного ввода открыть страницу админа



Спустя 1 минута, 31 секунда (29.03.2009 - 01:10) Семён написал(а):
Ответ: Открыть блокнот, вооружиться учебником "Введение в PHP" и начать делать, используя SESSION

Спустя 1 день, 15 часов, 42 минуты, 36 секунд (30.03.2009 - 15:53) anonymouse написал(а):
Rustam Karimov
Семён прав - самое крутое это сессий...
я тоже когда думал как устроить авторизацию долго себе ломал голову.
Теперь работаю с СЕССИЯМИ и так круто - маленький пример кода.


PHP
if(isset($_POST['login']))
    {
$username=htmlspecialchars($username=addslashes($_POST['username']));
$password=md5($password=htmlspecialchars($password=addslashes($_POST['password'])));
$username=strtolower($username);

$q1=mysql_query("SELECT * FROM `dbusers` WHERE user2='$username' and password='$password';");
        if(
$r1=mysql_fetch_array($q1))
        {
            
$email=$r1[email];
            
$hash=$username.$password.$email;
            
$hash=md5($hash);
            
$_SESSION[user]=$username;
            
$_SESSION[pass]=$password;
            
$_SESSION[hash]=$hash;
            
$_SESSION[username]=$r1['user'];
        
        }
    else
    {
    unset(
$_SESSION[user]);
    unset(
$_SESSION[pass]);
    unset(
$_SESSION[hash]);
    unset(
$_SESSION[username]);
    }

}
if(isset(
$_POST['logout']))
    {
        unset(
$_SESSION[user]);
        unset(
$_SESSION[pass]);
        unset(
$_SESSION[hash]);
        unset(
$_SESSION[username]);
    }
}

Спустя 53 минуты, 17 секунд (30.03.2009 - 16:46) waldicom написал(а):
Маленькое предложение: запихивать сначала все данные в ассоциативный массив, а потом уже этот массив в сессию.

Спустя 4 минуты, 32 секунды (30.03.2009 - 16:51) anonymouse написал(а):
Цитата (waldicom @ 30.03.2009 - 13:46)
Маленькое предложение: запихивать сначала все данные в ассоциативный массив, а потом уже этот массив в сессию.

Кому как легче сними работать
Хотя думаю тут вы правы на большинство % wink.gif

Спустя 1 час, 25 минут, 37 секунд (30.03.2009 - 18:16) Rustam Karimov написал(а):
Цитата (anonymouse @ 30.03.2009 - 12:53)
Rustam Karimov
Семён прав - самое крутое это сессий...
я тоже когда думал как устроить авторизацию долго себе ломал голову.
Теперь работаю с СЕССИЯМИ и так круто - маленький пример кода.


PHP
if(isset($_POST['login']))
    {
$username=htmlspecialchars($username=addslashes($_POST['username']));
$password=md5($password=htmlspecialchars($password=addslashes($_POST['password'])));
$username=strtolower($username);

$q1=mysql_query("SELECT * FROM `dbusers` WHERE user2='$username' and password='$password';");
        if($r1=mysql_fetch_array($q1))
        {
            $email=$r1[email];
            $hash=$username.$password.$email;
            $hash=md5($hash);
            $_SESSION[user]=$username;
            $_SESSION[pass]=$password;
            $_SESSION[hash]=$hash;
            $_SESSION[username]=$r1['user'];
        
        
}
    else
    
{
    unset($_SESSION[user]);
    unset($_SESSION[pass]);
    unset($_SESSION[hash]);
    unset($_SESSION[username]);
    }

}
if(isset(
$_POST['logout']))
    {
        unset($_SESSION[user]);
        unset($_SESSION[pass]);
        unset($_SESSION[hash]);
        unset($_SESSION[username]);
    }
}

Спасибо за внимание буду изучать,
а $_SESSION это как глобальный массив для работы с сессиями?,
мне интересно, вот прошла проверка с базой, если все правильно как написать что нужно (можно) открыть (перейти на) страницу index.php например?

Спустя 21 минута, 9 секунд (30.03.2009 - 18:38) Kuliev написал(а):
Rustam Karimov
Ставь какой нибудь флаг типа того
PHP
<?
// если все в порядке логин с паролем совподают
$flag 1;

if (
$flag == 1)
{

// Вы прошли авторизацию
header ("Location: index.php");

}
else
{

// Авторизуйся

}


Спустя 1 час, 3 минуты, 48 секунд (30.03.2009 - 19:41) kirik написал(а):
Цитата (waldicom @ 30.03.2009 - 08:46)
Маленькое предложение: запихивать сначала все данные в ассоциативный массив, а потом уже этот массив в сессию.

А есть смысл?

Спустя 1 час, 13 минут, 50 секунд (30.03.2009 - 20:55) anonymouse написал(а):
Rustam Karimov

Во продолжение моего скрипта:
Конечно где это вставлять и что должно показываться уже сам разберешься +)
PHP
function login($lang)
{
    check_dates();
    if((!isset($_SESSION['user'])) and (!isset($_SESSION['pass'])) and (!isset($_SESSION['hash']))) 
    
{ login_form($lang); }
    if((isset($_SESSION['user'])) and (isset($_SESSION['pass'])) and (isset($_SESSION['hash']))) 
    
{
    user_form($lang);
    }



Конечно функций предопределены.

$_SESSION - да это глобальный массив - но он сработает тока в случае если у тебя в самой самой САМОЙ первой строчке стр. будет написано так:

PHP
<?php 
session_start
();


После чего уже на той стр. можешь работать сними как тебе угодно + обязательно выключи REGISTER_GLOBAL

Спустя 1 час, 41 минута, 52 секунды (30.03.2009 - 22:37) waldicom написал(а):
Цитата (kirik @ 30.03.2009 - 17:41)
Цитата (waldicom @ 30.03.2009 - 08:46)
Маленькое предложение: запихивать сначала все данные в ассоциативный массив, а потом уже этот массив в сессию.

А есть смысл?

Да

Спустя 16 минут, 22 секунды (30.03.2009 - 22:53) kirik написал(а):
Цитата (waldicom @ 30.03.2009 - 14:37)
Да

ладно..

Спустя 8 часов, 28 минут, 59 секунд (31.03.2009 - 07:22) Sylex написал(а):
Цитата (waldicom @ 31.03.2009 - 01:37)
Цитата (kirik @ 30.03.2009 - 17:41)
Цитата (waldicom @ 30.03.2009 - 08:46)
Маленькое предложение: запихивать сначала все данные в ассоциативный массив, а потом уже этот массив в сессию.

А есть смысл?

Да

ну тут по желанию... смысла нет етого делать...

а вот мой совет: используйте кавычки в ключах массивов - $_SESSION[user] менять на $_SESSION['user']

Спустя 7 часов, 29 минут, 17 секунд (31.03.2009 - 14:52) anonymouse написал(а):
Цитата (Sylex @ 31.03.2009 - 04:22)
Цитата (waldicom @ 31.03.2009 - 01:37)
Цитата (kirik @ 30.03.2009 - 17:41)
Цитата (waldicom @ 30.03.2009 - 08:46)
Маленькое предложение: запихивать сначала все данные в ассоциативный массив, а потом уже этот массив в сессию.

А есть смысл?

Да

ну тут по желанию... смысла нет етого делать...

а вот мой совет: используйте кавычки в ключах массивов - $_SESSION[user] менять на $_SESSION['user']

Оспаривать совет не буду - но можно прокомментировать - от чего лучше ? почему ? какие последствия ?


А то многие используют без некоторые ординарные другие двойные - так что лучше и почему ?

Спустя 31 секунда (31.03.2009 - 14:52) Семён написал(а):
Цитата (waldicom @ 30.03.2009 - 23:37)
Цитата (kirik @ 30.03.2009 - 17:41)
Цитата (waldicom @ 30.03.2009 - 08:46)
Маленькое предложение: запихивать сначала все данные в ассоциативный массив, а потом уже этот массив в сессию.

А есть смысл?

Да

какой? и в чём его преимущества, над тем чтобы просто засунуть в сессию, нежели сначала в массив, а потом в сессию

Спустя 30 минут, 11 секунд (31.03.2009 - 15:22) sergeiss написал(а):
Цитата (anonymouse @ 31.03.2009 - 14:52)
Цитата (Sylex @ 31.03.2009 - 04:22)
Цитата (waldicom @ 31.03.2009 - 01:37)
Цитата (kirik @ 30.03.2009 - 17:41)
Цитата (waldicom @ 30.03.2009 - 08:46)
Маленькое предложение: запихивать сначала все данные в ассоциативный массив, а потом уже этот массив в сессию.

А есть смысл?

Да

ну тут по желанию... смысла нет етого делать...

а вот мой совет: используйте кавычки в ключах массивов - $_SESSION[user] менять на $_SESSION['user']

Оспаривать совет не буду - но можно прокомментировать - от чего лучше ? почему ? какие последствия ?


А то многие используют без некоторые ординарные другие двойные - так что лучше и почему ?

Объясняю smile.gif

Кавычки двойные: говорят ПХП, что надо интерпретировать содержание строки. Он туда заходит, анализирует. В итоге получает ту же строку, в твоем случае 'user'.
Апостроф (одинарная кавычка): говорит ПХП, что анализировать нефиг, "бери строку как она есть, без изменений". По стравнению с предыдущим случае выигрыш в очень малые доли секунды (милли, микро, нано - не знаю точно, но маленькая разница).
Без кавычек: ПХП сначала проверит, нет ли константы с этим именем. И если не найдет, то будет считать, что это символьная строка в апострофах. Потеря времени на проверки (милли, микро, нано....). Есть вероятность (хоть и малая) того, что будет определена константа с этим же именем. И тогда будет ошибка в скрипте, которую ты если и заметишь, то будешь очень долго искать причину.

Вывод: надо писать в апострофах, за исключением случаев, когда ключ формируется "на лету".

А более подробно если надо - изучай хэлп. Он у меня в подписи есть.

Спустя 38 минут, 53 секунды (31.03.2009 - 16:01) waldicom написал(а):
Цитата (Семён @ 31.03.2009 - 12:52)
Цитата (waldicom @ 30.03.2009 - 23:37)
Цитата (kirik @ 30.03.2009 - 17:41)
Цитата (waldicom @ 30.03.2009 - 08:46)
Маленькое предложение: запихивать сначала все данные в ассоциативный массив, а потом уже этот массив в сессию.

А есть смысл?

Да

какой? и в чём его преимущества, над тем чтобы просто засунуть в сессию, нежели сначала в массив, а потом в сессию

Пример: засуньте 100 переменных в сессию, а потом, например при выходе пользователя, сделайте unset() для всех этих 100 переменных

Спустя 4 часа, 5 минут, 23 секунды (31.03.2009 - 20:07) Sylex написал(а):
waldicom
и зачем это делать?

Спустя 2 минуты, 7 секунд (31.03.2009 - 20:09) anonymouse написал(а):
Цитата (sergeiss @ 31.03.2009 - 12:22)
Цитата (anonymouse @ 31.03.2009 - 14:52)
Цитата (Sylex @ 31.03.2009 - 04:22)
Цитата (waldicom @ 31.03.2009 - 01:37)
Цитата (kirik @ 30.03.2009 - 17:41)
Цитата (waldicom @ 30.03.2009 - 08:46)
Маленькое предложение: запихивать сначала все данные в ассоциативный массив, а потом уже этот массив в сессию.

А есть смысл?

Да

ну тут по желанию... смысла нет етого делать...

а вот мой совет: используйте кавычки в ключах массивов - $_SESSION[user] менять на $_SESSION['user']

Оспаривать совет не буду - но можно прокомментировать - от чего лучше ? почему ? какие последствия ?


А то многие используют без некоторые ординарные другие двойные - так что лучше и почему ?

Объясняю smile.gif

Кавычки двойные: говорят ПХП, что надо интерпретировать содержание строки. Он туда заходит, анализирует. В итоге получает ту же строку, в твоем случае 'user'.
Апостроф (одинарная кавычка): говорит ПХП, что анализировать нефиг, "бери строку как она есть, без изменений". По стравнению с предыдущим случае выигрыш в очень малые доли секунды (милли, микро, нано - не знаю точно, но маленькая разница).
Без кавычек: ПХП сначала проверит, нет ли константы с этим именем. И если не найдет, то будет считать, что это символьная строка в апострофах. Потеря времени на проверки (милли, микро, нано....). Есть вероятность (хоть и малая) того, что будет определена константа с этим же именем. И тогда будет ошибка в скрипте, которую ты если и заметишь, то будешь очень долго искать причину.

Вывод: надо писать в апострофах, за исключением случаев, когда ключ формируется "на лету".

А более подробно если надо - изучай хэлп. Он у меня в подписи есть.

СПС !!!
Вот теперь для меня это все понятно.


П.С. просто иногда можно мануал перевернуть верхдном и все равно не найти что надо.... так уж тут у нас есть знающие люди - почему бы просто не спросить ?!

П.С.2. Спс еще рас за уделенное время.

Спустя 3 минуты, 55 секунд (31.03.2009 - 20:13) Sylex написал(а):
anonymouse
читать и перечитывать весь мануал даже никому еще не повредило wink.gif

там очень многим полезным вещам можно научиться... иногда перечитывая находишь некоторые фишки, которые просто неиспользуешь, а они так удобны smile.gif

Спустя 13 минут, 40 секунд (31.03.2009 - 20:26) kirik написал(а):
Цитата (waldicom @ 31.03.2009 - 08:01)
Пример: засуньте 100 переменных в сессию, а потом, например при выходе пользователя, сделайте unset() для всех этих 100 переменных

Плохой пример smile.gif Если при выходе нужно обнулить сессионный массив то можно сделать тупо unset($_SESSION) (а вообще для этого существуют специально заточенные функции типа session_unset(), session_destroy()). Ну а если нужно ансетить кроме этих 100 переменных еще 200, то нужно подумать, а все-ли впорядке у программиста с головой, который хранить хренову тучу бесполезной информации в сессии.

Цитата (Sylex @ 31.03.2009 - 12:13)
иногда перечитывая находишь некоторые фишки, которые просто неиспользуешь, а они так удобны

+100500! smile.gif

Спустя 53 минуты, 20 секунд (31.03.2009 - 21:20) waldicom написал(а):
Цитата
Плохой пример smile.gif Если при выходе нужно обнулить сессионный массив то можно сделать тупо unset($_SESSION)

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

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

Спустя 10 часов, 46 секунд (1.04.2009 - 07:21) Sylex написал(а):
waldicom
я не говорю, что я противник, иногда удобно, говорю же - сугубо личное дело smile.gif

Спустя 59 минут, 17 секунд (1.04.2009 - 08:20) kirik написал(а):
waldicom, не будем спорить в этот чудесный день smile.gif

Спустя 2 часа, 25 минут, 43 секунды (1.04.2009 - 10:46) waldicom написал(а):
Цитата (kirik @ 1.04.2009 - 06:20)
waldicom, не будем спорить в этот чудесный день smile.gif

user posted imageuser posted imageuser posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.