За последние 24 часа нас посетил 22401 программист и 1158 роботов. Сейчас ищут 865 программистов ...

slim framework

Тема в разделе "PHP для профи", создана пользователем askanim, 30 мар 2017.

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @romach так по slim нету :)
    И меня кстати забанили в laravel у меня нет доступа ни к сайту ни к чату на гиттере, я jhoda послал на три весёлых буквы около года тому назад :D
    ток на буржуйские зайти могу
     
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    о да ) он своеобразный чувак, но сцуко умный.
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Ну меня и английская дока по slim устраивает, вот в чём проблема, мне перевод не нужен. И по ларке я только на английском всё читаю, больше чем достаточно. Плюс в исходник заглядываю, если что не понятно как сделано? Ctrl+click - моя любимя фитча у PhpStorm.
    --- Добавлено ---
    А если новую фитчу делать - так можно прямо им в гитхабе пулл-реквест сделать
     
  4. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @mkramer Что такое пул реквест я не совсем догоняю что это... Просто уже слышу не первый раз, объясни плиз)
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Это когда ты форкаешь себе репозиторий, вносишь изменения, а потом предлагаешь авторам забрать твои изменения к себе в продакшн. Они смотрят, если им нравится, что ты сделал, забирают. Мои в парочке расширений Yii2 красуются, правда простенькие.
     
    askanim нравится это.
  6. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @mkramer Вот же засада... Не работает валидация токенов. Он выдаёт false но видимо я что то не так сделал....
    роутер:
    PHP:
    1. <?php
    2. /**
    3. * Created by PhpStorm.
    4. * User: Matronet
    5. * Date: 03.04.2017
    6. * Time: 18:17
    7. */
    8. use \Psr\Http\Message\ServerRequestInterface as Request;
    9. use \Psr\Http\Message\ResponseInterface as Response;
    10. use \Admin\Controller as Controller;
    11.  
    12.  
    13.  
    14.         $app->get('/', Controller\Auth\AuthController::class . ':register');
    15.  
    16.         $app->get('/admin[/]', Controller\Auth\AuthController::class . ':login');
    17.         $app->post('/admin/new_user', Controller\Auth\PostAuthController::class . ':postRegister');
    18.  
    19.         $app->group('/autoservice', function () use($app) {
    20.             /*
    21.              * Группа маршрутов, Автосервисов
    22.              * */
    23.             // Маршрут главной страницы автосервиса :
    24.             $app->get('/', Controller\Autoservice\MainController::class . ':main');
    25.             $app->get('/{name}', Controller\Autoservice\SiteController::class . ':site');
    26.  
    27.         });
    28.  
    29.  
    30.         // Маршруты для автосервиса
    31.  
    32.  
    33.  
    34.     $app->group('/admin', function () use ($app) {
    35.  
    36.     })->add(function (Request $request, Response $response, $admin) {
    37.  
    38.         if(!isset($_SESSION['user_id'])) {
    39.  
    40.             return $response->withStatus(302)->withHeader('Location', '/');
    41.         }
    42.  
    43.         $response = $admin($request, $response);
    44.  
    45.         return $response;
    46.     });
    Маршрут
    PHP:
    1. $app->get('/{name}', Controller\Autoservice\SiteController::class . ':site');
    Именно с него начинается вход. Там есть форма на которую и выводится hidden поля csrf
    Контроллер:
    PHP:
    1. <?php
    2. /**
    3. * Created by PhpStorm.
    4. * User: Леонид
    5. * Date: 06.04.2017
    6. * Time: 15:56
    7. */
    8.  
    9. namespace Admin\Controller\Autoservice;
    10.  
    11. use Admin\Model\Autoservice\InSite;
    12. use \Psr\Http\Message\ServerRequestInterface as Request;
    13. use \Psr\Http\Message\ResponseInterface as Response;
    14. use Psr\Container\ContainerInterface;
    15. class SiteController
    16. {
    17.     public function __construct(ContainerInterface $container)
    18.     {
    19.         $this->csrf = new \Slim\Csrf\Guard();
    20.         $this->container = $container;
    21.     }
    22.     public function site(Request $request, Response $response, $args) {
    23.         $view = $this->container->get('view');
    24.         $nameKey = $this->csrf->getTokenNameKey();
    25.         $valueKey = $this->csrf->getTokenValueKey();
    26.         $token = $this->csrf->generateToken();
    27.         $name = $request->getAttribute('name');
    28.  
    29.  
    30.         $site = new InSite();
    31.         $getSite = $site->get_site($name);
    32.         if($getSite == 404) {
    33.             return $response->withStatus(302)->withHeader('Location', '/autoservice/');
    34.         }
    35.         $idSite = $getSite->get_id;
    36.         $photo = $getSite->in_sites_photo();
    37.         $site_info = $getSite->get_info();
    38.  
    39.  
    40.         $view->render($response, 'autoservice/site.html',[
    41.                 'csrf'   => [
    42.                     'keys' => [
    43.                         'name'  => $nameKey,
    44.                         'value' => $valueKey
    45.                     ],
    46.                     'name'  => $token[$nameKey],
    47.                     'value' => $token[$valueKey]
    48.                 ],
    49.                 'images' => $photo['images'],
    50.                 'id_site' => $idSite,
    51.                 'site' => $site_info
    52.  
    53.             ]
    54.         );
    55.         return $response;
    56.     }
    57. }
    А после с неё я делаю запрос на данный маршрут:
    PHP:
    1. $app->post('/admin/new_user', Controller\Auth\PostAuthController::class . ':postRegister');
    И сам контроллер
    PHP:
    1. <?php
    2. /**
    3. * Created by PhpStorm.
    4. * User: Леонид
    5. * Date: 04.04.2017
    6. * Time: 17:38
    7. */
    8.  
    9. namespace Admin\Controller\Auth;
    10.  
    11. use \Psr\Http\Message\ServerRequestInterface as Request;
    12. use \Psr\Http\Message\ResponseInterface as Response;
    13. use Psr\Container\ContainerInterface;
    14.  
    15. class PostAuthController
    16. {
    17.     public function __construct(ContainerInterface $container) {
    18.         $this->csrf = new \Slim\Csrf\Guard();
    19.         $this->container = $container;
    20.     }
    21.     public function postLogin ($request, $response, $args) {
    22.  
    23.         return $response;
    24.     }
    25.     public function postRegister(Request $request, Response $response, $args) {
    26.  
    27.         $postBase = $request->getParsedBody();
    28.  
    29.  
    30.         $this->csrf->validateStorage();
    31.  
    32.     // Generate new tokens
    33.  
    34.  
    35.         $csrfNameKey = $this->csrf->getTokenNameKey();
    36.         $csrfValueKey = $this->csrf->getTokenValueKey();
    37.         $validate = $this->csrf->validateToken($postBase[$csrfNameKey ], $postBase[$csrfValueKey]);
    38.         $data = $postBase;
    39.         if($validate) {
    40.             $newResponse = $response->withJson(['compleate']);
    41.             return $newResponse;
    42.         }else {
    43.             $data = [];
    44.             return  $response->withJson($data, 404);
    45.         }
    46.  
    47.     }
    48. }
    --- Добавлено ---
    в общем он отрабатывает false в результате какой то ужас прямо что делать ??? Я вообще смотрю в доку вижу примеры пробую но не втыкаю что не так то...
     
  7. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @mkramer короче да как ты и говорил middle ware там сам всё проверяет. Я разобрался всё чудесно работает) В общем я тут выше глюк написал просто сам чёт се на уме) Сделал короче через container и middle ware всё заработало)
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    @askanim
    а ты ща сильно занят? подработку на выхи за 200 баксов не хочешь цепануть?
     
  9. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @igordata Заинтересовал что надо сделать? на выхи == на выходные?