После того, как пользователь загрузит изображение, получите случайное имя изображения, например.mt_rand(30,999)
.imageExtension.
Сохраните это значение как имя изображения пользователя в таблице image
.Таблица изображений содержит собственные столбцы id
, user_id
и name
.
В модели Yii Image создайте метод protected function afterSave()
, который сохранит ваше изображение в файловой системе.Ваше реальное имя изображения в файловой системе будет состоять из идентификатора изображения в базе данных и имени изображения из базы данных.
Не забудьте добавить следующую строку в эту функцию:
return parent::afterSave();
Пример:
У вас есть изображение jpg me.jpg
mt_rand (30,999) дает нам 421
Таким образом, вы сохраняете свое изображение jpg в базе данных.
Строка имеет значения:
id=7, user_id=3, name=421.jpg
Теперь вы сохраняете изображение под именем 7_421.jpg
.
. При этом ваше изображение никогда не получит одно и то же имя дважды, поскольку id
, которое мы используем в первой части имени изображения, является уникальным.Более того, никто не будет знать имя изображения, потому что ему / ей понадобится и id
, и случайное число.
Чтобы отобразить изображение только для владельца, вы сравниваете зарегистрированный идентификатор пользователя совпадает с user_id
делая:
if(Yii::app()->user->id === $image->user_id) {
// display photo
}
Вам не нужно заботиться о сессии.Yii делает для вас.