如何“刷新” file_get_contents('php:// input')的状态?

时间:2019-05-23 20:59:04

标签: php php-telegram-bot

我正在尝试使用PHP代码为电报进行BOT。

基本上,用户必须在插入之间进行选择: 1)姓名 2)姓 3)地址

选择姓氏时,他必须写上姓氏,我想将其存储为可变名,但是,如果我使用$update = file_get_contents('php://input'),我总是会读“姓氏”(这是用户的第一输入)

所以我认为我的问题是:如何在程序的特定“时刻”更改file_get_contents('php://input')的内容?

请阅读我的代码以获取更多详细信息,非常感谢!

    <?php
$botToken = "MYTOKEN"; //token 
$website = "https://api.telegram.org/bot".$botToken;
$update = file_get_contents('php://input'); //updates from telegram (JSON format)
$update = json_decode($update, TRUE); 

$chatId = $update['message']['from']['id']; 
$text = $update['message']['text']; 

switch($text)
    {
    case "name";
    sendMessage ($chatId,"You write name");
    break;

    case "surname";
    sendMessage ($chatId,"You write surname"); 
    sendMessage ($chatId,"Insert your surname"); 
                /* here is my problem: what i have to do to "read" what the 
                user write now? i want to store his surname into a new 
                variable*/
    break;

    case "address";
    sendMessage ($chatId,"You write address");
    break; 

    default;
    sendMessage ($chatId,"You don't write a valid command");
    break;     
    }


function sendMessage($chatId,$text)
    {
        $url = $GLOBALS[website]."/sendMessage? 
chat_id=$chatId&text=".urlencode($text);
        file_get_contents($url);
    }
?>

1 个答案:

答案 0 :(得分:0)

我是使用Java语言“破解”此程序以仅发送输入的数据和输入的HTML元素的人之一,但是您特别要求php:// input。

基本上,php:// input返回请求的HTTP标头之后的所有原始数据,而与内容类型无关。

因此,您可以使用XPath或domdocument(https://www.php.net/manual/en/class.domdocument.php)从“ php:// input”流中获取的内容中按其ID查找元素。