سلام وقت بخیر دوستان
میخواستم از سایت تریدینگ ویو پیام هشدار رو به صورت وب هوک دریافت کنم
توی توضیحاتش نوشته : "آدرسی که به عنوان وب هوک میدهید ما به صورت POST و به صورت json اطلاعات رو میفرستیم"
من اومدم تست کنم ببینم و پیامی که این سایت برام میفرسته رو داخل دیتابیس ذخیره کنم (یه هاست رایگان جهت تست)
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$json = file_get_contents('php://input');
$signal0 = json_decode($json);
$signal = $signal0->TXT;
// Query and save data in Database
$query= db->prepare("INSERT INTO `test` (`id`, `text` ) VALUES (?, ?);");
$querydata= [NULL, $signal ];
$ready= $query->execute($querydata);
}
پیغام json هم در سایت تریدینگ ویو این شکلیه : {"TXT":"salam"}
ولی متاسفانه هیچ پیغامی رو دریافت نمیکنه ، اطلاعات زیادی راجب وبهووک ندارم ممنون میشم راهنماییم کنید
آیا سرور یا هاست میتونه آیپی های خارج رو بلاک کنه و نگیره اطلاعات رو ؟ اگه اینطوره چطوری چک کنم
همچنین برای اسیتفاده از تابع filegetcontents مقدار متغیرش رو باید php: // input بزارم؟؟؟ اطلاعات رو یه سایت دیگه براش میفرسته
سلام بله.
فقط به نظر من اگه به جای
$query= db->prepare("INSERT INTO `test` (`id`, `text` ) VALUES (?, ?);");
$querydata= [NULL, $signal ];
$ready= $query->execute($querydata);
از این
$query= $db->prepare("INSERT INTO `test` (`text`) VALUES (?)");
$query->execute([$signal]);
استفاده می کردین، بهینه تر بود.
موفق باشید 😉
سلام
خط کد های شما درست هستند ؟
خوب نگاه می کنم میبینم که به جای
$db، عبارت db نوشتید ...
فکر کنم که خود خط کد های شما خطا دارند ...
می تونی در ابتدا یک عبارت سلام در دیتابیس وارد کنید تا از اتصال درست به دیتابیس مطمئن شوید ...
@dvlpr
سلام بله درست هستن کپی پیست کردم بعدش اسم متغیر ها رو تغییر دادم اینجا که ساده باشه اشکال تایپی هست.
بعد از ثبت این سوال خودم رفتم روی همون هاست رایگان اطلاعات رو به صورت JSON ارسال کردم به همین آدرس داخل همون هاست
همشو دریافت کرد و دردیتابیس ذخیره کرد و مشکلی نداشت
رفتم با پشتیبانی هاست رایگانش حرف زدم گفت هاست رایگان ما قابلیت اینو نداره که از خارج هاست اطلاعات بگیره
واسه همین باید روی هاست اصلی تستش کنم ببینم از تریدینگ ویو اطلاعات رو میگیره یا نه
کلیت کدها برای دریافت اطلاعات از سایت خارجی با JSON درسته؟
سلام بله.
فقط به نظر من اگه به جای
$query= db->prepare("INSERT INTO `test` (`id`, `text` ) VALUES (?, ?);");
$querydata= [NULL, $signal ];
$ready= $query->execute($querydata);
از این
$query= $db->prepare("INSERT INTO `test` (`text`) VALUES (?)");
$query->execute([$signal]);
استفاده می کردین، بهینه تر بود.
موفق باشید 😉
اگه اطلاعات دارای اهمیت هست، خوب هست که برای دریافت آپدیت، محدودیت آیپی تعریف کنید.
معمولا سایت های مهم، لیستی از IP های سرور ها رو ارائه می دهند.
شما می توانید که یک آرایه از IP ها رو در PHP تعریف کنید و اگه IP درخواست دهنده در اون آرایه نبود، از ادامه کار جلوگیری کنید.
$ip_list = ['127.0.0.1', '192.168.0.1'];
if(!in_array($_SERVER['REMOTE_ADDR'], $ip_list) {
exit();
}
و یا اگر لیست رو ندارن، خودتون ایجاد کنید!
چطوری؟
باید یک ستون به نام ip در همان جدول (و یا یک جدول دیگر) ایجاد کنید.
بعد از هر درخواست، IP رو در جدول وارد کنید.
بعد از یک مدت دستتون میاد که کدوم IP ها بیشترین تکرار رو داشتن و IP های اصلی هستند...
@dvlpr
آقا دمت گرم این نکته دوم راجب آیپی ها رو نمیدونستم چطوری محدودیت اعمال کنم روش
اتفاقا خود تریدینگ ویو 4 تا آیپی نوشته و گفته که برای امنیت بهتره همین ها رو مجاز کنید.
عالی بود ممنون.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟