رضا
2 سال پیش توسط رضا مطرح شد
6 پاسخ

گرفتن اطلاعات JSON با PHP

سلام وقت بخیر دوستان
میخواستم از سایت تریدینگ ویو پیام هشدار رو به صورت وب هوک دریافت کنم
توی توضیحاتش نوشته : "آدرسی که به عنوان وب هوک میدهید ما به صورت 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 بزارم؟؟؟ اطلاعات رو یه سایت دیگه براش میفرسته


ثبت پرسش جدید
محمد امین سلمانی
تخصص : طراح، برنامه‌نویس
@aminpypc 2 سال پیش مطرح شد
0

سلام بله.
فقط به نظر من اگه به جای

$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]);

استفاده می کردین، بهینه تر بود.

موفق باشید 😉


محمد امین سلمانی
تخصص : طراح، برنامه‌نویس
@aminpypc 2 سال پیش مطرح شد
0

سلام

خط کد های شما درست هستند ؟
خوب نگاه می کنم میبینم که به جای
$db، عبارت db نوشتید ...

فکر کنم که خود خط کد های شما خطا دارند ...

می تونی در ابتدا یک عبارت سلام در دیتابیس وارد کنید تا از اتصال درست به دیتابیس مطمئن شوید ...


رضا
تخصص : برنامه نویس
@Reza Hs 2 سال پیش مطرح شد
0

@dvlpr
سلام بله درست هستن کپی پیست کردم بعدش اسم متغیر ها رو تغییر دادم اینجا که ساده باشه اشکال تایپی هست.
بعد از ثبت این سوال خودم رفتم روی همون هاست رایگان اطلاعات رو به صورت JSON ارسال کردم به همین آدرس داخل همون هاست
همشو دریافت کرد و دردیتابیس ذخیره کرد و مشکلی نداشت
رفتم با پشتیبانی هاست رایگانش حرف زدم گفت هاست رایگان ما قابلیت اینو نداره که از خارج هاست اطلاعات بگیره

واسه همین باید روی هاست اصلی تستش کنم ببینم از تریدینگ ویو اطلاعات رو میگیره یا نه
کلیت کدها برای دریافت اطلاعات از سایت خارجی با JSON درسته؟


محمد امین سلمانی
تخصص : طراح، برنامه‌نویس
@aminpypc 2 سال پیش مطرح شد
0

سلام بله.
فقط به نظر من اگه به جای

$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]);

استفاده می کردین، بهینه تر بود.

موفق باشید 😉


محمد امین سلمانی
تخصص : طراح، برنامه‌نویس
@aminpypc 2 سال پیش مطرح شد
0

اگه اطلاعات دارای اهمیت هست، خوب هست که برای دریافت آپدیت، محدودیت آیپی تعریف کنید.
معمولا سایت های مهم، لیستی از 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 های اصلی هستند...


رضا
تخصص : برنامه نویس
@Reza Hs 2 سال پیش مطرح شد
0

@dvlpr
آقا دمت گرم این نکته دوم راجب آیپی ها رو نمیدونستم چطوری محدودیت اعمال کنم روش
اتفاقا خود تریدینگ ویو 4 تا آیپی نوشته و گفته که برای امنیت بهتره همین ها رو مجاز کنید.
عالی بود ممنون.


محمد امین سلمانی
تخصص : طراح، برنامه‌نویس
@aminpypc 2 سال پیش مطرح شد
0

خواهش می کنم 😉


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام