11
votes

Activation de $ _GET dans le codeDIDEDIDE

J'ai essayé de déterminer comment activer $ _GET dans CI.

Il apparaît que la structure détruit délibérément la matrice $ _GET et que l'activation nécessite une bricolage grave avec les classes de base. Quelqu'un peut-il dire pourquoi c'est et comment la surmonter?

Mind You, je cherche à garder URI analyser et acheminer la façon dont ils sont, il suffit simplement de la disponibilité de $.


3 commentaires

Pourquoi souhaitez-vous utiliser $ _GET variables lorsque vous pouvez utiliser des URL réhécrites pour atteindre le même objectif dans CodeDigniter?


Eh bien, la seule raison pour laquelle je m'accepterais, serait de soutenir les URL héritées. J'ai un client qui voudrait beaucoup bouger vers des URL sympathiques, la possibilité existe de réacquer leur site Web "Code Spaghetti" à l'aide d'un cadre, mais CodeIndritera ne permettra pas à leur nouveau site de soutenir plusieurs dizaines de milliers (!) Liens entrants vers divers articles, vous comprenez pourquoi cela est inacceptable :)


La nouvelle solution consiste à utiliser Réacteur de codeigniter , qui prend en charge obtenir correctement la boîte.


7 Réponses :


8
votes

à partir du Manuel de l'indicatif sur la sécurité :

Data get, post et cookie

Obtenir que les données sont simplement interdites par Consultateur depuis que le système utilise Segments d'Uri plutôt que traditionnel Chaînes de requête d'URL (sauf si vous avez le Option de chaîne de requête activée dans votre fichier de configuration). Le tableau GLOBAL GET est non défini par la classe d'entrée pendant le système initialisation.

lire via ce Entrée du forum pour des solutions possibles ( devient intéressant à mi-chemin Down Page 1 ).


1 commentaires

Celui qui a baissé cela pourrait au moins laisser un commentaire expliquant pourquoi. La réponse est correcte et fournit des alternatives dans le lien donné.



14
votes

Ajoutez la bibliothèque suivante à vos bibliothèques d'application. Il annule le comportement de la bibliothèque d'entrée par défaut d'élimination du tableau $ _GET. Il permet un mélange de segments URI et de la chaîne de requête.

application / bibliothèques / my_input.php strud> p> xxx pré>

c'est aussi nécessaire pour modifier certains paramètres de configuration. Le paramètre URI_Protocol doit être changé en path_info et le '?' Le caractère doit être ajouté à la liste des caractères autorisés dans l'URI. p>

Application / config / config.php strong> p>

$this->input->get('x');


3 commentaires

Utiliser Path_Info ne semble pas fonctionner sur Windows Xampp.


Comme si CodeDediciter 2.x, $ ceci-> allec_get_array est maintenant $ ceci -> _ allec_get_array.


Dans CodeDigniter 2.x, je ne vois pas pourquoi vous auriez besoin d'utiliser cette méthode, car in 2.x $ _ get paramètres sont activés par défaut. De config.php dans CodeDigniter 2.x: "Par défaut Codeigniter permet d'accéder au tableau $ _GET. Si, pour une raison quelconque, vous souhaitez le désactiver, définissez" allecter_get_array "à FALSE".



2
votes

sur serveur, sans path_info code> (comme le mien) Essayez ceci: XXX Pré>

Vous pouvez le mettre comme suit: P>

class Your_controller extends Controller {

function Your_controller()
{
    parent::Controller();

    date_default_timezone_set('Asia/Jakarta'); // set my timezone

    parse_str(substr($_SERVER['REQUEST_URI'],strpos($_SERVER['REQUEST_URI'],'?')+1,strlen($_SERVER['REQUEST_URI'])-strpos($_SERVER['REQUEST_URI'],'?')),$_GET);

}

function test()
{
    print_r($_GET); // here your $_GET vars
}

}


0 commentaires

2
votes

Je n'ai pas assez de réputation pour commenter, mais La réponse de Phil Sturgeon ci-dessus est le moyen d'aller si la commutation sur réacteur codeigniter est facile pour vous.

Vous pouvez accéder à la chaîne de requête en utilisant $ _GET ou $ ceci-> entrer-> get () sans avoir besoin de la remplacement de My_Input ni même de modifier le fichier Config.PHP.


0 commentaires

1
votes

J'ai eu du succès en utilisant cette ligne unique dans mon contrôleur. Il répare essentiellement l'URL de la demande sans s'appuyer sur des paramètres de codeigniter spécial:

parse_str (array_pop (exploser ('?', $ _ serveur ['request_uri'], 2)), $ _ obtenir);


0 commentaires

0
votes

jamais utilisé $ _GET avec CI, mieux de modifier la logique de script pour utiliser POST ou $ CISI-> URI-> SEGMENT (), puis sur Active $ _get Params pour moi


1 commentaires

J'utilise le PHP SDK Facebook et je dois recevoir des données comme $ _get



0
votes

de la poste: Cadre CodeDigniter PHP - besoin de Obtenez une chaîne de requête

Voici un exemple de travail complet de la façon d'autoriser Querystrings dans CodeDignitor, comme sur la plate-forme JROX. Ajoutez simplement ceci à votre fichier config.php situé à: p> xxx pré>

et vous pouvez simplement obtenir les querystrings comme normal en utilisant $ _GET ou la classe ci-dessous p>

/*
|--------------------------------------------------------------------------
| Enable Full Query Strings (allow querstrings) USE ALL CODES BELOW
|--------------------------------------------------------------------------*/

/*
|----------------------------------------------------------------------
| URI PROTOCOL
|----------------------------------------------------------------------
|
| This item determines which server global should 
| be used to retrieve the URI string.  The default 
| setting of 'AUTO' works for most servers.
| If your links do not seem to work, try one of 
| the other delicious flavors:
|
| 'AUTO'              Default - auto detects
| 'PATH_INFO'         Uses the PATH_INFO
| 'QUERY_STRING'      Uses the QUERY_STRING
| 'REQUEST_URI'   Uses the REQUEST_URI
| 'ORIG_PATH_INFO'    Uses the ORIG_PATH_INFO
|
*/
if (empty($_SERVER['PATH_INFO'])) {
    $pathInfo = $_SERVER['REQUEST_URI'];
    $index = strpos($pathInfo, '?');
    if ($index !== false) {
        $pathInfo = substr($pathInfo, 0, $index);
    }
    $_SERVER['PATH_INFO'] = $pathInfo;
}

$config['uri_protocol'] = 'PATH_INFO'; // allow all characters 

$config['permitted_uri_chars'] = ''; // allow all characters 

$config['enable_query_strings'] = TRUE; // allow all characters 

parse_str(substr(strrchr($_SERVER['REQUEST_URI'], "?"), 1), $_GET);


0 commentaires