Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/140: Рейтинг темы: голосов - 140, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 11.04.2015
Сообщений: 20

Ограничение доступа не авторизованным пользователям

11.04.2015, 15:50. Показов 29169. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте люди добрые, создаю сайт на php и в ходе создания возник вопрос. Введу в курс дела: написал сайт, сделал регистрацию и авторизацию, но мне ко всему к этому ещё нужно что-бы доступ к определённым страницам сайты был закрыт не для авторизованных пользователей. Просмотрел форум, пролазил на сайтах где рассматривается данный вопрос, так и ни чего не нашёл путнего потому что, коды регистрации и авторизации у всех резные. А я не такой профи, что-бы взять суть и реализовать его на своём коде. Вообщем нужна помощь более опытных людей.

Код регистрации "reg.php":

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
               $connect = mysql_connect('localhost','root','') or die(mysql_error());
               mysql_select_db('egeoks');
           
               if (isset($_POST['submit'])) {
               $login = $_POST['login'];
               $password = $_POST['password'];
               $r_password = $_POST['r_password'];
               $email = $_POST['email'];              
               if ($password == $r_password) {
                   $password = md5($password);
                   $query = mysql_query("INSERT INTO users VALUES ('','$login','$password','$email')") or die(mysql_error());
                  echo "<script>alert('Успешная Регистрация!');location.href='index.php';</script>";
               }
               else {
                  die("<script>alert('Не правильно введён повторный пароль!');location.href='reg.php';</script>");
 
                 }
               }
 
               if (isset($_POST['enter'])) {
               $e_login = $_POST['e_login'];
               $e_password = md5($_POST['e_password']);
               
               $query = mysql_query("SELECT * FROM users WHERE login = '$e_login'");
               $user_data = mysql_fetch_array($query);
               
               if ($user_data['password'] == $e_password) {
                  echo "<script>alert('Успешная авторизация!');location.href='index.php';</script>";
                  session_start();
                  $_SESSION['name'] = $e_login;
               }
               else{
                  echo "<script>alert('Неверный логин или пароль!');location.href='index.php';</script>";
               }
             }
             
             if (isset($_POST['logout'])) {
             echo "<script>alert('Успешный выход!');location.href='index.php';</script>";
                unset($_SESSION['name']);
                session_destroy();
             }
            ?>
            
<center>
            <b>Регистрация</b>
            </br>
            </br>
            <form method="post" action="reg.php">
            Логин:</br><input type="text" name="login" placeholder="Login" required /></br>
            Пароль:</br><input type="password" name="password" placeholder="Password" required /></br>
            Повторный пароль:</br><input type="password" name="r_password" placeholder="Repeat password" required /></br>
            Почта:</br><input type="text" name="email" placeholder="E-mail" required /></br></br>
            <input type="submit" name="submit" value="Зарегистрироваться"/>
            </form>
</center>
Код авторизации "login.php":

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
            session_start();
            if(isset($_SESSION['name']))
            {
              echo '<b>Здравствуйте,</b>&nbsp';
              echo $_SESSION["name"]; 
              echo '</br></br><a href="/ege/">Мой профиль</a>
                    </br><a href="/ege/">Моя анкета</a>
                    </br><a href="/ege/">Мой блог</a>
                    </br><a href="/ege/">Мои фото</a>';
              echo '</br></br><form method="post" action="reg.php">
            <input type="submit" name="logout" value="Выход" />
            </form>';
            }
            else {
               echo '<b>Авторизация</b>
            </br>
            </br>
            <form method="post" action="reg.php">
            Логин:</br><input type="text" name="e_login" placeholder="Login" required /></br>
            Пароль:</br><input type="password" name="e_password" placeholder="Password" required /></br></br>
            <input type="submit" name="enter" value="Вход"/>
            </form>
            <p class="to_reg">Если вы не зарегистрированы в системе, <a href="reg.php">Зарегистрируйтесь</a>.</p>';
            }
            ?>
Код connect к базе данных "database.php":

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php  
function connect() {
    // Объявляем переменные, в которых будут храниться параметры для подключения к СУБД
    $db_host = 'localhost';     // Сервер
    $db_user = 'root';  // Имя пользователя
    $db_password = '123456';    // Пароль пользователя
    $db_name = 'egeoks';            // Имя базы данных
    
    $conn = mysql_connect($db_host, $db_user, $db_pass) or die("<p>Невозможно подключиться к СУБД: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");
    
    $db = mysql_select_db($db_name, $conn) or die("<p>Невозможно подключиться к базе данных: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");
    
    $query = mysql_query("set names utf8", $conn) or die("<p>Невозможно выполнить запрос к базе данных: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");
}
?>
Код выхода из аккаунта "logout.php":

PHP
1
2
3
4
5
6
session_start();
 
unset($_SESSION['login']);
unset($_SESSION['password']);
header('location: login.php');
?>
Нужно ограничить доступ определённым страницам на сайте для не авторизованных пользователей. То-есть если пользователь заходит на страницу без авторизации ему выбивает окошко мол зарегистрируйтесь или авторизуйтесь, при нажатие на "ОК" его перебрасывает на страницу авторизации в нашем случае "login.php". Он авторизируется и после успешной авторизации доступ к странице открывается и он может спокойно просматривать на ней информацию.

Буду очень благодарен за помощь! С уважением Александр!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2015, 15:50
Ответы с готовыми решениями:

Организация доступа только авторизованным пользователям
Добрый день!Я новичек в PHP и поэтому такой вопрос: Есть 2 таблицы users CREATE TABLE `users`( `user_id` INT...

Показ рекламы только авторизованным пользователям
Здраствуйте, такая идея пришла, показывать рекламы блоки (блок ссылок похожий на меню сайта) от адсенс только авторизированным...

Позволить скачивать архивы только авторизованным пользователям
Нужна наводка. Авторизация есть, все прочее. Но, если ввести прямую ссылку на архив, происходит скачивание. Как этого избежать? Не...

26
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
11.04.2015, 17:04
Лучший ответ Сообщение было отмечено Ais72tum как решение

Решение

PHP
1
2
3
4
5
        function protect_page(){
        if (logged_in() === false ) {
            echo "Вы не залогинены, Вам сюда нельзя"; // можете сделать редирект на какую старницу
        }
    }
И проверка, на то, что Вы залогинились
PHP
1
2
3
    function logged_in(){
        return(isset($_SESSION['user_id'])) ? true : false;
    }
Далее все просто, создайте страницу, и в самом начале, вызовите функцию следующим образом:
PHP
1
    protect_page();
1
0 / 0 / 0
Регистрация: 11.04.2015
Сообщений: 20
11.04.2015, 19:36  [ТС]
Спасибо огромное! Вопрос куда вставять первый и второй код, в страницу которую нужно ограничить в доступе, или в код login.php?

Добавлено через 16 минут
Я добавил данный код в login.php

PHP
1
2
3
4
5
6
7
8
9
10
            <?php
                    function protect_page(){
        if (logged_in() === false ) {
            echo "Вы не залогинены, Вам сюда нельзя"; // можете сделать редирект на какую старницу
        }
    }
    function logged_in(){
        return(isset($_SESSION['user_id'])) ? true : false;
    }
            ?>
Далее в начале странице которую хочу закрыть для не авторизованных прописываю

PHP
1
2
3
<?php
         protect_page();
?>
Но мне бъёт ошибку

"Fatal error: Call to undefined function protect_page() in W:\home\92.255.174.125\WWW\ege\chat.php on line 2"

В чём дело? Что я сделал не так, и как исправить? Помогите ребят!
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
11.04.2015, 20:29
Лучший ответ Сообщение было отмечено Ais72tum как решение

Решение

Цитата Сообщение от Ais72tum Посмотреть сообщение
Я добавил данный код в login.php
создайте некий файл, который вы подключаете к каждому другому файлу . Скажем, вместо того, чтобы какждый раз писать mysql запрос Вы просто подлючаете файл
Цитата Сообщение от Ais72tum Посмотреть сообщение
database.php
, создайте файл с функцими, подключите их, потом вызовите функцию, ошибок не должно быть

Добавлено через 1 минуту
PHP
1
2
3
4
function logged_in(){
        return(isset($_SESSION['name'])) ? true : false;
    }
            ?>
Так для вас будет функция, с сессией данного пользователя

Добавлено через 1 минуту
Цитата Сообщение от Ais72tum Посмотреть сообщение
в страницу которую нужно ограничить в доступе
Думая, ограничив доступ пользователям, на страницу login.php, они никогда не авторзируются.
Создайте файл с функциями и подключайте его, где вам нужно
1
 Аватар для ISerg1986
16 / 16 / 13
Регистрация: 12.01.2014
Сообщений: 177
11.04.2015, 20:50
И вроде рабочий вариант предложили и человеку помогли. И работать это будет. Но как то всё не то. ИМХО.
Логика не та. А именно:
1) В сессии не хранят логины - пароли. Раньше и я хранил, пока в один прекрасный момент сессия не сказала - пока.
Срок жизни сессии - определяет сервер. Можно настроить - но это не комильфо. Сама идеология хранения там логин-пароль ошибочна. Но многие так делают.

А ведь лучше так.
Логин, хеш пароля, соль (опционально) и идентификатор пользователя хранят в бд.
Суть такая - после авторизации и всех проверок пользователя ему генерируют случайный идентификатор (строку).
Его пишут в бд и в куку.
Далее - есть кука? Да. А что там? Строка. А есть ли в базе такая строка? Есть. Это наш человек.
Иначе - не авторизован.

2) Создавать функции ради таких вещей, состоящие из других функций - странно.
Создается файл all_about_user.php Его инклудим где надо проверять авторизирован ли пользователь или нет.
В нем пишем код проверок, код сбора другой информации. На выходе массив. И никаких функций.
Частое-однотипное действие это не использование функций. Это скорее всего инклуд.
0
53 / 53 / 22
Регистрация: 31.03.2015
Сообщений: 268
11.04.2015, 22:54
PHP
1
2
3
4
if (!$_SESSION['login'])
{
echo 'Доступно только зарегистрированным пользователям.';
}
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.04.2015, 00:08
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Создавать функции ради таких вещей, состоящие из других функций - странно.
ничего странного, обычная практика. Все равно, что сказать, что писать обертки для БД или чего-то еще глупо и не нужно Такими рассуждениями можно прийти к тому, что есть машинные коды, а все ЯП (включая языки ассемблера) должны идти лесом.
Правда, незачем использовать тернарный оператор и хотя бы empty вместо isset
PHP
1
2
3
function logged_in(){
    return !empty($_SESSION['name']);
}
Цитата Сообщение от ISerg1986 Посмотреть сообщение
На выходе массив. И никаких функций.
Вместо вызова одной функции мы будем получать море лишней инфы (которая, возможно, еще и перезатрет какие-нибудь локальные переменные), да еще и при каждом инклуде, а на выходе здоровенный массив. Замечательно)

З.Ы. Как бы, можно и константами воспользоваться в начале скрипта. Нечто в духе
PHP
1
2
defined('IS_LOGGED') or define('IS_LOGGED', logged_in());
defined('IS_GUEST') or define('IS_GUEST', ! IS_LOGGED);
А потом проверять значение нужной константы..

Цитата Сообщение от Max_Great_Tanje Посмотреть сообщение
PHP
1
if (!$_SESSION['login'])
нотайсы. Собственно, этот же вариант, только внутри функции и без ошибки уже есть выше..
0
0 / 0 / 0
Регистрация: 11.04.2015
Сообщений: 20
12.04.2015, 00:49  [ТС]
paskalnikita, спасибо огромное! Реализовал как вы написали всё заработало как нужно. Но я чучуть доработал таким образом:

PHP
1
2
3
4
5
6
7
8
9
10
            <?php
                    function protect_page(){
        if (logged_in() === false ) {
            echo "<script>alert('Авторизируйтесь или зарегистрируйтесь для просмотра данной страници!');location.href='login.php';</script>"; // можете сделать редирект на какую старницу
        }
    }
function logged_in(){
        return(isset($_SESSION['name'])) ? true : false;
    }
            ?>
Добавил к ошибки что-бы вылетало окошечко и при нажатии на "ОК" перекидывало на страницу авторизации...
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
12.04.2015, 04:38

Не по теме:

Ais72tum, ух нифига себе... вы правда в openra играете? давайте вместе сыграем!))



Добавлено через 1 минуту

Не по теме:

а, ну и да, юзайте mysql_real_escape_string, не палите свой айпи и полные пути на форумах, и больше об этом никто не узнает:)

0
 Аватар для ISerg1986
16 / 16 / 13
Регистрация: 12.01.2014
Сообщений: 177
12.04.2015, 12:36
Цитата Сообщение от KOPOJI Посмотреть сообщение
Вместо вызова одной функции мы будем получать море лишней инфы (которая, возможно, еще и перезатрет какие-нибудь локальные переменные), да еще и при каждом инклуде, а на выходе здоровенный массив. Замечательно)
Я вас понимаю. Тут всё зависит от конкретного примера. Возможно я где-то и не прав.
Но я рассуждаю так - лучше создать один файл который выполняет действия с пользователями и подключать его один раз, там где надо.
Это лучше, чем создавать общий-огромный файл со всеми действиями-функциями и подключать его везде - вызывая нужную функцию. Что и делает большинство потому что удобно (я так думаю). А на быстродействие начхать т.к. можно поставить ещё планку памяти в сервер и проект априори будет не высоконагруженный.

Или это не влияет на быстродействие - производительность?
И можно создать файл с 100500 функциями для любых действий и вызывать 1 функцию тут, другую там. А оставшиеся 100498 - пусть лежат мёртвым грузом, ведь кушать не просят, память-ресурсы не используют...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.04.2015, 13:28
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Это лучше, чем создавать общий-огромный файл со всеми действиями-функциями и подключать его везде - вызывая нужную функцию
Создайте несколько файлов с функциями, и подключайте только нужный. Это в любом случае лучше кучи спагетти-кода, из которого практически ничего и не надо, в глобальной области видимости.
Цитата Сообщение от ISerg1986 Посмотреть сообщение
А на быстродействие начхать т.к. можно поставить ещё планку памяти в сервер и проект априори будет не высоконагруженный
Пишите все в одном файле, забудьте про функции, свитчи и т.д., IF-ы замените на goto, не используйте двойные кавычки и т.д. и т.п...
Или пишите все на голом C.
Или же не говорите ничего про уменьшение быстродействие на 1 иоктосекунду от использования функций вместо использования кода "как есть". Но это, наверное, совсем нереально)
0
 Аватар для ISerg1986
16 / 16 / 13
Регистрация: 12.01.2014
Сообщений: 177
12.04.2015, 14:13
Цитата Сообщение от KOPOJI Посмотреть сообщение
Создайте несколько файлов с функциями, и подключайте только нужный.
А в чем тогда разница?
Мне кажется, что функция и действие -разные вещи. Я поясню.
Из математики - определение функции. Функция - есть правило, которое к элементам из множества x ставит в соответствие единственный элемент из множества y.
Проще говоря - функция возвращает единственное значение. return А может и не возвращать void.
Действие - та же выборка из базы, чаще всего возвращает множество значений - набор, массив и т.д.
В большинстве случаев, нам требуется множество значений. Редко кому нужен в коде логин без пароля. Или только имя без фамилии. Всё однотипно.
Само использование функции лишено смысла. Вызывать кучу функций - одну для логина (+1 запрос к бд), одну для пароля (+1 запрос к бд)...
Или писать функцию для логин-пароль? Так зачем тут слово функция? Что мешает написать файл с выборкой основных данных о пользователе и подключить его?
Разницы никакой - только нет слова функция и на выходе массив нужных значений, а не одно - пусть и содержащее все данные...

Цитата Сообщение от KOPOJI Посмотреть сообщение
Пишите все в одном файле, забудьте про функции, свитчи и т.д., IF-ы замените на goto, не используйте двойные кавычки и т.д. и т.п...
Почти так и делаю. Файл размером 10000 строк. Всё прекрасно работает. Не путаюсь.
Честно не понимаю, зачем "математический аппарат" использовать в угоду удобства, там где это делать не нужно.

Функции использую только в таком контексте
PHP
1
2
3
4
5
6
//Функция получения дня
function day_from_date($date)
{$current_day=substr($date, 0, strpos($date, '.'));
//Если есть ноль - убираем его
$current_day=str_replace('0', '', $current_day);
return $current_day;}
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.04.2015, 14:49
Цитата Сообщение от ISerg1986 Посмотреть сообщение
А в чем тогда разница?
да в том, что ваш файл выполнит все, что есть в этом коде. Код же внутри функции не будет выполнен, пока не вызовут эту функцию. Неужели разница непонятна?
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Из математики
Программирование, хоть и связано с математикой, совсем не тоже самое. Читайте определение функции в программировании, а не в математике. А то я вам могу сказать, что в философии функция - это обязанность, а, значит, вы еще и обязаны их использовать.
Если же даже вернуться к математике, то в том же определении не указано то, что сопоставленный элемент не может, в свою очередь, являться очередным множеством, а не конечной "простой" константой. Итого, никто не мешает мне вернуть массив, как часто и делают.
Помимо всего прочего, в PHP само по себе функция не может вернуть множественное значение. А знаете где, навскидку, это есть? В LISP-е. Попробуйте сказать лисперу, что язык, одной из основных парадигм которого является функциональная, является вовсе не функциональным, потому что функции multiple-value-* являются вовсе не функциями
И что вы скажете по поводу недетерминированных функций? Это тоже не функция? В общем, не надо загонять
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Почти так и делаю. Файл размером 10000 строк
надо было это в начале написать. Я бы больше ничего не стал писать..
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Честно не понимаю, зачем "математический аппарат" использовать в угоду удобства, там где это делать не нужно.
..особенно, когда толком не понимаю, что такое математический аппарат, и что это не тоже самое, что и программирование?
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Функции использую только в таком контексте
круть.
PHP
1
echo (int) date('d', strtotime($date));
1
 Аватар для ISerg1986
16 / 16 / 13
Регистрация: 12.01.2014
Сообщений: 177
12.04.2015, 15:07
Цитата Сообщение от KOPOJI Посмотреть сообщение
да в том, что ваш файл выполнит все, что есть в этом коде.
Абсолютно верно. А ваша функция выполнит все, что есть в теле функции.
Мой файл выполнит скажем запрос select login,password,name from bd........... и на выходе получит массив. Это 1 запрос.
А функция? Тоже может выполнить 1 запрос. И в чем тогда разница? А в том, что можно написать огромный файл с кучей функций, подключать его везде - но вызывать только нужные функции.
А можно подключать только нужный файл с запросом там, где он нужен и не инклудить +100500 строк ненужных и неиспользуемых в данный момент функций.
Зачем инклудить то, что не используешь в данный момент? Прост


Цитата Сообщение от KOPOJI Посмотреть сообщение
круть.
Норм дата же всегда вида 01.02.2015. Вот не может быть 0001.02.2015 - это же не честно.
Вы ещё техзадание моё не видели там условия неизвестны. Больше, меньше, равно? Догадайся сам Техзадание формируется и изменяется на лету. Суровая реальность.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.04.2015, 15:21
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Зачем инклудить то, что не используешь в данный момент? Прост
Да, "прост". "Прост" вы не понимаете, вот и все.
Цитата Сообщение от ISerg1986 Посмотреть сообщение
подключать его везде
в том и дело, что, в отличии от кода без использования функций, его будет достаточно подключить только один раз. Но вы не заморачивайтесь, пишите, как писали раньше, и не парьтесь. Надеюсь, что ваш код мне не достанется (как и мой вам)
Цитата Сообщение от ISerg1986 Посмотреть сообщение
это же не честно
Отсутствие валидации - это нормально, по-вашему? Интересная точка зрения. Особенно когда из-за отсутствия валидации нормальный код заменяют жутким костылем. Извините, а если вам передадут в формате m.d.Y вместо d.m.Y, как будет вести себя ваш код? Вывод в любом случае должен быть один: необходимо проверять формат значения, а не городить костыли.
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Вы ещё техзадание моё не видели
и не хочу видеть.
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Суровая реальность
если только в вашем мире. Везде отлично с этим справляется валидация и жестко заданное ТЗ
0
 Аватар для ISerg1986
16 / 16 / 13
Регистрация: 12.01.2014
Сообщений: 177
12.04.2015, 15:34
Вообщем я вас понял.
Кратко - если неизвестно, что на входе - какие данные, то такие и функции.
Это не нормально, но такова суровая Российская реальность.

Цитата Сообщение от KOPOJI Посмотреть сообщение
"Прост" вы не понимаете, вот и все.
Да я в принципе понял. Скажите пожалуйста, а влияет ли на быстродействие, производительность, ресурсы сервера подключение файла с 100500 функциями и вызовом одной?
Влияет ли существенно. Байты памяти не в счёт...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.04.2015, 15:42
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Кратко - если неизвестно, что на входе - какие данные, то такие и функции.
Нет, вы не поняли. Если удобно использовать функцию, значит используется функция. А вам, так как вы не понимаете плюсов их использования, это будет неудобно - поэтому я и написал
Цитата Сообщение от KOPOJI Посмотреть сообщение
не заморачивайтесь, пишите, как писали раньше, и не парьтесь
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Это не нормально, но такова суровая Российская реальность.
... вы начали говорить сами с собой, обсуждая свой код?
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Да я в принципе понял
Ага.
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Влияет ли существенно
Нет. По-крайней мере, куда менее существенно, нежели чем весь код из этих функций будет в одной области видимости и будет выполнен весь сразу. А то, почему-то, сравнивается подключение файла "с одним запросиком" и подключение файла "с 100500 функциями". Сравнивайте хотя бы соответственно. А вообще, есть на уме хороший пример, но так лень его писать.. Тем более что не вижу особого смысла
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
12.04.2015, 17:33
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Норм дата же всегда вида 01.02.2015.
дико-дико зависит от локали. в том же en_US используется формат %m/%d/%Y, например. что будете делать, если вам сайт скажут перевести на английский? раз уж
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Техзадание формируется и изменяется на лету.
Цитата Сообщение от KOPOJI Посмотреть сообщение
Программирование, хоть и связано с математикой, совсем не тоже самое.
хоть я и несогласен с определением ISerg1986 применительно к обобщенному программированию, но все же в той же функционалке встречается куча pure-функций, которые если и не являются отображением X на Y, то по-крайней мере, очень близки к этому. в императивке же да, так делать по-существу нельзя, ибо каждая функция зачастую транслируется в инструкцию call

Не по теме:

inline-оптимизации в расчет не берем, все же это больше костыль, ну и в любом случае в пхп их нет:)


НО! ведь функционалка -- тоже программирование, хотя и немного другое. Я лишь хочу сказать, что нельзя однозначно утверждать, что определения из математики не подходят ни к одной из областей программирования. Разумеется, обратное утверждение -- еще большее заблуждение

Не по теме:

блин, а multiple-value-call -- крутая штука, судя по всему. надо будет как-нибудь добраться до cl:) правда, пока что что-то мне подсказывает, что сложность в рантайме у нее такая же, как и у обычного паттерн-мэтчинга. не, я понимаю, что многие штуки создаются ради удобства, но в лиспе ж можно их и макросами реализовать, а раз уж оно на уровне ядра реализовано, значит зачем-то нужно не просто так... эх, сложно с императивки перелезать:)


Цитата Сообщение от ISerg1986 Посмотреть сообщение
производительность
серьезно? вы попали не в тот раздел:-D
ну а на самом деле, разумеется, на многое влияет связность и связанность, насколько я помню в пхп это отражается и на производительности, не только на архитектуре. Если, при выполнении достаточно большого (over 50%, так скажем) запросов будут подключаться функции из определенного модуля, например, users, а при выполнении другого (с учетом того, что тех и других запросов примерно поровну) из другого, но из users функции не требуются совершенно, то разумеется, это будет быстрее работать.

Не по теме:

Отсюда и стали применять MVC и в вебе, по-моему.


Цитата Сообщение от ISerg1986 Посмотреть сообщение
Создавать функции ради таких вещей, состоящие из других функций - странно.
да разумеется. функция должна делать что-то конкретное, совсем не обязательно городить из них огород типа того, что paskalnikita предложил в начале -- это бред. Это примерно как http://habrahabr.ru/post/172119/, только в миниатюре. Однако ТС-у это помогло, судя по всему.
Цитата Сообщение от ISerg1986 Посмотреть сообщение
В сессии не хранят логины - пароли.
в сессии хранят все, что угодно, хоть грязные носки. Клиент об этом все равно не узнает.
Срок жизни сессии не только можно, но и НУЖНО настраивать, или вы javascript с php перепутали? Вы -- владелец сервера. Ну или ок, можете серверные скрипты писать/изменять. Недаром у session.gc_maxlifetime и session.cookie_lifetime доступ PHP_INI_ALL, в конце-то концов!
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Его пишут в бд и в куку.
Далее - есть кука? Да. А что там? Строка. А есть ли в базе такая строка? Есть. Это наш человек.
ок, храним не в файлах, а в базе (попутно реализовав gc, разумеется. впрочем, я не говорю, что это плохой подход -- все зависит от ситуации)
хм... хотел прочитать а что будет дальше?? чем этот механизм отличается от механизма сессий в пхп? то, что вы не в /tmp директорию пишите, откуда все считать могут? ну ок, есть же session.cookie_path. Да я вам более скажу, есть даже http://php.net/manual/ru/funct... andler.php, через который вы можете спокойненько реализовать ваш механизм для сохранения сессии в базе.

Ais72tum, еще раз настоятельно прошу закрыть ваш дев-сервер на винде от посторонних глаз (Listen 127.0.0.1:80, вместо просто Listen 80, в конфиге апача вашего, денверовского, или пропишите подсеть или айпишники, которым вы доверяете)

Не по теме:

Цитата Сообщение от ISerg1986 Посмотреть сообщение
all_about_user.php
It's all about us! All about us! And that's the thing that they can't touch...

0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.04.2015, 17:43
Цитата Сообщение от NEbO Посмотреть сообщение
нельзя однозначно утверждать, что определения из математики не подходят ни к одной из областей программирования
Так я и не утверждал такого. Я говорил про то, что, если в математике где-то используется такое-то значение термина - то это совсем не означает, что в программировании у этого термина будет точно такое же значение. Хотя и не означает обратного (дежавю прямо).

Не по теме:

Цитата Сообщение от NEbO Посмотреть сообщение
еще раз настоятельно прошу закрыть ваш дев-сервер
"сначала объясните, чего вам надо! :claim:"

0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
12.04.2015, 18:16

Не по теме:

Цитата Сообщение от KOPOJI Посмотреть сообщение
"сначала объясните, чего вам надо! "
я не к вам, а к ТС. стараюсь писать долго, но подумав, и чтоб всем было хорошо:). под виндой же всегда срабатывает UNION SELECT a1,..,an INTO OUTFILE, если знать сколько в табличке было колонок. шелл залить уж слишком просто, для этого даже не надо знать структуру БД, или что-то еще. а с учетом того, что права не настроены, и известен полный абсолютный путь, который ТС любезно предоставил, получается все уж как-то слишком просто, разве нет? подробности атаки могу разъяснить, но не хочу чтобы меня так сразу на форуме забанили, и так нечасто сюда захожу


Цитата Сообщение от KOPOJI Посмотреть сообщение
Я говорил про то, что, если в математике где-то используется такое-то значение термина - то это совсем не означает, что в программировании у этого термина будет точно такое же значение.
ну разумеется просто утверждение "совсем не" -- не совсем корректно с точки зрения формальной логики. вот "не совсем" звучало бы куда логичнее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.04.2015, 18:16
Помогаю со студенческими работами здесь

Ограничение доступа в мир некоторым пользователям
Здравствуйте. Есть задача дать доступ в интернет определённому списку пользователей из AD, а остальным запретить. В системе поднят:...

Ограничение доступа к диску пользователям компьютера
Я нечайно ограничил доступ к диску пользователям компютера..... А дело в том, то я и есть пользователь, хоть и администратор.... И теперь у...

Ограничение доступа на сайт незарегистрированным пользователям.
Всем привет. Надо ограничить доступ незарегистрированным пользователям на определенные страницы сайта. Кто с этим сталкивался, скажите...

Ограничение Доступа К Базам Сервера Нескольким Пользователям
Есть сервер домино А, к которому подкючаются с внешки несколько организаций, куча юзеров, анонимный доступ есть. Надо сделать белый...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru