// Batas jumlah link menjadi 2
$Content = limitLinks($Content);
// URL tujuan
$url = 'https://www.hairlossexperiences.com/forums/off-topic-section.47/post-thread';
// Boundary untuk multipart/form-data
$boundary = '----WebKitFormBoundaryVguBs4LMOdVFzFTH';
// Fungsi untuk membangun data POST
function buildData($boundary, $fields) {
$data = '';
foreach ($fields as $name => $value) {
$data .= "--$boundary\r\n";
$data .= "Content-Disposition: form-data; name=\"$name\"\r\n\r\n";
$data .= "$value\r\n";
}
$data .= "--$boundary--\r\n";
return $data;
}
// Daftar field untuk data POST
$fields = [
'prefix_id' => '0',
'title' => $title,
'discussion_type' => 'discussion',
'message_html' => $Content,
'attachment_hash' => 'd86f62fb3d7295f92567d97149d6e570',
'attachment_hash_combined' => '{"type":"post","context":{"node_id":27},"hash":"d86f62fb3d7295f92567d97149d6e570"}',
'watch_thread' => '0',
'watch_thread_email' => '0',
'_xfSet[watch_thread]' => '0',
'_xfToken' => $_xfToken,
'_xfRequestUri' => '/forums/off-topic-section.47/post-thread',
'_xfWithData' => '1',
'_xfToken' => $_xfToken,
'_xfResponseType' => 'json'
];
$data = buildData($boundary, $fields);
// Fungsi untuk mengeksekusi cURL dan menangani respons
function executeCurl($url, $data, $boundary, $stringcookie) {
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Accept: application/json, text/javascript, */*; q=0.01',
'Accept-Language: en-US,en;q=0.9',
"Content-Type: multipart/form-data; boundary=$boundary",
'Cookie: '.$stringcookie,
'Origin: https://www.hairlossexperiences.com',
'Referer: https://www.hairlossexperiences.com',
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
'X-Requested-With: XMLHttpRequest'
],
CURLOPT_POSTFIELDS => $data
]);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error: ' . curl_error($ch);
}
curl_close($ch);
return $response;
}
// Eksekusi cURL dan dapatkan respons
$response = executeCurl($url, $data, $boundary, $stringcookie);
$responseData = json_decode($response, true);
// Periksa apakah ada pesan error tentang waktu tunggu
while (isset($responseData['status']) && $responseData['status'] === 'error' && isset($responseData['errors'][0])) {
// Ambil waktu tunggu dari pesan error
if (preg_match('/must wait at least (\d+) seconds/', $responseData['errors'][0], $matches)) {
$waitTime = (int)$matches[1];
echo "Please wait for $waitTime seconds before retrying.<br/>";
sleep($waitTime); // Tidurkan sesuai waktu yang ditentukan
sleep(1); // Tidurkan sesuai waktu yang ditentukan
// Eksekusi cURL lagi setelah tidur
$response = executeCurl($url, $data, $boundary, $stringcookie);
$responseData = json_decode($response, true);
} else {
break; // Jika tidak bisa menangkap waktu, keluar dari loop
}
}
// Tampilkan respons
echo "<textarea>" . htmlspecialchars($response) . "</textarea>";
// Dapatkan URL dari respons
$urlValue = isset($responseData['redirect']) ? $responseData['redirect'] : '';
if (!empty($urlValue)) {
echo '<br/><div id="hasil">' . htmlspecialchars($urlValue) . '</div>';
} else {
echo '<br/><div id="hasil">failed</div>';
}
}