161 Востаннє редагувалося Анатолій (28.05.2015 23:45:40)

Re: Вивчаю базу даних MySql

- Як довго живуть дані, що були записані в сесії $_SESSION?
Якщо я сьогодні, 29 травня, зайшов створив для зразка будь-що, наприклад  дані "Логін" та "Пароль"...
потім виключив комп і пішов спати,... включаю 30 травня, я зможу переглянути свої дані print_r($_SESSION);
???

<?php
session_start();
$_SESSION["login"] = "Vasya";
$_SESSION["password"] = "Vasya_password";
?>

Я правильно розумію смисл Сесій?... самі дані "Vasya" та "Vasya_password" зберігаються на сервері в спеціальному файлику, у користувача в браузері зберігається лише Id сесії (щось на зразок 549mlehb6r8tc1e3u8tp3chsg5).  Поки живе в браузері Id сесії ми можемо взнати свої дані

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>

162

Re: Вивчаю базу даних MySql

Ви плутаєте м`яке з теплим. А вірніше сесії з куками.
Сесії зникають як тільки ви закриєте браузер.

163

Re: Вивчаю базу даних MySql

Sensetivity написав:

Ви плутаєте м`яке з теплим. А вірніше сесії з куками.
Сесії зникають як тільки ви закриєте браузер.

Сесії являють собою надбудову над cookies. При бажанні, можна поставити сесії час існування, щоб вона зберігалась після закриття браузера — функцією session_set_cookie_params чи конфігоруванням php.ini

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

164

Re: Вивчаю базу даних MySql

Дякую, просто зараз саме розглядаю тему Реєстрації учасника, ніби все просто зареєстрував,  пароль зашифрував в базі даних, а далі логічно було б легко Авторизувати користувача, от саме в авторизації хотілось би детальніше розібратись із застосуванням Cookies та SESSION.

  З сесіями та куками трошки погрався, створив невеличкий файл, і справді наразі в мене дані по сесії не виводить, якщо заново зайти на сторінку, так як сказав пан  Sensetivity, а дані що знаходяться в Cookies-файлі залишаються, хоч десять раз перевідкривай браузер.

  Взагалі, питання  впирається в що? Якщо робити авторизацію користувача, то веб-сайт знає що ти "свій" тому, що залишаються спеціальні дані (ключ/хеш/id), як на стороні клієнта (застосування Cookies) так і на стороні серверу (SESSION),... чомусь вважав, що застосування сесій безпечніше, але ж сесії тебе не будуть пам'ятати на слідуючий день, виходить що потрібно застосовувати Cookies.

Або ще повчити матеріал, щоб скомбінувати суміш Cookies та SESSION і зробити авторизацію безпечною.
P.S. Свої навчальні напрацювання залишу Створення сторінки авторизації користувача (звичайно як лиш дійду до логічного осмислення матеріалу все детальніше відкоректую)
P.S.S. А навчального незавершеного матеріалу залишилось не так й багато.... з десяток


http://не-дійсний-домен/Forum_Replace_02/Cookies_SESSION.jpg

165

Re: Вивчаю базу даних MySql

Сесія живе на сервері згідно конфігу в php.ini
По замовчуванню там щось 15 хвилин після останнього упдейту.

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

Подякували: Анатолій1

166

Re: Вивчаю базу даних MySql

Треба юзати сесії і куки.
Після заходу на сайт - перевіряєш куки, якщо все ок - ставиш сесію і далі працюєш з нею.

167

Re: Вивчаю базу даних MySql

Щодо шифрування даних

інтро, коли зустрічаєш/вивчаєш новий матеріал то звісно можуть трапитись нові слова; так мені дивне слово "хеш"
з вікіпедії і так далі "Хешування (іноді гешування, англ. hashing) — перетворення вхідного масиву даних довільної довжини у вихідний бітовий рядок фіксованої довжини. Такі перетворення також називаються хеш-функціями або функціями згортки, а їх результати називають хешем, хеш-кодом або дайджестом повідомлення (англ. message digest)."

Для мене особисто така ідентифікація звучить чудернацько, ... може через те що нове слово,...
а чи могло б це слово бути синонімом, скажімо, "секретний ключ", мені воно дуже імпонує/подобається.
А питання в чому? Назвіть мені будь-ласка ще слова синоніми, які могли б описати "Хеш", де воно застосовується в програмуванні? Щоб я міг більше усвідомити що таке "хеш" і в яких контекстах його доречно використовувати.

Більше того, питання два: Чи коректно буде застосувати синонім слова "хеш" - "секретний ключ" в контексті авторизації?
Цитата:

.... Залишаємо "секретний ключ" щось на зразок - 9cf63578acfe57e5de3440ac10643ab5 - в coockie-файлові в браузері користувача....

чи так теж коректно сказано:

....Залишаємо хеш-код, щось на зразок - 9cf63578acfe57e5de3440ac10643ab5 - в coockie-файлові в браузері користувача....

http://не-дійсний-домен/pictures_02/hash_pictures.png

168

Re: Вивчаю базу даних MySql

Перша редакція навчального матеріалу Авторизація на сайті

http://не-дійсний-домен/pictures_02/art_auth_001.jpg

169

Re: Вивчаю базу даних MySql

Перша редакція навчального матеріалу "Реєстрація на сайті"

http://не-дійсний-домен/Forum_Replace_02/art_regist_004.jpg

170

Re: Вивчаю базу даних MySql

Працюю над редакцією статті/ навчального матеріалу щодо "Завантаження зображення"

частково все працює, а частково  це в слідуючому об'ємі:
1. Завантаження зображення як файл, безпосередньо в відповідну папку на сервер - О'к.
і як альтернативний варіант зберігання малюнка вирішив також розглянути =>
2. Завантаження зображення в таблицю бази даних, як дані BLOB - тут поки що і сиджу :(
(наразі щось завантажив, а виводить тучу кракозябрів або просто браузер скачує php-сторінку)

І між іншим виникло питання, навіть два, можливо хто легко знає, хотілось би чути останню сучасну версію (2015 року), а то в неті шукаю відповідь, а там то ще mysql, то пости 2005 року, то PDO кодування, а я в ньому ще не сильний
1. Все ж як краще зберігати малюнки файлова система чи в БД?
(моя думка, напевно все ж як файл, хоча в неті дивлюсь однозначної відповіді немає, тому можна зберігати як кому зручно/ хоча, що таке зручність? все ж варто брати краще рішення => швидкість, надійність, обслуговування даних => виходить для кожного конкретного завдання варто зважити на свої конкретні відповідні "плюшки")

наприклад за бд: ресурс

This arguement continues to rage and many lives have been lost trying to prove that this is a Bad Idea(tm). The facts are this method of binary storage is very successful and has many advantages over file system storage. Some advantages are:
Referential integrity (ACID Consistency)
Ease of backup
Saving of Inodes
Easy categorisation
No Name collisions
Storage of Meta Data (data about data)
Central point of operations
Replication over multiple servers

http://не-дійсний-домен/pictures_02/art_picture_04.jpg

171

Re: Вивчаю базу даних MySql

А щодо другого питання? ... забув, поки перший пост розглядав :)
та гаразд, тоді спитаю за код, що пишу сьогодні, завтра може він буде вже другим
Може хто виправить в чому помилка, та й суть скрипту я розповім як розумію а Ви скоректуєте якщо помиливсь  в усвідомленні

Загалом другий спосіб, що розглядаю внесення файлу зображення в таблицю бази даних.

if (isset($_POST['submit'])) {
$image = file_get_contents( $_FILES['userfile']['tmp_name']);
$image_type = $_FILES['userfile']['type'];
# зєднуємось з базою даних
$mysqli = new mysqli("localhost", "User", "password", "DB_name");
//екрануємо спеціальні символи для застосування в SQL-виразі 
$image = $mysqli->real_escape_string($image);
//вносимо файл малюнку та тип малюнку в таблицю For_Pictures бази даних
$sql = "INSERT INTO For_Pictures (content,img_type) VALUES ('".$image."','$image_type')"; 
$mysqli->query($sql);
/*** Give praise and thanks to the php gods ***/
echo " Successfully!<br><br>";
$mysqli->close();
}

скрипт, якщо малюнок відправлений з html-форми, то php-обробник вносить дані в таблицю бази даних

Є пару ключових моментів на які варто звернути увагу:
1. Створити таблицю For_Pictures, що має як мінімум два поля, але краще три :)
  (1. id - номер для ідентифікації малюнку, номер він і є номер
   2. content - поле для зберігання малюнку, тип даних візьмемо MEDIUMBLOB (об'єм поля відповідно до 16 Мбайт, щоб якісне фото помістити
   3. img_type - Є момент, що пізніше як необхідно виводити малюнок в браузері необхідно застосоувати рішення
     

     header("Content-type: ".$row['img_type']);
                 echo $row['content']; 

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

2. Момент. Застосування file_get_contents ? Перетворюємо тимчасовий файл $_FILES['userfile']['tmp_name'], що отримали з html-форми в строковий рядочок, правильно? а не можна просто втулити тимчасовий файл в базу даних?
         

$image = file_get_contents( $_FILES['userfile']['tmp_name']);

3. Момент Екрануємо дані для застосування в SQL-виразі, а ця функція не пошкодить сам файлик зображення? якщо вона буде щось екранувати,вставляти,замінювати?...
       

$image = $mysqli->real_escape_string($image)

4. момент внесення файлу в таблицю бази даних, після проведених операцій:
     .....=> file_get_contents()=>real_escape_string() => VALUES ('".$image."') .
      Я що вже заношу в таблицю?, дані string?,- що собою представляють набір символів малюнку, щось на зразок,    "......7C43F13747836EEF2E433B82338DA38FD48A......"


і 5 Ржу не можу :) все вже працює :) :) :)

ось малюнок з бази даних достав, хех гаразд в статі презентую два методи завантаження так як в мене вийшло на сьогоднішній день

http://не-дійсний-домен/Forum_Replace_02/test_scrtipt.jpeg


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

$mysqli = new mysqli("localhost", "User", "password", "DB_name");
$result = $mysqli->query("SELECT content,img_type FROM For_Pictures LIMIT 1 ");
while ($row = $result->fetch_assoc()) 
{
header("Content-type: ".$row['img_type']);
echo $row['content'];
};
$mysqli->close();

172

Re: Вивчаю базу даних MySql

Зберiгати зображення в бд - погана практика.

173

Re: Вивчаю базу даних MySql

VTrim написав:

Зберiгати зображення в бд - погана практика.

Пруф в студію

174

Re: Вивчаю базу даних MySql

Все це перевiрялось
http://myrusakov.ru/mysql-image.html

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

175

Re: Вивчаю базу даних MySql

Бачив я цю інформацію також, але чомусь повідомлення в 5 абзаців мене не переконало, порівняно з об'ємом дослідження в статті за ресурсом 

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

176

Re: Вивчаю базу даних MySql

Анатолій написав:

Бачив я цю інформацію також, але чомусь повідомлення в 5 абзаців мене не переконало, порівняно з об'ємом дослідження в статті за ресурсом 

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

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

Подякували: Анатолій1

177

Re: Вивчаю базу даних MySql

Проста вибiрка даних з одного файлу швидша нiж з субд.
Якось вже сперечались про це, де funivan виклав скрiни тестiв по швидкостi.

Замiсть простоi видачi браузеру шляху до файлу виходять лишнi "танцi з бубном" для вiдправки серверу заголовкiв,що це саме картинка,та ше й з бд.
Черпаэться бiльше ресурсiв серверу,як при смиканнi бд так i при виводi зображення.

Подякували: Анатолій1

178

Re: Вивчаю базу даних MySql

quez написав:

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

VTrim написав:

Проста вибiрка даних з одного файлу швидша нiж з субд.
Якось вже сперечались про це, де funivan виклав скрiни тестiв по швидкостi.
Замiсть простоi видачi браузеру шляху до файлу виходять лишнi "танцi з бубном" для вiдправки серверу заголовкiв,що це саме картинка,та ше й з бд.
Черпаэться бiльше ресурсiв серверу,як при смиканнi бд так i при виводi зображення.

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

179

Re: Вивчаю базу даних MySql

http://replace.org.ua/topic/3537/

180

Re: Вивчаю базу даних MySql

Хоча по лiнку вище файл як масив file() (це повiльнiше) нiж просто стягнути його вмiст,типу file_get_contents()