Задать вопрос

Как можно get запрос превратить в POST?

Требуется сделать "трансляцию" голосовалки.
Голосовалка работает через POST
Как сделать чтобы принимался GET запрос (сформированный URL с вариантом голосования)
на сайте преобразовывался в POST и уже отправлялся "самому себе" в головастику.
То есть надо для POST
action=polls&view=process&poll_id=2&poll_2=6&poll_2_nonce=3eb598623b

построить GET
  • Вопрос задан
  • 2002 просмотра
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
trapwalker
@trapwalker
Программист, энтузиаст
Плохая идея.
Но вы можете сделать любой, в том числе и POST запрос с помощью CURL.
Ответ написан
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
1) Если есть доступ к скрипту голосования, то просто поменяй $_POST на $_REQUEST
$_REQUEST = содержит данные из $_GET и $_POST

2) Если по каким-то причинам, не хочется использовать $_REQUEST, но есть доступ к скрипту, то можно просто пересетить параметры в самом начале скрипта
if (empty($_POST) && $_GET) {
    foreach($_GET as $k=>$v) {
        $_POST[$k] = $v;
    }
}


3) можно прямо в скрипте выполнить запрос, переместив все параметры в POST через curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.site.com/vote.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_GET));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);

var_dump($server_output)


4) Делаем отдельную страницу, на ней делаем скрытую POST форму значения которой заполняются используя get параметры, при загрузке страницы с помощью JS сабмитим форму. Что-то вроде http://site.com/vote-redirect.php
с таким кодом
<form action="http://www.site.com/vote.php" method="POST" id="form">
<input type="hidden" name="vote[1]" value="<?=intval($_GET['vote_1']??1)?>">
<input type="hidden" name="vote[2]" value="<?=intval($_GET['vote_2']??0)?>">
</form>
<script>
document.getElementById('form').submit();
</script>

и дальше
http://site.com/vote-redirect.php?vote_1=1&vote_2=0
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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