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

Как ограничить пользователей имеющих доступ к странице

09.03.2017, 01:39. Показов 1955. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, интересует такой вопрос


Есть страница загрузки товара


к примеру вот /tovar142

142 - это id товара

при переходе по ней любой зарегистрированный пользователь может загрузить товар

как сделать так, чтобы загружать товар смог только тот пользователь который его и создал(страницу с товаром)

в базе данных таблица php_tovar в ней присутствуют поля id(номер товара) user(id пользователя создавший данную страницу с товаром)

как опираясь на эти данные ограничить других пользователей загружать свой товар.

Сделана только верификация пользователя авторизирован он или нет, если нет, то выбивает ошибку
верификация сделана данным кодом
PHP
1
if ( !isset( $_SESSION['id'] ) )
Все необходимые скрипты готов предоставить
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2017, 01:39
Ответы с готовыми решениями:

Как ограничить доступ к странице всем кроме админа
Вопрос из элементарных, но не нашел ответа об оптимальном решении. Суть в следующем: нужно ограничить доступ к странице всем, кроме...

как ограничить доступ к папке?
народ, такая ситуация, на сайте есть папка "private", в ней лежат файлы, когда пользователь набирает в строке www.site.com/private,...

Как ограничить доступ к обработчику формы
Нашел такую информацию, что спамеры, обнаруживая форму отправки @, спамят не со страницы, где эта форма находится, а удаленно, обращаясь...

9
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,229
09.03.2017, 07:19
ну так и чекайте свою `php_tovar` на предмет user_id
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
09.03.2017, 11:37
PHP
1
2
3
4
if ( $_SESSION['id'] != данные из 'php_tovar.user')
{
    echo 'Опс,  товар не ваш';
}
1
0 / 0 / 0
Регистрация: 24.07.2014
Сообщений: 7
09.03.2017, 16:56  [ТС]
Сделал таким образом, но выбивает ошибку.

вот код строки в которой выбивает ошибку.

PHP
1
if (!isset( $_SESSION['id'] != $idus['user']))  {
сама ошибка
HTML5
1
Parse error: syntax error, unexpected '!=' (T_IS_NOT_EQUAL), expecting ',' or ')'
Нужно сделать 2 проверки.
1-я проверку авторизирован ли пользователь
2-я Проверку принадлежит ли товар данному пользователю

Вот всё, что находится в файле

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
session_start();
 
define( 'ROOT', 'http://'.$_SERVER['HTTP_HOST'] );
define( 'ROOT_DIR', $_SERVER['DOCUMENT_ROOT'] );
 
include_once ROOT_DIR . '/engine/config.php';
include_once ROOT_DIR . '/engine/func.php';
if (!isset( $_SESSION['id'] != $idus['user']))  {
    echo '<div class="big_topics bor_top round3 FFF hr"><font color="red"><b>Ошибка!</b> Вы не авторизированы.<br />Пожалуйста, воспользуйтесь формой авторизации.</font></div>';
} else {
 
 
$config_user = $pdo->Query("SELECT * from php_user WHERE id = '" . $_SESSION['id'] . "'")->fetch(PDO::FETCH_BOTH);
/*---Обрезаем email для защиты---*/
$start_end_email = preg_match( "/^([a-z0-9\-\.\_]+)(@[a-z0-9]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})/is", $config_user['email'], $outemail );
$sec_email_user = substr( $outemail[1], 0, 1 ) . '*******' . substr( $outemail[1], -1) . $outemail[2];
 
/*---Дата последнего входа---*/
 $month = array( 'янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек' );
 if ( date( 'd.m.Y', $config_user['regdata'] ) == date( 'd.m.Y', time() ) ) {
  $frd_logindate = 'сегодня в ' . date( 'H:i', $config_user['regdata'] ) . '';
 } else {
  $frd_logindate = '' . ( int ) date( 'd', $config_user['regdata'] ) . ' ' . $month[( int ) date( 'm', $config_user['regdata'] ) - 1] . ' ' . date( 'Y', $config_user['regdata'] ) . '';
 }
 
 
?>
    <?php
    $sql1 = mysql_query("SELECT `user` FROM `php_tovar` WHERE `id` = '".$_GET['id']."'");
    while ($idus = mysql_fetch_array($sql1)) 
?>
<script type="text/javascript">
    $(function(){
        var btnUpload=$('#upl_button');
        var status=$('#upl_status');
        new AjaxUpload(btnUpload, {
            action: './uploader.php',
            name: 'upl_file',
            data: {sid : '<?=session_id()?>'},
            onSubmit: function(file, ext){
                status.html('');
                if (! (ext && /^(jpg|jpeg|png|bmp|gif|ico|rar|zip)$/.test(ext))){
                    status.html('Допустимые форматы:'+"<br />"+'jpg / jpeg / bmp / png / gif / ico / rar / zip');
                    return false;
                }
                $('#file').fadeOut(0);
                $('#loading').attr('src', 'loading.gif').fadeIn(0);
            },
            onComplete: function(file, response){
                status.html('');
                $('#file').html('');
                var arr_resp = response.split("#%#");
                if(arr_resp[0]==="true"){
                    $('#loading').fadeOut(0);
                    $('#file').attr('src', 'files/' + arr_resp[1]).fadeIn(0);
                }else{
                    status.html(response);
                }
            }
        });
    });
</script>
<div class="big_topics bor_top round3 FFF hr">
      <div class="main_top hr_menu"><h1>Здравствуйте! <?=$login?></h1></div>
       <div class="wrap_user bor">
        <? include_once ROOT_DIR . '/modules/user/user_left.php'; ?>
       </div>
       <div class="wrap_user_r">
       <div class="top_games_small">Загрузка файла к товару: <?=$_GET['id']?></div>
        <?
        $sql = $pdo->Query("SELECT * FROM `php_upload` WHERE `tovar` = '".$_GET['id']."'");
        $num = $sql->RowCount();
        if($num >= 1) { echo "<div align='center'><font color='red'>Вы уже загружали товар.</font></div></div></div></div>"; exit(); }
        ?>
         <div id="add_file">
        <div id="upl_button" class="fb round3">загрузить файл</div><hr />
        <img id="loading" src="loading.gif" height="28" style="display: none;" />
        <div id="upl_status"></div>
        
    
    </div>
       </div>
 </div>
<?}?><?}?>
Ранее 9-я строчка была таковой
PHP
1
if (!isset( $_SESSION['id']))  {
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
09.03.2017, 17:17
Лучший ответ Сообщение было отмечено ale123 как решение

Решение

PHP
1
2
3
4
5
6
7
8
9
if (!isset( $_SESSION['id'])){
    echo 'не авторизован';
}else{
    if($_SESSION['id'] != $ibus['user']){
        echo 'товар не ваш';
    }else{
        // выводим что нужно
    }
}
1
0 / 0 / 0
Регистрация: 24.07.2014
Сообщений: 7
09.03.2017, 17:35  [ТС]
Теперь всегда показывает ошибку Товар не ваш
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 829
Регистрация: 09.09.2009
Сообщений: 29,554
09.03.2017, 17:42
так не сравнивайте теплое с мягким
0
0 / 0 / 0
Регистрация: 24.07.2014
Сообщений: 7
10.03.2017, 22:44  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
так не сравнивайте теплое с мягким

ну почему же, тут же идёт сравнение двух значений насколько я понимаю
к примеру id пользователя 64

$_SESSION['id'] если вывести через echo покажет 64 и $ibus['user'] покажет значение 64

в чём тогда косяк?
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 829
Регистрация: 09.09.2009
Сообщений: 29,554
10.03.2017, 23:00
Цитата Сообщение от ale123 Посмотреть сообщение
в чём тогда косяк?
значит я не правильно понял назначение колонки 'user'
0
0 / 0 / 0
Регистрация: 24.07.2014
Сообщений: 7
10.03.2017, 23:25  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
значит я не правильно понял назначение колонки 'user'
как можно по другому по решать данную задачку?

Добавлено через 4 минуты
Всем спасибо. Нашёл косяк.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.03.2017, 23:25
Помогаю со студенческими работами здесь

Как ограничить доступ к файлу php?
файл main.php ... include 'logo.php'; ... Как разрешить показать http://www..../main.php и на попытку...

Как контролировать (ограничить) доступ к папкам сайта
Задача: на сайте есть папка в ней к примеру файл protected.php, если пользователь заходит как админ он может пройти по ссылки на этот файл...

Как ограничить доступ к использованию BB-кодов пользователям?
Всем привет! Подскажите пожалуйста, если у меня есть обычный форум с обычным набором бб-кодов, как можно ограничить возможность их...

Как запретить доступ к странице?
В общем у меня такая ситуация страница генерируется в зависимости от переменной. Т.е. постоянно инклюдю 4 файла 1 - Шапка 2 - Кнопки...

Как сделать регистрацию и авторизацию пользователей с личной странице пользователя и адресом на его страницу?
Как сделать регистрацию и авторизацию пользователей с личной странице пользователя и адресом на его страницу?


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru