[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Думала думала и надумала...
Каролина
вот 1 код index.php
<?php
error_reporting(E_ALL);
// эту функция для отладки, чтобы смотреть на экране содержимое переменных и выглядело красиво
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();
}
}




function current_user_set(array $user){
$_SESSION['user'] = $user;
}



$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 {
$login = '';
$logout_disabled = 'disabled';
}

if(count($_POST)){
if(isset($logout)){
session_destroy();
header('Location: '.$_SERVER['REQUEST_URI']);
exit();
}




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 {

unset($user['pass']);
current_user_set($user);
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..;
?>


вот 2 код adminpage.php

<?php


function
current_user_get(){
if(isset($_SESSION['user']['login'])){
return $_SESSION['user'];
} else {
return array();
}
}


session_start();
$current_user = current_user_get();

if(!count($current_user)){

header('Location: /login.php?return_uri='.$_SERVER['REQUEST_URI']);
exit();
} elseif($current_user['role'] !== 'admin') {

header('Location: /login.php?return_uri='.$_SERVER['REQUEST_URI']);
exit();
}


echo 'login:'.$current_user['login'].'. In admin page.';
// include 'adminpage.htm.php';


вот 3 login.htm.php
<!DOCTYPE html>
<
html lang="ru">
<
head>
<
meta charset="utf-8">
<
title><?php echo $title; ?></title>
</
head>
<
body>
<
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"><input type="submit" id="logout" name="logout" value="Logout" <?=$logout_disabled?> ><br>
</
fieldset>
<
b><?=implode('<br>', $submit_msg);?></b>
<
i><?=implode('<br>', $gstate_msg);?></i>
</
form>
</
body>
</
html>

и последний четвертый login.php
<?php
error_reporting(E_ALL);
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();
}
}



function current_user_set(array $user){
$_SESSION['user'] = $user;
}


$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


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 {
unset($user['pass']); // чтобы не сохранять пароль в файле сессии. остальное остается. самое важное и ключевое это login, остальное для удобства.
current_user_set($user);


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_user_get['role'].'".';
$gstate_msg[] = 'Введите логин и пароль в форму для смены пользователя.';
$logout_disabled = '';
} else {
$gstate_msg[] = 'Введите логин и пароль в форму для входа.';
$logout_disabled = 'disabled';
}
}


include 'login.htm.php';


что написано кракозябрами неважно главное что б работало



Спустя 1 минута, 3 секунды (17.09.2012 - 16:41) m4a1fox написал(а):
Каролина
Ты правда думаешь что это кто то прочитает?

Спустя 30 секунд (17.09.2012 - 16:41) Каролина написал(а):
нет но надеюсь

Спустя 50 секунд (17.09.2012 - 16:42) TranceIT написал(а):
Приду домой, распечатаю на принтере, забью косячок и скурю...

Спустя 12 секунд (17.09.2012 - 16:42) Каролина написал(а):
а блин как редактировать 1 смс нету там редактирования

Спустя 48 секунд (17.09.2012 - 16:43) Каролина написал(а):
Цитата (TranceIT @ 17.09.2012 - 13:42)
Приду домой, распечатаю на принтере, забью косячок и скурю...

ну вот ктото уже собираетсяпрочитать

Спустя 7 минут, 25 секунд (17.09.2012 - 16:50) TranceIT написал(а):
Цитата (Каролина @ 17.09.2012 - 15:43)
ну вот ктото уже собираетсяпрочитать

Дааааааа
user posted image
почитаааааать

Спустя 2 часа, 28 минут, 41 секунда (17.09.2012 - 19:19) Bezdna написал(а):
Каролина, видимо вам в школе не объясняли что списывать нехорошо. Особенно у двоечников.

Спустя 40 минут, 34 секунды (17.09.2012 - 20:00) dron4ik написал(а):
сообщения о текущем состоянии формы. лучше расположить это в шаблоне на по

А?

Спустя 12 часов, 52 минуты, 45 секунд (18.09.2012 - 08:52) SlavaFr написал(а):
Цитата (Каролина @ 17.09.2012 - 13:39)
что написано кракозябрами неважно главное что б работало

1)если без кракозябров работает, то зачем напрягатся и их писать?
2) это пример как делать логин? если да, то его не обязательно в разделе знатоков помещать, так как знатоки как правило принцип логина знают.

о.т.
Цитата (TranceIT @ 17.09.2012 - 13:42)
Приду домой, распечатаю на принтере, забью косячок и скурю...

biggrin.gif biggrin.gif biggrin.gif День спасен.

Спустя 5 часов, 16 минут, 50 секунд (18.09.2012 - 14:09) Каролина написал(а):
Bezdna
я сама сделала

Спустя 3 часа, 56 минут, 18 секунд (18.09.2012 - 18:05) Bezdna написал(а):
Цитата (Каролина @ 18.09.2012 - 14:09)
я сама сделала


Сама списала и сама сделала это не одно и то же. А вообще - я не понял, что ты хотела от этой темы, похвалы за кучу нечитаемого кода?

Спустя 37 минут, 52 секунды (18.09.2012 - 18:43) inpost написал(а):
Почему 2 кода имеют разный стиль форматирования? Визуально могу сказать, что один из них твой, второй - чужой. Как это понимать?

Спустя 20 часов, 25 минут, 58 секунд (19.09.2012 - 15:09) walerus написал(а):
inpost
Цитата
Как это понимать?
Это иллюзия laugh.gif biggrin.gif

Спустя 1 день, 4 часа, 47 минут, 17 секунд (20.09.2012 - 19:57) Каролина написал(а):
на последний не глядите


_____________
wmu (U398141202367)
wmr (R321962242752)[SIZE=7][COLOR=purple]
Быстрый ответ:

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