ASPgo
3 سال پیش توسط ASPgo مطرح شد
10 پاسخ

بدست آوردن و محدود کردن تعداد Request ها به فایل Json

سلام.
ببینید الان مثلا من یه فایل Json تو سایتم دارم و میخوام تعداد Request هایی که برای URL اون فایل ارسال میشه رو بدست بیارم. چطور میتونم این کار رو انجام بدم؟
سوال دومم هم اینکه چطور میشه request هایی که برای یه فایل Json توسط یه سرور، آیپی یا وبسایت ارسال میشه رو محدود کرد؟ مثلا هر وبسایت در روز میتونه مثلا فقط 100 تا Request ارسال کنه و اگه از حد بگذره دیگه اجازه ارسال request به json رو نداشته باشه.
یه نمونه
این وبسایت API قیمت لحظه ای ارز های دیجیتال رو ارائه میده و قیمت های مختلف و لول های مختلف برای ارائه خدمات در نظر گرفته و هر لول تعداد محدودی درخواست میتونه به فایل های json ارسال کنه
حالا کاری با این وبسایت ندارم فقط میخواستم بهتر منظورمو متوجه بشید


ثبت پرسش جدید
نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 3 سال پیش مطرح شد
0

به جای فایل با پسوند json یک فایل با پسوند php (من با این مثال می گم)بعد اخرش که اعتبار سنجی انجام شدبا echo متن json رو چاپ کن بقیش کار گیرنده ی فایل json هست
حالا اعتبار سنجی :
اول چک می کنی کاربر از کجا این درخواست رو داده
حالا که می دونی از کجا اومده میری دیتابیس رو چک می کنی ببینی همچین سایتی می تونه درخواسته اگه نه همونجا return میکنی false و تمام
حالا که درست بود چک می کنی این چندمین در خواستشه از دیتابیس اگه بیشتر از حد مورد قبول بود بود دوباره ریترن کن فالس
حالا اینجا که هم از سایت درسته و هم تعداد مشخصی رو داره که درخواست بده تو میای فایل جیسان رو بر می گردونی
می ری توی دیتا بیس نام سایت رو پیدا می کنی و یکی به تعداد های درخواست هایی که کرده اضافه می کنی
کلیتش اینه که گفتم


ASPgo
تخصص : HTML، CSS، PHP و JS، طراح قالب...
@asp.gosk 3 سال پیش مطرح شد
0

@milad
@ali.bayat
@mohaligateway
ممنون میشم اگه راهنمایی کنین


ASPgo
تخصص : HTML، CSS، PHP و JS، طراح قالب...
@asp.gosk 3 سال پیش مطرح شد
0

کسی راه حلی نداره؟


نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 3 سال پیش مطرح شد
1

می تونین به جای اینکه فقط فایل Json رو چاپ کنین برای استفاده قبلش یک اعتبار سنجی انجام بدین
یعنی اول چک کنین از کدوم وبسایته آیا وبسایت مجازه درخواست بده یا نه
بعد هم توی یک دیتا بیس هر بار تعداد درخواست رو چک کنین که از تعداد مجاز بالا تر نره
مثلا اول ببینین ایا می تونه درخواست کنه و.. بعد فایل رو اجرا کنین


ASPgo
تخصص : HTML، CSS، PHP و JS، طراح قالب...
@asp.gosk 3 سال پیش مطرح شد
0

@Nima.nori
ممنون
لطفا مرحله اول(اعتبار سنجی قبل نمایش فایل) رو بیشتر توضیح بدین
چطور میتونم این کار رو انجام بدم؟


نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 3 سال پیش مطرح شد
0

به جای فایل با پسوند json یک فایل با پسوند php (من با این مثال می گم)بعد اخرش که اعتبار سنجی انجام شدبا echo متن json رو چاپ کن بقیش کار گیرنده ی فایل json هست
حالا اعتبار سنجی :
اول چک می کنی کاربر از کجا این درخواست رو داده
حالا که می دونی از کجا اومده میری دیتابیس رو چک می کنی ببینی همچین سایتی می تونه درخواسته اگه نه همونجا return میکنی false و تمام
حالا که درست بود چک می کنی این چندمین در خواستشه از دیتابیس اگه بیشتر از حد مورد قبول بود بود دوباره ریترن کن فالس
حالا اینجا که هم از سایت درسته و هم تعداد مشخصی رو داره که درخواست بده تو میای فایل جیسان رو بر می گردونی
می ری توی دیتا بیس نام سایت رو پیدا می کنی و یکی به تعداد های درخواست هایی که کرده اضافه می کنی
کلیتش اینه که گفتم


ASPgo
تخصص : HTML، CSS، PHP و JS، طراح قالب...
@asp.gosk 3 سال پیش آپدیت شد
1

@Nima.nori
خیلی ممنون
من از این زاویه دقت نکرده بودم که میتونم به جای فایل json یه فایل php قرار بدم با استفاده از header('Content-Type: application/json') صفحه مربوطه رو به شکل فایل json نمایش بدم و موارد مربوط به محدود سازی و... رو به وسیله php انجام بدم


ASPgo
تخصص : HTML، CSS، PHP و JS، طراح قالب...
@asp.gosk 3 سال پیش آپدیت شد
0

الان یه مشکل دیگه وجود داره.
با جاوا اسکریپت داشتم فرستادن request به فایل php رو تست میکردم و دیدم زمانی که Request به فایل php میفرستم responseText و response اون Request کل کد های PHP مربوط به فایل هست.
انتظار داشتم فقط چیز هایی که رو صفحه وجود دارن تو responsetext قرار بگیرن
کد های فایل posts.php :

<?php
header('Content-Type: application/json');
echo '[
    {
        "userId": 1,
        "id": 1,
        "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
        "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
    },
    {
        "userId": 1,
        "id": 2,
        "title": "qui est esse",
        "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
    },
    {
        "userId": 1,
        "id": 3,
        "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
        "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
    },
    {
        "userId": 1,
        "id": 4,
        "title": "eum et est occaecati",
        "body": "ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit"
    },
    {
        "userId": 1,
        "id": 5,
        "title": "nesciunt quas odio",
        "body": "repudiandae veniam quaerat sunt sed\nalias aut fugiat sit autem sed est\nvoluptatem omnis possimus esse voluptatibus quis\nest aut tenetur dolor neque"
    }
]';
?>

کد های جاوا اسکریپت:

var request = new XMLHttpRequest();
request.open('GET', './json/posts.php', false);
request.send();
console.log(request.response);

خروجی console.log(request.response)

<?php
header('Content-Type: application/json');
echo '[
    {
        "userId": 1,
        "id": 1,
        "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
        "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
    },
    {
        "userId": 1,
        "id": 2,
        "title": "qui est esse",
        "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
    },
    {
        "userId": 1,
        "id": 3,
        "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
        "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
    },
    {
        "userId": 1,
        "id": 4,
        "title": "eum et est occaecati",
        "body": "ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit"
    },
    {
        "userId": 1,
        "id": 5,
        "title": "nesciunt quas odio",
        "body": "repudiandae veniam quaerat sunt sed\nalias aut fugiat sit autem sed est\nvoluptatem omnis possimus esse voluptatibus quis\nest aut tenetur dolor neque"
    }
]';
?>

نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 3 سال پیش مطرح شد
1

اول یک نکته ی امنیتی اخر فایل های json و API ها حتما یا exit; یا die(); رو استفاده کنین
بهتره از json_encode استفاده کنین یعنی اول اون دیتا هایی که می خواین رو از دیتا بیس به صورت آبجکت بگیرین بعد با این تابع json کنینش تا اطلاعات داینامیک باشن
این دو تا نکته ی بالا رو رعایت کن اگه درست نشد بازم پیام بده


ASPgo
تخصص : HTML، CSS، PHP و JS، طراح قالب...
@asp.gosk 3 سال پیش مطرح شد
1

@Nima.nori
از die استفاده کردم مشکل حل شد خیلی ممنون


نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 3 سال پیش مطرح شد
0

قابلی نداشت


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

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