encode url codeigniter

Cuando queremos enviar algun link a un correo, o postearlo en alguna pagina web, hay problemas al utilizar $this->encrypt->encode($variable); cuando lo quieres enviar te salen carecteres como /,+,= que no son permitidos porque en config.php, permitted_uri_chars='valores permitidos', no estan esos caracteres, para eso hay dos formas de solucionarlo:

primero: poner los caracteres en permitted_uri_chars='nuevos valores permitidos'.

segundo: agregar una funcion que cambie los caracteres que no estan permitidos por otros que si son permitidos; aqui esta la funcion que forme:

la primera funcion es para ponerlo en un encode:
    public function encode_to_url($subject)
    {
        $pos_slash=  strpos($subject, '/');
        if($pos_slash!==false)
        {
            $codigo_email_s= str_replace('/', ':', $subject);
        }
        else {$codigo_email_s=$subject;}
        $pos_igual=  strpos($codigo_email_s, '=');
        if($pos_igual!==false)
        {
            $codigo_email_m=  str_replace('=', '_', $codigo_email_s);
        }
        else {$codigo_email_m=$codigo_email_s;}
        $pos_mas=  strpos($codigo_email_m, '+');
        if($pos_mas!==false)
        {
            $codigo_email=  str_replace('+', '~', $codigo_email_m);
        }
        else {$codigo_email=$codigo_email_m;}
       
        return $codigo_email;
    }
  
el segundo es para pasarlo de url a un encode y poderlo asi $this->encrypt->decode($subject);

    public function url_to_encode($codigo)
    {
        $pos_slash=  strpos($codigo, ':');
        if($pos_slash!==false)
        {
            $codigo_email_s= str_replace(':', '/', $codigo);
        }
        else {$codigo_email_s=$codigo;}
        $pos_igual=  strpos($codigo_email_s, '_');
        if($pos_igual!==false)
        {
            $codigo_email_m=  str_replace('_', '=', $codigo_email_s);
        }
        else {$codigo_email_m=$codigo_email_s;}
        $pos_mas=  strpos($codigo_email_m, '~');
        if($pos_mas!==false)
        {
            $subject=  str_replace('~', '+', $codigo_email_m);
        }
        else {$subject=$codigo_email_m;}
       
        return $subject;
    }

espero haberlos ayudado, yo me pase mucho tiempo para solucionar esto, si les ayudo pueden enviar comentarios, o si tienen alguna mejor manera, o error que han encontrado no duden en comentar.

Comments

Post a Comment

Popular posts from this blog

add header image itextsharp c#

Basketball in Peru