PHP post请求转get

post转get

使用方法:https://www.sadadasaf.com/api.php?key=yyy&shuo=你好

可把GPT转为GET请求

<?php
set_time_limit(0);

// 获取GET参数
$shuo = isset($_GET['shuo']) ? $_GET['shuo'] : '';
$key = isset($_GET['key']) ? $_GET['key'] : '';

// 获取访问时间
$time = time();
$datetime = date('Y-m-d H:i:s', $time);

// 获取IP地址
$ip = $_SERVER['REMOTE_ADDR'];

// 连接到数据库
$mysqli = new mysqli('localhost', 'mysql', 'mysqlpassworld', 'mysql');

// 检查连接是否成功
if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}

// 查询数据库以检查key是否存在
$query = "SELECT * FROM chat_yonghu WHERE yhmc = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('s', $key);
$stmt->execute();
$result = $stmt->get_result();

// 检查IP请求限制
$ip_file = 'ip_requests.txt';
$ip_requests = file_exists($ip_file) ? json_decode(file_get_contents($ip_file), true) : [];

if (!empty($ip_requests) && ($time - end($ip_requests)) < 0 && $ip !== key($ip_requests)) {
    echo "Error: Only the current IP can use the service within 10 minutes.";
    exit;
}

// 如果key存在于数据库中
if ($result->num_rows > 0) {
    // 更新IP请求时间
    $ip_requests[$ip] = $time;
    file_put_contents($ip_file, json_encode($ip_requests));

    // ... 这里是您之前的代码,用于调用ChatGPT API并显示生成的答案
    // 请将您之前的代码粘贴到这里
      set_time_limit(0);

// 获取GET参数
$shuo = isset($_GET['shuo']) ? $_GET['shuo'] : '';

// 获取访问时间
$time = date('Y-m-d H:i:s');

// 获取IP地址
$ip = $_SERVER['REMOTE_ADDR'];

// ChatGPT API endpoint
$url = 'https://api.openai.com/v1/chat/completions';

// Your API key
$api_key = 'GPTkey';

// Request headers
$headers = array(
    'Content-Type: application/json',
    'Authorization: Bearer ' . $api_key,
);

// Request data
$data = array(
    'model' => 'gpt-3.5-turbo',
    'temperature' => 0.8,
    'max_tokens' => 3000,
    'messages' => [
        ["role" => "user", "content" => $shuo],
    ]
);

// Send request
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
curl_close($ch);

// Parse response
$response_data = json_decode($response, true);

// Display generated answer
if (isset($response_data['choices'][0]['message']['content'])) {
    $answer = $response_data['choices'][0]['message']['content'];
    echo $answer;

    // 记录访问时间、IP地址和内容到jilu.txt
    $log = "Time: {$time}\nIP: {$ip}\nContent: {$shuo}\nAnswer: {$answer}\n\n";
    file_put_contents('jilus.txt', $log, FILE_APPEND);
} else {
    echo "Error: Unable to generate an answer.";
}
   


    // 记录访问时间、IP地址和请求内容到jilu.txt
    $log = "Time: {$datetime}\nIP: {$ip}\nContent: {$shuo}\n\n";
    file_put_contents('jilu.txt', $log, FILE_APPEND);

} else {
     $log = "Time: {$datetime}\nIP: {$ip}\nContent: {$shuo}\n\n";
    file_put_contents('jilu.txt', $log, FILE_APPEND);

    echo "Error: You need to purchase access to use this service.";
}

// 关闭数据库连接
$mysqli->close();
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP是一种常用的服务器端编程语言,可以使用它来发送POST和GET请求POST请求通常用于向服务器提交数据,而GET请求通常用于从服务器获取数据。 发送POST请求的方法是使用PHP的curl库。curl库是一个强大的工具,能够向服务器发送并接收数据。要发送POST请求,需要定义一个url,一个包含需要提交的数据的数组,并打开curl会话。 例如,下面的代码向名为“example.com”的URL发送POST请求: $url = 'http://example.com'; $data = array('name' => 'John Doe', 'email' => 'jdoe@example.com'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $result = curl_exec($ch); curl_close($ch); 其中,curl_setopt()方法用于设置会话选项,CURLOPT_URL选项用于设置URL,CURLOPT_POST选项用于指定使用POST请求,CURLOPT_POSTFIELDS选项用于指定提交的数据,在这个例子中,是一个包含名字和电子邮件地址的数组。 发送GET请求也很简单,只需要使用PHP的file_get_contents()函数即可。该函数使用指定的URL返回一个字符串。 例如,下面的代码将使用GET请求从名为“example.com”的URL获取数据: $url = 'http://example.com'; $data = file_get_contents($url); 以上是使用PHP发送POST和GET请求的简单方法,不断了解和学习这些方法,可以让开发者更加熟练地处理与服务器之间的交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值