hjalali
(Hossein Jalali)
31 مايو 2020، 10:31م
1
لديّ دالة بسيطة جدًا “من المفترض” أن تعمل، لكنها لا تعمل لسبب ما. هل يمكن لأحد مساعدتي في فهم ما نفعله خطأ؟
نحصل باستمرار على خطأ “BAD CSRF”.
public function changeName()
{
$url = 'https://www.website.com/{username}.json';
$data = ['name' => 'James', 'api_key' => DISCOURSE_API, 'api_username' => 'system'];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:multipart/form-data'));
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
echo $response = curl_exec($ch);
if (!$response)
{
return false;
}
}
بالمناسبة، لقد جربت بالفعل نقل api_key و api_username إلى الرابط أعلاه كـ GET لكن لم يتغير شيء.
simon
31 مايو 2020، 11:49م
2
يجب عليك وضع قيم Api-Key و Api-Username في رأس الطلب. يوجد مثال باستخدام curl في نهاية هذا الموضوع قد يكون مفيدًا: Sync DiscourseConnect user data with the sync_sso route .
hjalali
(Hossein Jalali)
1 يونيو 2020، 12:16ص
3
شكرًا جزيلاً! لقد نجح الأمر.
ولأي شخص آخر يعاني من نفس المشكلة:
$url = 'https://www.website.com/{username}.json';
$data = ['name' => 'George'];
$api_key = CUSTOM_DISCOURSE_API;
$headers = array("Content-Type: multipart/form-data;", "Api-Key: $api_key", "Api-Username: system");
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($ch);
if (curl_errno($ch) !== 0) {
// التعامل مع الخطأ، استدعاء curl_close($ch) ثم الإرجاع.
}
curl_close($ch);
$discourse_user = json_decode($result);
hjalali
(Hossein Jalali)
1 يونيو 2020، 12:29ص
4
فقط لإضافة ذلك، إذا كان هناك شخص يحتاج إلى تحديث “user_field”، فاستبدل $data بهذا:
$data = ['user_fields' => ['1' => 'Something']];
الرقم “1” هو أول user_field قمت بإنشائه (حيث يتم تعيينها بالأرقام وليس بالأسماء).
brospars
(Benoit Rospars)
5 أكتوبر 2021، 9:32ص
5
منذ متى أصبح ذلك إلزاميًا؟
لم أجده في سجل التغييرات. لقد أنشأت أداة قبل عامين أو ثلاثة لإنشاء الفئات دفعة واحدة، وكانت تعمل بشكل مثالي، والآن أحصل على هذه الرسالة الخطأ…
blake
(Blake Erickson)
5 أكتوبر 2021، 3:39م
6
نعتذر عن أي مشاكل تسببت فيها هذه التغييرات. لقد قمنا بتطبيق هذا التغيير تدريجيًا وأبلغنا الأشخاص بأفضل ما يمكننا، لكن من الصعب رصد كل حالات الاستخدام المتعلقة بالإيقاف التدريجي.