Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pass a URL as a parameter of a controller's method in codeigniter

I have a Codeigniter controller which takes a full URL as the first argument, but the passed URL inside my controller only is only showing http:

public function mydata($link)
{
   echo $link; //then it show only http: rather than the full url http://abc.com
}

How can i solve this issue?

like image 388
Peeyush Avatar asked Mar 06 '12 13:03

Peeyush


2 Answers

if you want to pass url as parameters then use

urlencode(base64_encode($str))

ie:

$url=urlencode(base64_encode('http://stackoverflow.com/questions/9585034'));
echo $url

result:

aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85NTg1MDM0

then you call:

http://example.com/mydata/aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85NTg1MDM0

and in your controller

public function mydata($link)
{

$link=base64_decode(urldecode($link));
...
...
...

you have an encoder/decoder here:

http://www.base64decode.org/

like image 96
JuanitoMint Avatar answered Oct 08 '22 21:10

JuanitoMint


In Codeigniter controllers, each method argument comes from the URL separated by a / slash. http://example.com

There are a few different ways to piece together the the arguments into one string:

public function mydata($link)
{
    // URL: http://example.com/mysite/mydata/many/unknown/arguments

    // Ways to get the string "many/unknown/arguments"
    echo implode('/', func_get_args());
    echo ltrim($this->uri->uri_string(), '/');
}

However:

In your case, the double slash // may be lost using either of those methods because it will be condensed to one in the URL. In fact, I'm surprised that a URL like:

http://example.com/mydata/http://abc.com

...didn't trigger Codeigniter's "The URI contains disallowed chatacters" error. I'd suggest you use query strings for this task to avoid all these problems:

http://example.com/mydata/?url=http://abc.com

public function mydata()
{
    $link = $this->input->get('url');
    echo $link;
}
like image 39
Wesley Murch Avatar answered Oct 08 '22 21:10

Wesley Murch