Определение типа запроса в PHP (GET, POST, PUT или DELETE)

«Частный» на самом деле не является механизмом контроля доступа в смысле «Я сделал свои фотографии на facebook частным, чтобы вы их не видели».

В C ++, «private» просто говорит, что это части класса, которые вы (кодер класса) могли бы изменить в будущих версиях и т. Д., И вы не хотите, чтобы другие кодеры, использующие ваш класс, полагались на их существование или функциональность.

Если вам нужен настоящий контроль доступа, вы должны внедрить подлинные методы защиты данных.

861
задан YanDatsiuk 24 June 2019 в 19:00
поделиться

3 ответа

При помощи

$_SERVER['REQUEST_METHOD']

Пример

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
     // The request is using the POST method
}

Для получения дополнительной информации см. документацию за $ _SERVER переменная.

1252
ответ дан Peter 25 June 2019 в 05:00
поделиться
  • 1
    (1) Вы сравниваете decorate-sort-undecorate с использованием cmp аргумента; введение ключевого аргумента обрубило очень большую часть DSU' s территория. (2) Ваше решение оставляет OP со списком dict ключей... для получения то, что он хочет, he' ll должны сделать еще один цикл dict объектов (3), Ваш подробный путь имеет опечатку: s/v[2],/v[2], k/ – John Machin 3 August 2009 в 00:13

Поскольку речь идет о REST, просто получить метод запроса от сервера недостаточно. Вам также необходимо получить параметры маршрута RESTful. Причина разделения параметров RESTful и параметров GET / POST / PUT заключается в том, что для идентификации у ресурса должен быть свой уникальный URL-адрес.

Вот один из способов реализации RESTful-маршрутов в PHP с использованием Slim:

https://github.com/codeguy/Slim

$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
  echo "Hello, $name";
});
$app->run();

И настройте сервер соответственно.

Вот еще один пример использования AltoRouter:

https://github.com/dannyvankooten/AltoRouter

$router = new AltoRouter();
$router->setBasePath('/AltoRouter'); // (optional) the subdir AltoRouter lives in

// mapping routes
$router->map('GET|POST','/', 'home#index', 'home');
$router->map('GET','/users', array('c' => 'UserController', 'a' => 'ListAction'));
$router->map('GET','/users/[i:id]', 'users#show', 'users_show');
$router->map('POST','/users/[i:id]/[delete|update:action]', 'usersController#doAction', 'users_do');
9
ответ дан nurettin 24 June 2019 в 19:00
поделиться

REST в PHP можно сделать довольно просто. Создайте http://example.com/test.php (описано ниже). Используйте это для вызовов REST, например http://example.com/test.php/testing/123/hello . Это работает с Apache и Lighttpd из коробки, и никаких правил перезаписи не требуется.

<?php
$method = $_SERVER['REQUEST_METHOD'];
$request = explode("/", substr(@$_SERVER['PATH_INFO'], 1));

switch ($method) {
  case 'PUT':
    do_something_with_put($request);  
    break;
  case 'POST':
    do_something_with_post($request);  
    break;
  case 'GET':
    do_something_with_get($request);  
    break;
  default:
    handle_error($request);  
    break;
}
216
ответ дан 22 November 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: