شنبه یه خبراییه 🔥 منتظر شنبه باش 😉🥳
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ حمزه بختیاری
انکد کردن uri در روت
جامعه پی اچ پی ایجاد شده در ۲۶ دی ۱۴۰۱

سلام

برای روتر‌های دینامیک ممکنه نیاز داشته باشیم برای ا ادرس یک صفحه از کاراتر فارسی استفاده کنیم برای این که نیاز دایم که اون ادرس رو برای مثال "7learn.com/پست-اول" رو ان کد کنیم

سوالم اینه که پارا متر فارسی رو در دیتا بیس به صورت انکد شده ذخیره کنیم یا uri دریافتی از طریق مرورگر رو دی کد کنیم

چون اگه این کار رو انجام ندیم روتر برای کاراکتر‌های فارسی کار نمیکنه

خودم به شکل زیر کار کردم مقدار uri‌ها و method هارو از دیتا بیس میگیرم برای مثال "/پست-اول"

در فایل web.php

use App\\Core\\Routing\\Route;
Route::get('/','HomeController@index');
foreach (getPostsRoute() as $post){
    Route::get('/'.$post->slug,'singleController@'.$post->type);
}

درفایل Request.php در این فایل مقدار $_SERVER['REQUEST_URI'] رو دیکد کردم

که مقدار " /%D9%BE%D8%B3%D8%AA-%D8%A7%D9%88%D9%84 " رو که از مرورگر هست به "پست-اول" تبدیل میشه

class Request
{
    private $params;
    private $method;
    private $agent;
    private $ip;
    private $uri;
    public function __construct()
    {
        $this->params = $_REQUEST; #PARAMS
        $this->agent = $_SERVER['HTTP_USER_AGENT'];
        $this->method = strtolower($_SERVER['REQUEST_METHOD']);
        $this->ip = $_SERVER['REMOTE_ADDR'];
        $this->uri = urldecode(strtok($_SERVER['REQUEST_URI'],'?'));
    }
    public function params()
    {
        return $this->params;
    }
    public function agent()
    {
        return $this->agent;
    }
    public function method()
    {
        return $this->method;
    }
    public function ip()
    {
        return $this->ip;
    }
    public function uri()
    {
        return $this->uri;
    }
}

اگر روش بهتری هست لطفا بگید

با تشکر

سلام حمزه عزیز

بله سولوشن خوبی رو استفاده کردید و مشکلی نداره.

احمدرضا فاطمی کیا ۲۶ دی ۱۴۰۱، ۱۲:۴۴