zahr..
2 سال پیش توسط zahr.. مطرح شد
8 پاسخ

url های get در php

سلام دوستان
وقتی من محدودیت دسترسی میزارم برای صفحه مثلا exmaple.php ، دیگ کاربر نمیتونه پست اون ادرس get ک دادم رو ببینه و انتقال پیدا میکنه ب جایی ک من گفتم برا این کار چیکار باید بکنم؟ فقط میخام پست رو ببینه دیگ اون صفحه example رو نبینه

میخام پست مربوط به این رو ببینه جز خود صفحه خودش
example.php?post=dsfdfdf


ثبت پرسش جدید
حسن حکمتی
تخصص : برنامه نویس وب و بلاکچین
@hekmati 2 سال پیش آپدیت شد
0

متوجه شدم می تونید یه شرط ابتدای صفحه بزارید که اگر get وجود داشت به دیتابیس ارجاع بشه و صفحه نمایش داده بشه و اگر get وجود نداشت کاربر به صفحه لیست مقالات ریدایرکت بشه، اینطور دیگه خطا هم به وجود نمیاد.

if(isset($_GET['post'])){
    //show post
}else{
//redirect
}

حسن حکمتی
تخصص : برنامه نویس وب و بلاکچین
@hekmati 2 سال پیش مطرح شد
0

سلام
مشکل رو بهتر توضیح بدید، دقیق تر و شفاف تر.


zahr..
تخصص : هک ناسا با html
@zahramalekipor 2 سال پیش مطرح شد
0

@hekmati

من یک صفحه ای دارم برا مثال article.php ، تو این صفحه من کد های addpost و ی سری چیزای دیگ مث کامنت پست رو قرار دادم ، خب الان وقتی کاربری میاد یک پست رو منتشر میکنه بهش با get دستور دادم و این پست مربوطه این شکلی میشه
url : article.php?post= title post
ولی اینجا چون سشن ثبت کردم کسی این صفحه article من رو نبینه ، یعنی کاربری که ورود نکرده ب سایت من ب این صفحه دسترسی نداره ، ولی اینطوری باعث میشه حتی پست هم نتونه ببینه همونی ک بالا ادرس دادم منظورمه
اگرم سشن براش ثبت شه میتونه ببینه ولی ی چیز در ه برهم میبینه

تو پنل وقتی میخایم پست اضافه کنیم اسم ادرسش اینه article.php
الان چیکار کنم فکک میکنم اشتباه انجام دادم ولی هرچی فکر میکنم نمیدونم باید چیکار کنم که مشکلم رفع شه ، ممنون از شما


حسن حکمتی
تخصص : برنامه نویس وب و بلاکچین
@hekmati 2 سال پیش مطرح شد
0

@zahramalekipor
ابتدا باید در مورد الگوی کار تصمیم بگیرید.
اینجور که من متوجه شدم یک سری دسترسی لازم دارید برای کاربری که لاگین کرده و میتونه پست بزاره. حالا می خواهید برای کاربرانی که لاگین کردن این پست نمایش داده بشه اما برای کاربرانی که لاگین نکردن قابل مشاهده نباشه.
درست متوجه شدم؟


zahr..
تخصص : هک ناسا با html
@zahramalekipor 2 سال پیش مطرح شد
0

@hekmati

نه اینطوری نیس
من تو پنل مدیریتی ادمین یک صفحه دارم به اسم add-post.php که وقتی بخام مقاله منتشر بکنم هست ، یک صفحه دیگ دارم ب اسم modiriat-post.php که کل پست هایی ک منتشر شده رو میبینم و میتونم حذف یا ویرایش بکنم

خب الان وقتی پستی که ایجاد میشه و محتواش چجوری باشه ب چ شکل باشه اینا رو تو ی صفحه ب اسم article.php طراحی کردم وقتی هم پستی منتشر بشه ب این شکل منتشر میشه article.php?id=1 و بقیه پست ها هم به صورت id=2 و ... تا اینجا همه چی روبراهه

کاربر چ لاگین باشه چ لاگین نباشه میتونه همه پست هارو هم ببینه با اینم مشکلی ندارم

ولی وقتی کاربر میاد ادرس رو اینطوری وارد مرورگر میکنه article.php با کلی ارور بر میخوره خب معلومه باید بهش بر بخوره چون دستورات php و طراحی اون مدل پست رو قرار دادم
الان نمیخام کاربر این صفحه article.php به صورت خالی ببینه و فقط پست رو به این شکل ببینه article.php?id=1
وقتی میخام دسترسی رو قفل میکنم دیگ حتی اون پست رو به ادرس article.php?id=1 رو هم نمیتونه ببینه
چیکار میتونم بکنم؟ راه دیگ نداره یا من اشتبا انجام میدم ممنون میشم ی توضیح خوب بدید


حسن حکمتی
تخصص : برنامه نویس وب و بلاکچین
@hekmati 2 سال پیش آپدیت شد
0

متوجه شدم می تونید یه شرط ابتدای صفحه بزارید که اگر get وجود داشت به دیتابیس ارجاع بشه و صفحه نمایش داده بشه و اگر get وجود نداشت کاربر به صفحه لیست مقالات ریدایرکت بشه، اینطور دیگه خطا هم به وجود نمیاد.

if(isset($_GET['post'])){
    //show post
}else{
//redirect
}

zahr..
تخصص : هک ناسا با html
@zahramalekipor 2 سال پیش مطرح شد
0

@hekmati
عذرخواهی میکنم ب دلیل مجدد سوال همه چی درس شد تازه دیدم ی مشکل دیگ باز پیش اومد
وقتی ادرس این مدلی وارد میکنم اوکی هست article.php و ریدایرکت میکنه ی جا دیگ
ولی وقتی اینطوری این id=1 رو جلوش ی عدد یا حروف اضافه میزارم بازم همون ارورای صفحه article میده و هرچی هم تو url وارد میکنم باقی میمونه این و چیکارش کنم؟ مثلا همیچن مقداری وارد میکنم ی چیز عجیب غریب جلو این ایدی
article.php?id=1kdjfsdgf


حسن حکمتی
تخصص : برنامه نویس وب و بلاکچین
@hekmati 2 سال پیش مطرح شد
0

حالا باید سه حالت رو بررسی کرده و براش سناریو مناسب رو تدوین کنید.
حالت اول: get وجود داره و مقدار اون هم درسته یعنی آی دی صفحه ارایه شده توی دیتابیس موجوده
حالت دوم: get وجود داره اما مقدارش درست نیست
حالت سوم: get موجود نیست
شروط رو بر اساس وضعیت بالا می تونید تنظیم کنید.

if(isset($_GET['post'])){
    //ریکوست به دیتابیس و دریافت ریسپانس
    if($response){
        //show page
    }else{
        //404 error
    }

}else{

//redirect

}

یک راه دیگه هم برای اجرای حالت دوم و سوم هست که در این مواقع کاربر رو به صفحه 404 ارجاع بدید یعنی در صورتی که صفحه مورد نظر وجود نداشت کاربر با خطای 404 مواجه بشه. یک صفحه استاتیکی 404 طراحی کنید و توی فایل .htaccess این کد رو قرار بدید.(آدرس فایل 404 مد نظر است)

ErrorDocument 404 /404.php

zahr..
تخصص : هک ناسا با html
@zahramalekipor 2 سال پیش مطرح شد
0

@hekmati
خیلی ممنون درس شد


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

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