PDA

View Full Version : استفاده از Json



hosein_hfs
دوشنبه 03 شهریور 1393, 13:13 عصر
سلام دوستان

من تقریبا چند ماهه PHP رو شروع کردم و یه پروژه تمرینی واسه خودم تعریف کردم ، سایتی که تو ذهنم هست میخوام تمام اتفاقاتی که درونش میفته از طریق ایجکس باشه ، تمام داده هایی که از سرور میاد به صورت Json هست و سمت کلاینت به صورت متن یا کدهای html نمایش داده میشه، تا موقعی که کاربر تو صفحه اصلی باشه مشکلی نداره و تمام json ها parse میشه ولی وقتی کاربر به صورت دستی وارد لینک ها میشه فقط کدهای json رو می بینه چون تمام لینک ها کدهای Html و هر چیز دیگه ای رو در قالب json برمیگردونن ، سوالی که دارم اینه که کلا منطقی هست همه داده ها در قالب json باشه ؟ اگه آره ، تو سایتی که One page و کاملا ایجکس هست چطور میشه کاری کرد که کاربرها اطلاعات رو به صورت json نبینن ؟ امیدوارم بد توضیح نداده باشم

abolfazl-z
دوشنبه 03 شهریور 1393, 14:37 عصر
خوب معمولا کاربر عادی هیچ سر و کاری با لینک های ajax شما ندارد و معمولا هکر یا یک برنامه نویس و هرکسی که از برنامه نویسی سر در بیاره به ان ها دسترسی پیدا می کند.

hosein_hfs
سه شنبه 04 شهریور 1393, 22:17 عصر
اجازه بدین یه مثال بزنم ، ما یه فایل به اسم ShowPost.php داریم که با گرفتن ID پست رو در قالب Json برمیگردونه ، حالا تو صفحه اصلی مشکلی ندارم ، پست ها رو با یه درخواست XHR به صورت ایجکس نشون میده ولی وقتی کاربر لینک رو در یه تب جدید باز می کنه پست رو تو قالب json نشون میده ،

حالا این یه مثال بود ، تمام اکشن های سایت از طریق ایجکس هست ، میخوام بدونم منطقی ترین روش از نظر عملکرد و استاندارد واسه حل این مشکل چی هست

مهرداد سیف زاده
سه شنبه 04 شهریور 1393, 22:43 عصر
ajax اگر درست کار نشه به seo سایت ضربه میزنه
لازم نیست این همه ajax کار بشه. ajax خوبه مثلا کاربرا میخوان برای یک پست نظر بدن لازم نیست کل صفحه رفرش بشه یا برای دادن امتیاز به خبر صفحه رفرش بشه. ولی در حالات عادی بزارید سایت روال عادی خودش رو طی کنه. همچنین موتورهای جستجو داده های صفحات رو نصبت به یک داده xml یا json‌در اولویت قرار میدن یعنی تا وقتی اطلاعات در سایتها بصورت داده صفحه‌ای وجود داره سراغ xml و doc و pdf و json‌ نمیرن.
همچنین دوستمون هم جواب خوبی داده کسانی سایت رو زیر ذره‌بین میبرن که هدف دارن.

SadeghPro19
چهارشنبه 05 شهریور 1393, 00:02 صبح
برای اینکه چک کنید که درخواستی که برای صفحه فرستاده شده بصورت آجاکس هست یا نه از کد زیر استفاده کنید:

if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
// Don't Access Direct Request
}

hosein_hfs
چهارشنبه 05 شهریور 1393, 07:10 صبح
ajax اگر درست کار نشه به seo سایت ضربه میزنه
لازم نیست این همه ajax کار بشه. ajax خوبه مثلا کاربرا میخوان برای یک پست نظر بدن لازم نیست کل صفحه رفرش بشه یا برای دادن امتیاز به خبر صفحه رفرش بشه. ولی در حالات عادی بزارید سایت روال عادی خودش رو طی کنه. همچنین موتورهای جستجو داده های صفحات رو نصبت به یک داده xml یا json‌در اولویت قرار میدن یعنی تا وقتی اطلاعات در سایتها بصورت داده صفحه‌ای وجود داره سراغ xml و doc و pdf و json‌ نمیرن.
همچنین دوستمون هم جواب خوبی داده کسانی سایت رو زیر ذره‌بین میبرن که هدف دارن.


برای مثالی که زدم حرفتون کاملا درست هست برای یه وبلاگ یا سایتی که چند صفحه داره شاید منطقی نباشه ولی چیزی که تو ذهنم هست یه وبسایت یک صفحه ای هست که نیازی نداره واسه هر کدوم از کارها صفحه دوباره رفرش بشه ، مثلا Login یا logout سایت ،

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

همینطور که گفتم تازه شروع کردم و مبتدی هستم ولی تو خیلی از مقاله ها خوندم تا جایی که ممکنه تو درخواست های ایجکس از Json استفاده کنید ، اگه اشتباه نکنم API گوگل و توییتر هم خروجیشون همه Json هست،

واسه همین کنجکاو بودم بدونم از نظر امنیت و تمیز بودن کار چطور باید با Json دست و پنجه نرم کرد .



برای اینکه چک کنید که درخواستی که برای صفحه فرستاده شده بصورت آجاکس هست یا نه از کد زیر استفاده کنید:

if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
// Don't Access Direct Request
}


مرسی ، خیلی کد و روش مفیدیه ، پس تو همه اکشن های سایت از این کد استفاده کنم یا فقط تو صفحه اصلی کافی هست ؟

SadeghPro19
چهارشنبه 05 شهریور 1393, 11:13 صبح
باید توی اکشن هاتون استفاده کنید.

afee1990
چهارشنبه 05 شهریور 1393, 12:14 عصر
یه تابع بنویسید مثلن به نام isAjax() و توی اکشن‌هاتون ازش استفاده کنید و محتوای تابع هم همون چیزی هست که دوستمون اشاره کردن. البته یه not قبل عبارت بالا بذارین تا با نام تابع همخوانی داشته باشه.

ولی برای اینکه بخواهین همچین سایتی یا اپلیکیشنی درست کنید بهتره از فریمورک‌های مربوط به این کار مثل backbonejs, emberjs , angularjs استفاده کنید. تا هم همه چی تو یه صفحه باشه و هم اینکه آدرس‌هاتونم درست باشه و برای seo به مشکل نخورین.