PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (2): [1] 2 »
Найдено сообщений: 17
Wet
Отправлено: 13 Апреля, 2017 - 05:11:40 • Тема: Ограничение доступа в yii2 по mysql • Форум: CMS и фреймворки
Ответов: 1 Просмотров: 934
Подскажите кто нить как реализовать ограничение доступа по определенной таблице mysql?
Допустим есть 4 таблицы mysql:
1) таблица юзеров
id _ name
1 _ Иван
2 _ Федя
2) таблица прав доступа
id _ userid _ grouptid _ acess ( 0 - доступ закрыт, 1 - просмотр, 2 - просмотр, изменение… )
1 _ 1 _____ 1 _______ 1
2 _ 2 _____ 2 _______ 2
3) таблица контента (представим, что у каждой группы свой контент)
id _ content
1 _ текст
2 _ /img/1.jpg
4) таблица групп
id _ groupname
1 _ Группа 1
2 _ Группа 2
К примеру авторизовались под 1м юзером, yii должно ограничить доступ по 2й таблице и вывести только текст.
Прописал в BaseController:
public function beforeAction($action)
{
if (Yii::$app->user->isGuest) {
return $this->redirect('/site/login');
}
if (!parent::beforeAction($action)) {
return false;
}
$content = [];
$id = Yii::$app->user->id;
$content = User::getGroup($id);
return true;
}
а в модели User:
public function getGroup($userID)
{
$array = SysAcl::find()->where(['userid' => $userID])->select(['grouptid'])->asArray()->indexBy('id')->all();
$arr = [];
foreach ($array as $key => $value) {
$arr[$key] = $value['grouptid'];
}
// возвращаем массив вида [id] => [grouptid]
return $arr;
}
В результате получил id группы, но что дальше делать пока еще не знаю. Как вывести привязаный к группе контент? Если не знаете как yii2 это реализовать, то хотя бы подскажите как вы это делаете в другой MVC, чтобы хотя бы примерно понять как наследуется наше значение от базового контроллера к другим контроллерам.
Wet
Отправлено: 11 Апреля, 2017 - 05:07:44 • Тема: В YII2 связать 3 таблицы mysql • Форум: CMS и фреймворки
Ответов: 2 Просмотров: 1311
Есть таблицы mysql:
1)
id name
1 Вася
2 Иван
3 Таня
2)
id user_id employee_id
1 _2 ____ 2
2 _1 ____ 1
3 _3 ____ 2
3)
id employee
1 Директор
2 Продавец
Создал все необходимые модели для всех 3х таблиц в gii. В CRUD создал поисковую модель, контроллер и вьюхи по модели 2й таблицы. На выходе получаем данные из 2й таблицы. И наконец задача: Вывести(связать, наверное как-то в ActiveRecord) данные в таком виде:
Иван Продавец
Вася Директор
Таня Продавец
Подскажите пжл как это реализовать
Wet
Отправлено: 30 Июня, 2016 - 02:10:57 • Тема: Округлить числа • Форум: Вопросы новичков
Ответов: 2 Просмотров: 218
Prizma пишет:
Вы противоречите сами себе, как на выходе может быть такой массив, если мы все результирующий значения будет округлять до 3600, 7200 или исключать?
Да, не правильно объяснил Я имел ввиду что при сложении должны получитьА при округлении (конечный результат)
Wet
Отправлено: 29 Июня, 2016 - 10:23:09 • Тема: Округлить числа • Форум: Вопросы новичков
Ответов: 2 Просмотров: 218
Есть массивЗадача: подсчитать значения по порядку (по ключам от 0-4) и округлить с условием:
1) если значение < 5400, то округляем до 3600
2) если значение < 7200 и >= 5400, то округляем до 7200
Все что не входит в условие исключаем.
Там получается мы должны складывать значения до тех пор, пока не дойдет до 7200. Т.е. если складывать 1500+500+2000=4000 и если еще прибавить 7000, то превысит наш лимит, значит нужно сохранить 4000 и по новой начать считать. Следом идет 7000 (после 2000), берем ее складываем со след значением 7000+10000=17000(как видим снова превышает наш лимит, значит снова сохраняем 7000 и берем след значение 10000). 10000 не проходит по нашим условиям, значит исключаем.
На выходе должны получить такой массив
Wet
Отправлено: 18 Марта, 2016 - 12:17:33 • Тема: Задача: перебрать массив ( рассортировать ключи и значения ) • Форум: Вопросы новичков
Ответов: 0 Просмотров: 90
Есть многомерный массив:
Нужно найти совпадения в ключах и как то объединить их. На выходе должно получится такое:
test.txt:58 test2.txt:8 test2.txt:18
тестовый текст
test.txt:59
бла бла бла
test2.txt:7
сушка
Начал юзать array_search, но безрезультатно(PHP:
скопировать код в буфер обмена
foreach ( $arr as $file_name => $content )
{
foreach ( $content as $key => $val )
{
if ( $find === false )
{
echo "no find<br>" ;
}
else
{
echo "find: " . $find . "<br>" ;
}
}
}
Подскажите, пож, как решить эту задачку?
Wet
Отправлено: 15 Марта, 2016 - 18:05:40 • Тема: Задача: найти в файле всё что находится в {t}{/t} • Форум: Регулярные выражения
Ответов: 0 Просмотров: 169
Нужно найти в файле всё что находится в {t}{/t} и записать в лог. А также при записи текста, который находится в {t}{/t} нужно указать из какого файла это взято и с какой строки. Подскажите, пож), как лучше реализовать данную задачу. Недопиленный вариант:
PHP:
скопировать код в буфер обмена
// функция записи
function log ( $filename , $mode , $data = false ) {
$file = fopen ( $filename , $mode ) ; }
// массив ключей для array_combine
// массив значений для array_combine
// регулярка
$gettext_pattern = array ( "~\{\" ([^\" ]+)\" \|_([^\}]*)\}~" , // {"Text"|_}
"~\{t\}([^\{]+)\{/t\}~" // {t}Text2{/t}
) ;
// пробегаемся по списку файлов
foreach ( $p as $k => $v )
{
{
//разбиваем файл на "номер строки => контент"
foreach ( $f as $num => $str )
{
//пробегаемся по регулярке
foreach ( $gettext_pattern as $patt )
{
// если есть совпадения обрабатываем
{
// отдельно пишем номер строки для ключей array_combine
$kArr [ ] = $num + 1 ;
// отдельно пишем найденый текст для значений array_combine
/*$kArr = array('k1','k2');
$vArr = array('v1','v2');*/
}
}
}
}
}
/* объединяем найденые ключи с текстом (и тут начинаются проблемы, тк текст бывает встречается на одной и той же строке, пример: 'стр1: <span>{"Тестовый"|_}</span>{"текст"|_}' - это будет засчитано как два значения на 1 строку) Дальше пока не решил как добавить имя файла*/
if ( $resArr )
{
}
Как быть? Подскажите, кто нить)
Wet
Отправлено: 20 Ноября, 2015 - 07:02:37 • Тема: Помогите разобраться с массивом • Форум: Вопросы новичков
Ответов: 5 Просмотров: 328
так же для
Спасибо, я на днях сделал так:
PHP:
скопировать код в буфер обмена
private function filterData
( $importArray , $arrayToExport = array ( ) , $newKeys ) {
foreach ( $importArray as $newdata )
{
foreach ( $newdata as $index => $val )
{
{
foreach ( $combineArray as $key => $value ) {
if ( $key == 'ID' ) { }
elseif ( $key == 'key1' )
{
if ( $value == 0) { $newValue = false ; } else { $newValue = true ; }
$arrayToExport [ $index ] [ $key ] = $newValue ;
}
elseif ( ( $key == 'date1' || $key == 'date2' ) && $value != '' )
{
$arrayToExport [ $index ] [ $key ] = $date ;
}
else
{
$arrayToExport [ $index ] [ $key ] = $value ;
}
}
}
}
}
return $arrayToExport ;
}
Wet
Отправлено: 17 Ноября, 2015 - 13:22:52 • Тема: Помогите разобраться с массивом • Форум: Вопросы новичков
Ответов: 5 Просмотров: 328
Подскажите люди добрые как создать массив в массиве.
Задача: Принять массив, подготовить массив для отправки (убрать лишние ключи и их значения).
PHP:
скопировать код в буфер обмена
//нужен примерно такой массив
(
(
[ a] => 0
[ b] => 1
) ,
(
[ a] => 0
[ b] => 11
)
)
//а получается только такой(
(
[ a] => 0
[ b] => 1
)
class newClass {
//массив для отправки
//принимаем массив
function importData ( $array ) {
//передаем массив функции дабы убрать лишние ключи и их значения
$this -> filterData ( $array ) ;
//выводит только 1 массив, а нужно все что пришли в данную переменную $array
echo '<pre style="color:green;">' ; var_export ( $this -> newArr ) ; echo '</pre>' ; }
//функция для фильтрации массива
private function filterData( $array )
{
//пробегаемся по массиву (добираемся до нужных ключей и значений)
foreach ( $array as $arrays )
{
foreach ( $arrays as $item )
{
foreach ( $item as $key => $value )
{
//фильтруем массив
if ( $key == 'ID' ) { }
elseif ( $key == 'map' )
{
if ( $value == 0) { $newValue = false ; } else { $newValue = true ; }
//тут начинаются проблемы, ключи просто на просто перезаписываются
$this -> newArr [ $key ] = $newValue ;
}
else
{
//тут начинаются проблемы, ключи просто на просто перезаписываются
$this -> newArr [ $key ] = $value ;
}
}
}
}
}
}
}
$newClass = new newClass;
//передаем некий массив
$newClass -> $importData ( $array )
Wet
Отправлено: 12 Ноября, 2015 - 08:59:42 • Тема: Soap не отправляет запрос • Форум: Вопросы новичков
Ответов: 0 Просмотров: 185
Подскажите кто нить почему авторизуюсь, но данные не могу отправить.
client.php:
PHP:
скопировать код в буфер обмена
ini_set ( "soap.wsdl_cache_enabled" , "0" ) ;
$client = new SoapClient
(
"http://site.ru/wsdl.wsdl" ,
'login' => "login" ,
'password' => "password"
)
) ;
//авторизацию проходит
if ( $client ) { print_r ( $client ) ; } else { echo 'false' ; }
//Функции выводит
//но на запросе виснит
$soapCall = $client -> Test ( '11111111' ) ;
if ( $soapCall ) { var_dump ( $soapCall ) ; } else { echo 'false' ; }
Вопрос решен, нужно было просто указывать правильные параметры.
Wet
Отправлено: 03 Октября, 2013 - 02:50:53 • Тема: unserialize, как правильно сделать? • Форум: Вопросы новичков
Ответов: 0 Просмотров: 318
Дело такое - есть массив со стандартными ключами, его нужно загнать в бд, а потом вывести обратно. Использовал serialize, если сделать так:
PHP:
скопировать код в буфер обмена
print_r ( $sdrg ) ; //то всё отлично работает,
//но если сделать так:
$ins = ( "INSERT INTO `table` ( `name` ) VALUES ('" . $ser . "');" ) ;
}
//то выдаёт ошибку - Warning: unserialize() expects parameter 1 to be string, array given in...
Подскажите как правильно сделать.
(Добавление)
Тема закрыта, решил вопрос таким образом:
Wet
Отправлено: 01 Октября, 2013 - 09:44:21 • Тема: Массив загнать в бд • Форум: Вопросы новичков
Ответов: 4 Просмотров: 324
teddy пишет: Wet пишет: $r = mysql_fetch_object($out);
Wet пишет: Warning: unserialize() expects parameter 1 to be string, object given in
Остальное даже и не читал. Ошибка означает, что функция unserialize() в качестве параметра ожидает строку, а вы передаете туда объект(fetch_object)
(Добавление)
Выберите значение того поля которое содержит в себе сериализованную строку и передайте её в качестве параметра в unserialize $r->serializedStr
Если в бд не забивать, то всё нормально Черти что, рехнуться можно...
Может кто знает выход?
Wet
Отправлено: 30 Сентября, 2013 - 04:40:20 • Тема: Массив загнать в бд • Форум: Вопросы новичков
Ответов: 4 Просмотров: 324
Дело такое - есть массив со стандартными ключами, его нужно загнать в бд. Написал так:
но выдает ошибку: Notice: Uninitialized string offset: 1 !!!
Уже мозги кипят(
Страниц (2): [1] 2 »
Powered by ExBB FM 1.0 RC1. InvisionExBB