Тема: фільтрація даних у запиті PHP по $_SESSION['username']

Доброго дня та миру.
Є потреба забезпечення збереження індівідуальних даних у таблицях Mysql від розповсюдження.

На сторінці сайту зроблена форма що виводить таблицю з данимі та забезпечує її редагування пошук даних та сортування, але не має можливості фільтрації, тоб то на сторінку виводиться рядки таблиці усіх користувачів.

Коли користувач авторизуєтся на сайті то форма авторізації --
створює на серверi тимчасовий файл сесії
відправляє дані користувача у таблицю user_log, в якої фіксуєтся логін користувача, ір компьютера, дата, час
створює файл COOKIE у браузері.
З кожною новою авторизацією робится створення нового рядка у таблиці.

Це все перевірено та дуже добро працює.

Як зробити щоб кожен користувач сесії мав доступ тількі до своїх даних не знаю.

Ось така мозгокрутка.

2

Re: фільтрація даних у запиті PHP по $_SESSION['username']

Можливо на сторінку треба вставити якийсь фільтр що буде пов'язаний з $_SESSION['username'] та коли відбуваєтся запит даних з таблиці де є поле username буде запитувати тількі ті рядки де username=$_SESSION['username']
Як має виглядати цей PHP код пока не розумію.

3

Re: фільтрація даних у запиті PHP по $_SESSION['username']

Це має робитися на боці SQL. Раз у вас воно так, що є поле username, то додайте в запит WHERE по цьому полю. Звісно, по ID було б краще, але маємо те, що маємо.

4

Re: фільтрація даних у запиті PHP по $_SESSION['username']

$username = $_SESSION['username'];
$sql = "SELECT * FROM your_table WHERE username = ?";

може таке ?

Подякували: koala1

5

Re: фільтрація даних у запиті PHP по $_SESSION['username']

koala написав:

Це має робитися на боці SQL. Раз у вас воно так, що є поле username, то додайте в запит WHERE по цьому полю. Звісно, по ID було б краще, але маємо те, що маємо.

да поле є, але воно порожнє -- тому що я не розумію як за замовчуванням його зоповнювати логіном =username користувача сесії
Автоматично таке поле заповнюється тільки у таблиці user_log коли відбуваєтся авторизація.

6 Востаннє редагувалося koala (20.09.2023 14:44:24)

Re: фільтрація даних у запиті PHP по $_SESSION['username']

А як узагалі та таблиця заповнюється? Код можете показати?

7

Re: фільтрація даних у запиті PHP по $_SESSION['username']

FakiNyan написав:
$username = $_SESSION['username'];
$sql = "SELECT * FROM your_table WHERE username = ?";

може таке ?

Цей код ви пропонуєте прописати на моїй сторінці де форма редагуваня таблиці даних?

будьте ласкаві для нерозумних, а в якій частині це краще зробити, пясля запиту до таблиці?

$tabledit->mysql_database = 'xxxxx';
$tabledit->mysql_host = 'localhost';
$tabledit->mysql_user = 'xxxxx';
$tabledit->mysql_pass = 'xxxxx';
$tabledit->mysql_table = 'xxxxx';
$tabledit->mysql_primary_key = 'ID';

8

Re: фільтрація даних у запиті PHP по $_SESSION['username']

koala написав:

А як узагалі та таблиця заповнюється? Код можете показати?

Мабудь я погано пояснив
Мова іде про дві таблиці дві форми та дві різні сторінки
стрінка авторізації, таблиця user_log що заповнюєтся атоматично там все добре та про них я написав до уваги що вони існують

друга сторінка, це на якої є форма редагування даних таблиці, та для неї у базі таблиця з пустим username що також працює, тількі показує усі дані що є в таблиці

9

Re: фільтрація даних у запиті PHP по $_SESSION['username']

FakiNyan написав:
$username = $_SESSION['username'];
$sql = "SELECT * FROM your_table WHERE username = ?";

може таке ?

Зробив ось так все одно виводе усі рядки

$tabledit->mysql_database = 'cay';
$tabledit->mysql_host = 'localhost';
$tabledit->mysql_user = 'cay';
$tabledit->mysql_pass = 'Cay8520';
$tabledit->mysql_table = 'pidrozdil';
$username = $_SESSION['username'];
$sql = "SELECT * FROM your_table WHERE username = ?";

$tabledit->mysql_primary_key = 'ID';

10

Re: фільтрація даних у запиті PHP по $_SESSION['username']

Може я дурний і не знаю php (частково це так), але хіба замість ? Там не має бути значення змінної $username?

11

Re: фільтрація даних у запиті PHP по $_SESSION['username']

FakiNyan написав:

Може я дурний і не знаю php (частково це так), але хіба замість ? Там не має бути значення змінної $username?

У тому і проблема що мені треба там зиінна, а воно так не працює, я замість ? поставив $_SESSION['username']

12

Re: фільтрація даних у запиті PHP по $_SESSION['username']

також не забувайте використовувати "підствлені параметри", щоб уникнути SQL-ін'єкції
https://www.php.net/manual/pdo.prepared-statements.php

Подякували: leofun011

13

Re: фільтрація даних у запиті PHP по $_SESSION['username']

Мабудь оці дії потрібні для вирішення проблеми.
1. Знайти можливість вказувати у таблиці бази даних mysql значення за замовчуванням рівним значенню $_SESSION['username'],
або знайти який код PHP потрібно вставити для виконання цієї дії автоматично при створенні нового запису

2. Знайти код PHP що при зверненні до таблиці відфільтровує задане поле по значенню $_SESSION['username']
Якось так

Головна проблема що я ще тільки навчився трохи розуміти код, а писати його поки дуже слабий. Ось і мучусь
Ну а задачі собі сталю схоже тяжкі
Буду вдячний за будь яку допомогу.

14

Re: фільтрація даних у запиті PHP по $_SESSION['username']

В мене е ось така строку у коді

$tabledit->mysql_fields = ['username' => ['title' => 'Логін', 'placeholder' => '', 'type' => 'editbox', 'required' => true, 'listview' => true, 'maxlength' => '255'],

Як я розумію вона звертається до стовпця вказує на назву як його озаглавити, тип та росмір даних поля форми, для введенння та відобрадення.

Що требо змінити або додати до цьюго рядка коду, щоб при зверненні до ствпця виконувалась фільтрація даних по значеню що дрівнює значенню $_SESSION['username']