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:
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.