تالار گفتمان مانشت

نسخه‌ی کامل: نحوه ارسال پارامترها از طریق url در php
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان
یک سوال در مورد نحوه ارسال پارامترها از طریق url دارم. ممنون میشم من رو راهنمایی کنید
من چیزی شبیه نحوه آدرس دهی اینستاگرام برای سایتم نیاز دارم. یعنی هر شخص بتونه آدرس صفحه ای که در سایت داره رو به دیگران بده.اما نحوه ارسال پارامترها در instagram رو درک نمیکنم. مثلا وقتی در نوار آدرس تایپ می کنیم:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

این یوزرنیم در برنامه چطور تشخیص داده میشه و کاربر رو تشخیص میده و صفحه اش رو باز میکنه؟
مگه اینطور نیست که باید نام متغیر و مقدارش رو در url بنویسیم تا در برنامه از طریق نام متغیر بتونیم به مقدارش دسترسی داشته باشیم؟
مثلا به این صورت :

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
?username=zahra
یا

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
?id=56

بعد توی برنامه مثلا بنویسیم:
echo $_GET['id']
یا مثلا در انجمن متخصصین ایران در پیج هر شخصی، آدرس اینترنتی اون شخص رو به این صورت نوشته

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

این مقداری که بعد از علامت سوال اومده چطور در برنامه تعیین میشه که مربوط به چه متغیری هست؟
این دو تا رو مطالعه کنید راجع بهشون:
REST
routing برای فیورک های وب
خیلی خیلی ممنونم.واقعا لطف کردید.
(04 تير 1395 10:51 ق.ظ)targol نوشته شده توسط: [ -> ]سلام دوستان
یک سوال در مورد نحوه ارسال پارامترها از طریق url دارم. ممنون میشم من رو راهنمایی کنید
من چیزی شبیه نحوه آدرس دهی اینستاگرام برای سایتم نیاز دارم. یعنی هر شخص بتونه آدرس صفحه ای که در سایت داره رو به دیگران بده.اما نحوه ارسال پارامترها در instagram رو درک نمیکنم. مثلا وقتی در نوار آدرس تایپ می کنیم:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

این یوزرنیم در برنامه چطور تشخیص داده میشه و کاربر رو تشخیص میده و صفحه اش رو باز میکنه؟
مگه اینطور نیست که باید نام متغیر و مقدارش رو در url بنویسیم تا در برنامه از طریق نام متغیر بتونیم به مقدارش دسترسی داشته باشیم؟
مثلا به این صورت :

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
?username=zahra
یا

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
?id=56

بعد توی برنامه مثلا بنویسیم:
echo $_GET['id']
یا مثلا در انجمن متخصصین ایران در پیج هر شخصی، آدرس اینترنتی اون شخص رو به این صورت نوشته

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

این مقداری که بعد از علامت سوال اومده چطور در برنامه تعیین میشه که مربوط به چه متغیری هست؟
شما میتونید با استفاده از .htaccess اینها رو تنظیم کنیم
در واقع به این مبحث میگن URL Rewriting و قابلیت هایی هست که با htaccess میتونید انجام بدید مثلا پسوند فایل ها رو دستکاری کنید
یا تغییر بدیم به این شکل a.html?123 و ...

اگه دوستان علاقمند به این مبحث باشن یه دوره ی رایگان تو جهاد علمی برگزار میکنیم تحت عنوان " کانفیگ های htaccess."
دوستان، من برای انجام کارم طبق راهنمایی که جناب blackhalo1989 کردن از routing استفاده کردم. از مطلبی که در این صفحه هست استفاده کردم

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

برنامم درست شد و مثلا اگر بعد از آدرس سایت یوزرنیم یک شخصی رو بنویسم صفحه اون شخص بالا میاد.اما مشکلی که مدام باهاش برخورد میکنم این هست که اگر چیز دیگه ای بجز یوزرنیم یک شخص هم بعد از آدرس سایت بیاد برنامه سعی میکنه پیج اون شخص رو نشون بده و چون چنین یوزرنیمی در دیتابیس وجود نداره یک صفحه بدون اطلاعات شخصی نشون میده. و من مدام باید این حالتها رو استثنا کنم.
مثلا حتی برای خود صفحه index.php هم مشکل داشتم که با یه شرط برطرف شد. حالا برای cpanel سایت به مشکل برخوردم و معلوم نیست تا انتهای پروژه چند بار دیگه این اتفاق بیفته و مجبور بشم همه رو استثنا کنم.
راهی برای رفع این مشکل وجود داره؟
ممنون میشم من رو راهنمایی کنید.
routing جزو فریمورک هست و شما نباید پیاده اش کنید. برای حالتی که درخواست غیر مجاز است میتونید صفحه ۴۰۴ نشون بدید. مثلا میتونید یه excption کاستوم تعریف کنید به این اسم: UserNotFoundException بعد هر موقع یوزر مورد نظر وجود نداشت این استثا رو پرتاب کنید و در لایه بالاتر از try catch استفاده کنید. در صورتی که استثنایی پرتاب نشه یعنی درخواست کاربر مجاز بوده و در صورتی که شما یه استثنای UserNotFoundException رو گیر انداختید یعنی درخواست کاربر غیر مجاز بود و در هر صورت عمل متناسب رو انجام بدید.
اینارو فریمورک ها خودشون مدیریت می کنن. مثلا فیورک ها خودشون روتینگ دارن و شما نباید پیاده کنید. فقط باید روت های مورد نظر خودتون رو وارد کنید. هر فریمورکی هم یه جوری این رو پیاده می کنه و استاندارد واحدی نداره. مثلا تو جنگو (فریمورک پایتونه) از regex استفاده میشه برای روتینگ که خوندنش رو سخت می کنه اما تو بعضی از فریمورک ها مثل پلی (فریورک برای زبان های جاوا و اسکالا است) یه فایل روتینگ خاص دارن.
مثلا اینها رو ببینید:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

همچنین فریمورک ها میتونن استثنا ها رو هم براتون مدیریت کنن. مثلا شما یه قسمت مرکزی برای مدیریت استثنا ها دارید و برای هر استثنا کد مخصوصی می زنید. بعد در خود کد هر موقع اتفاق غیر مجازی افتاد (مثل دسترسی به کاربر غیر مجاز) فقط استثنا رو پرتاب می کنید. وظیفه گرفتن استثنا و هدایتش به سمت کد مدیریت کننده استثا به عهده فریمورکه. مثال:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

به این قسمت دقت کنید، شبیه چیزی هست که مشکل شماست:
کد:
@ExceptionHandler(EmployeeNotFoundException.class)
    public @ResponseBody ExceptionJSONInfo handleEmployeeNotFoundException(HttpServletRequest request, Exception ex){
        
        ExceptionJSONInfo response = new ExceptionJSONInfo();
        response.setUrl(request.getRequestURL().toString());
        response.setMessage(ex.getMessage());
        
        return response;
    }
خیلی ممنونم از لطفتون
لینک مرجع