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

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


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/


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;}


Aside from the issue of whether you should be passing a URL in a URL think about how you are passing it:

example.com/theparameter/

but your URL will actually look like

example.com/http://..../

See where you're going wrong yet? The CodeIgniter framework takes the parameter out of the URL, delimited by slashes. So your function is working exactly as it should.

If this is how you must do it then URL encode your parameter before passing it.