Welcome Guest, Not a member yet? Register   Sign In
Mix normal URL's and standard query strings
#1

[eluser]Unknown[/eluser]
Is it possible to mix normal url's and standard query strings? For example due to an oauth callback, I will need to be able to accept the following:

http://appname.com/controller/oauth?variable=value

Is this sort of url structure possible with code igniter 2.0?

Thanks!
#2

[eluser]Jaketoolson[/eluser]
It is and I use it Smile

My setup is as follows:
// url: http://site.com/controller/function/?var=val&var2=val2

Code:
//config.php
$config['uri_protocol']    = 'QUERY_STRING';

// in my controller's __construct() function, I have the following to parse the $_GET properly
parse_str(substr(strrchr($_SERVER['REQUEST_URI'], "?"), 1), $_GET);
#3

[eluser]Peter Denk[/eluser]
It is!
I just spent half a day figuring it out.

First of all, be sure to download the latest version of CI 2.0 Reactor or at least check that line 52 in system/core/input.php reads:

$this->_allow_get_array = (config_item('allow_get_array') === TRUE);

Also check in config.php that you have:

$config['allow_get_array'] = TRUE;
$config['enable_query_strings'] = FALSE;

Then you should be able to read the query-string with:

$variable = $this->input->get( 'variable' );

or if you want XSS-filtering:

$variable = $this->input->get( 'variable', TRUE );

I you prefer to always do XSS-filtering set

$config['global_xss_filtering'] = TRUE;

in config.php

get() is part of the Input-class (http://ellislab.com/codeigniter/user-gui...input.html)


Good luck!
#4

[eluser]Unknown[/eluser]
For both of the replies I am still having the same problem. If i just have controller/method the correct controller is loaded. If I do controller/method?variable, CI 2.x will load the default controller instead of the one int he url.

@Jaketoolson

Is this on code igniter 2.x? I don't seem to be able to get that to work.

@peter Denk

Are those the default config settings? As described above, I can't get the correct controller to load. It always goes to the default one.
#5

[eluser]Peter Denk[/eluser]
Have you tried setting
Code:
$config['uri_protocol'] = 'PATH_INFO';
#6

[eluser]Jaketoolson[/eluser]
Paste your code!
#7

[eluser]Mike One[/eluser]
During the upgrade from 1.7.2 to 2.0.2, I encountered a similar problem. Basically, my code didn't have access to $_GET anymore in 2.0.2, while this worked fine in 1.7.2 (using $config['enable_query_strings'] = TRUE; in the config).

Seeing that this breaks in 2.0.2, I feel this is missing in the upgrade document. I took me a while to find out how to resolve this (by analyzing the Input class) but the answer for me (as Peter stated above) was indeed to ALSO add:

Code:
$config['allow_get_array'] = TRUE;
to the config.

Maybe this should be added to the upgrade docs?




Theme © iAndrew 2016 - Forum software by © MyBB