<?php
function echo2($expression){
echo '<pre>'.print_r($expression, 1).'</pre>';
}
session_start();
// это массив таблица записи пользователей. пароль хранится как буто в закрытом виде хеш мд5
$users = array(
array('login'=>'LogniZ1', 'name'=>'Задания','pass'=>'PassiZ') ,
array('login'=>'LognidzX1', 'name'=>'Д/З', 'pass'=>'PassidzX2'),
array('login'=>'LoginisF01', 'name'=>'Фото', 'pass'=>'PassisF02')
);
if(count($_POST)){
$submit_msg = array();
echo2($_POST);
extract($_POST, EXTR_SKIP); // извлекаем все переменные, они будут по имени name формы (в том числе переменная $go но она и не нада)
echo2('login:'.$login);
echo2('pass:'.$pass);
foreach($users as $record){
if($login == $record['login'] && $pass == $record['pass']){
$user = $record; // логин пароль совпал
break;
}
}
if(isset($user)){
echo2($user);
$is_admin = strpos($user['role'], 'admin') !== false; // true - админь, false, простой смертный.
$_SESSION['is_admin'] = $is_admin; // на страницах админа проверять например так:
if(!$_SESSION['is_admin']===true){//от винта};
$_SESSION['name'] = $user['name']; // а это напрмпер отображать имя текущего пользователя.
if($users[0])
header('Location:http://nashclas.tk/admin/zadania/'); // куда направляться после логина. }
elseif ($users[1])
header('Location:http://nashclas.tk/admin/d.z/'); // куда направляться после логина. }
elseif ($users[2])
header('Location:http://nashclas.tk/admin/foto/'); // куда направляться после логина. }
} else {
$submit_msg[] = 'пользователь с таким логином и паролем не найден.';
$submit_msg[] = "попробуйте бла бла бла";
}
$msg = implode('<br>', $submit_msg);
} else {
// переменные для подстановки в форму.
$login = '';
$msg = '';
}
?>
<form method="post">
<fieldset><label for="login">Логин</label>:<br>
<input type="text" id="login" name="login" value="<?=$login?>"><br>
<label for="pass">Пароль</label>:<br>
<input type="password" id="pass" name="pass"><br>
<input type="submit" id="go" name="go" value="Login"><br>
</fieldset>
<?=$msg?></form>
Спустя 4 минуты, 42 секунды (3.09.2012 - 21:49) Игорь_Vasinsky написал(а):
у тяя вывод выше заголовков. редирект не сработает пока не уберёшь.
умело, хвалю.
а вот тут опять печалька.. в качестве аргумента хитрое слово, а название функции лажа
а такое даже я ещё не ризу не использовал
умело, хвалю.
$msg = implode('<br>', $submit_msg);
а вот тут опять печалька.. в качестве аргумента хитрое слово, а название функции лажа
function echo2($expression){
а такое даже я ещё не ризу не использовал
extract($_POST, EXTR_SKIP);
Спустя 3 минуты, 56 секунд (3.09.2012 - 21:53) Каролина написал(а):
Цитата (Игорь_Vasinsky @ 3.09.2012 - 19:49) |
у тяя вывод выше заголовков. редирект не сработает пока не уберёшь. |
в каком смысле
Спустя 32 секунды (3.09.2012 - 21:54) Каролина написал(а):
что убрать кого убрать
Спустя 2 минуты, 43 секунды (3.09.2012 - 21:56) Игорь_Vasinsky написал(а):
ты даже ошибки не получаешь???
это закомментируй
в начале скрипта
это закомментируй
echo '<pre>'.print_r($expression, 1).'</pre>';
в начале скрипта
error_reporting(E_ALL);
Спустя 2 минуты, 37 секунд (3.09.2012 - 21:59) Каролина написал(а):
http://nashclas.tk/admin/ вывело ошибку
Спустя 1 минута, 17 секунд (3.09.2012 - 22:00) Каролина написал(а):
Цитата (Игорь_Vasinsky @ 3.09.2012 - 19:56) |
echo '<pre>'.print_r($expression, 1).'</pre>'; |
что это я только пользуюсь сказали что так лучше выводит точно не врубились но рекомендовали
Спустя 20 часов, 46 минут, 10 секунд (4.09.2012 - 18:46) Каролина написал(а):
так кто поможет что делать
Спустя 12 часов, 50 минут, 37 секунд (5.09.2012 - 07:37) Bezdna написал(а):
Цитата (Каролина @ 4.09.2012 - 19:46) |
так кто поможет что делать |
Помочь себе можешь только ты сама. И пока ты будешь тупо копировать чужие куски кода, не понимая их смысл, думаю вряд ли что-нибудь получится.
Спустя 59 минут, 9 секунд (5.09.2012 - 08:36) Игорь_Vasinsky написал(а):
согласен. надоело.
снимаю тебя с бюджетного обучения.
тока платное. так что решай вопросы с родителями и обсудим стоимость обучения, длительность, содержание.
снимаю тебя с бюджетного обучения.
тока платное. так что решай вопросы с родителями и обсудим стоимость обучения, длительность, содержание.
Спустя 10 часов, 11 минут, 13 секунд (5.09.2012 - 18:47) Каролина написал(а):
хахаха все просят помощи и вы даете ее бесплатно че мне та платно придется
Спустя 2 дня, 14 часов, 6 минут, 32 секунды (8.09.2012 - 08:54) Каролина написал(а):
ну так блин помогите, ну незнаю как сделать
<?php
function echo2($expression){
echo '<pre>'.print_r($expression, 1).'</pre>';
}
error_reporting(E_ALL);
session_start();
// это массив таблица записи пользователей. пароль хранится как буто в закрытом виде хеш мд5
$users = array(
array('login'=>'LogniZ1', 'name'=>'Задания','pass'=>'PassiZ') ,
array('login'=>'LognidzX1', 'name'=>'Д/З', 'pass'=>'PassidzX2'),
array('login'=>'LoginisF01', 'name'=>'Фото', 'pass'=>'PassisF02')
);
if(count($_POST)){
$submit_msg = array();
echo2($_POST);
extract($_POST, EXTR_SKIP); // извлекаем все переменные, они будут по имени name формы (в том числе переменная $go но она и не нада)
echo2('login:'.$login);
echo2('pass:'.$pass);
foreach($users as $record){
if($login == $record['login'] && $pass == $record['pass']){
$user = $record; // логин пароль совпал
break;
}
}
if(isset($user)){
echo2($user);
$is_admin = strpos($user['role'], 'admin') !== false; // true - админь, false, простой смертный.
$_SESSION['is_admin'] = $is_admin; // на страницах админа проверять например так:
if(!$_SESSION['is_admin']===true){//от винта};
$_SESSION['name'] = $user['name']; // а это напрмпер отображать имя текущего пользователя.
if($users[0])
header('Location:http://nashclas.tk/admin/zadania/'); // куда направляться после логина. }
elseif ($users[1])
header('Location:http://nashclas.tk/admin/d.z/'); // куда направляться после логина. }
elseif ($users[2])
header('Location:http://nashclas.tk/admin/foto/'); // куда направляться после логина. }
} else {
$submit_msg[] = 'пользователь с таким логином и паролем не найден.';
$submit_msg[] = "попробуйте бла бла бла";
}
$msg = implode('<br>', $submit_msg);
} else {
// переменные для подстановки в форму.
$login = '';
$msg = '';
}
?>
<form method="post">
<fieldset><label for="login">Логин</label>:<br>
<input type="text" id="login" name="login" value="<?=$login?>"><br>
<label for="pass">Пароль</label>:<br>
<input type="password" id="pass" name="pass"><br>
<input type="submit" id="go" name="go" value="Login"><br>
</fieldset>
<?=$msg?></form>
Спустя 6 часов, 17 минут, 24 секунды (8.09.2012 - 15:11) Shuriken написал(а):
У тебя не хватает одной закрывающейся фигурной скобки.
Здесь
Заголовок должен быть до каких-либо выводов в браузеров
Здесь
echo2($user);ты выводишь данные, а далее пишешь заголовок
header('Location:http://nashclas.tk/admin/zadania/');
Заголовок должен быть до каких-либо выводов в браузеров
Спустя 6 часов, 48 минут, 56 секунд (8.09.2012 - 22:00) Каролина написал(а):
сделала код получше как вам
<?php
error_reporting(E_ALL);
// это файл login.php
// здесь не должно быть хтмл кода. для хтмл используется соответствующий файл login.htm.php
// эту функцию рекомендую использовать для отладки, чтобы смотреть на экране содержимое переменных и выглядело красиво.
// ее можно перенести в файл, который всегда запускается первым и тогда она будет везде доступна.
function echo2($expression){
echo '<pre>'.print_r($expression, 1).'</pre>';
}
// эта функция для того чтобы на всех страницах однообразно проверять статус пользователя. ее также нужно поместить в файл который всегда запускается первым,
// или копировать на все страницы, где нужно проверять авторизованность пользователя.
/**
* Возвращает учетную запись пользователя если пользователь авторизован или пустой массив, если не авторизован.
*/
function current_user_get(){
if(isset($_SESSION['user']['login'])){
return $_SESSION['user'];
} else {
return array();
}
}
/**
* Устанавливает учетную запись в сессию.
* Эта функция пока простая. Но для очевидности вынесена сюда.
* @param array $user - учетная запись пользователя, которая подтверждена введенным паролем. Все поля кроме пароля рекомендуется.
*/
function current_user_set(array $user){
$_SESSION['user'] = $user;
}
// это массив таблица записи пользователей. вместо записей таблицы "users" базы данных.
// в таблице пользователей не должно быть ничего лишнего.
$users = array(
array('name'=>'Вася', 'login'=>'vasya', 'pass'=>'PassiZ', 'role'=>'admin'),
array('name'=>'Петя', 'login'=>'petya', 'pass'=>'PassidzX2', 'role'=>'user'),
array('name'=>'Саша', 'login'=>'sasha', 'pass'=>'PassisF02', 'role'=>'user')
);
// начало кода...
$title = 'Вход на сайт'; // будет отрисовано в шаблоне.
$gstate_msg = array(); // сообщения о текущем состоянии формы. лучше расположить это в шаблоне на последнем месте. и шрифт курсив.
$submit_msg = array(); // сообщения которые нужно вывести после субмита. лучше всего расположить их в шаблоне рядом с кнопкой. жирным шрифтом.
// оба масива будут преобразованы в строку в шаблоне.
session_start();
if(count($_POST)){
extract($_POST, EXTR_SKIP); // извлекаем все переменные, из поста (не заменяя существующие).
// $login, $pass, $go
$logout_disabled = 'disabled';
}else {
// переменные, которые должны быть объявлены для подстановки в форму если нет поста (если есть пост, эти переменные будут извлечены из поста extract).
$login = '';
$logout_disabled = 'disabled';
}
if(count($_POST)){
if(isset($logout)){
// когда было нажато на кнопку выход
session_destroy();
header('Location: '.$_SERVER['REQUEST_URI']); // переходим на гет текущей.
exit();
}
// значит нажато на кнопку $go
// проверяем совпадение пары логин пароль. переменная $user будет установлена значением соответсвующейзаписи из таблицы пользователей,
// или не будет установлена при несовпадении пары логин-пароль.
// цикл по каждой записи и проверка совпадения логина и пароля одновременно.
foreach($users as $record){
if($login == $record['login'] && $pass == $record['pass']){
$user = $record; // логин пароль совпал
break; // поиски можно не продолжать, так как запись найдена. (база данных должна гарантировать что только поле логин уникальное)
}
}
if(!isset($user)){
// можно ничего не делать, но в форму передать сообщение необходимо.
$submit_msg[] = 'Пользователь с таким логином и паролем не найден.';
$submit_msg[] = 'Подсказка: вот эти все пользователи, их пароли и роль на сайте:<pre>'.print_r($users, true).'</pre>';
} else {
// запись найдена, потому что в форме был передан верный пароль и логин.
// пользователя можно авторизовать. как признак, в сессию можно установить учетную запись пользователя.
// сессия это временный файл, который связан с конкретным броузером с помощью куков. пхп об этом заботится, предоставляя переменную $_SESSION,
// которая ведет себя как обычный массив.
unset($user['pass']); // чтобы не сохранять пароль в файле сессии. остальное остается. самое важное и ключевое это login, остальное для удобства.
current_user_set($user);
//$current_user = current_user_get();
//$submit_msg[] = $current_user['name'].', вы успешно авторизовались по логину '.$current_user['login'].'. Ваша роль на сайте :'.$current_user['role'].'.';
// так как пользователь изменился успешно, нет смысла отображать сообщение субмита, пользователь увидит его в состоянии,
// когда перейдем на гет хеадером. вообще-то отсюда надо идти на страницу, которая затребовала авторизацию, но этого кода еще нет...
// чтобы сделать так, чтобы пользователь переходил на страницу, которая запросила авторизацию,
if(!isset($_GET['return_uri'])){
header('Location: '.$_SERVER['REQUEST_URI']); // переходим на гет текущей.
} else {
header('Location: '.$_GET['return_uri']); // переходим на гет той страницы которая запросила авторизацию..
}
}
} else {
// нет поста. отобразить текущее состояние.
$current_user_get = current_user_get(); //
if(count($current_user_get)){
$gstate_msg[] = 'Вы уже авторизованы как "'.$current_user_get['name'].'". Ваша роль на сайте: "'.$current..;
?>
_____________
wmu (U398141202367)
wmr (R321962242752)[SIZE=7][COLOR=purple]