7
votes

$ _GET est vide lorsque l'URL a des variables

J'ai une URL qui ressemble à ce reg.php? lang = no_no & colkey = Test et j'essaie d'obtenir la variable de mots-papier, mais cela continue de s'afficher en blanc.

Quand j'essaie print_r ($ _ get); IT imprime tableau () ?! Comment cela peut-il arriver?

Le site ressemble à ce que ceci xxx

c'est thats. Je ne peux pas comprendre pourquoi $ _GET apparaît en blanc. Cela m'a conduit fou pendant un moment maintenant ..


11 commentaires

Utilisez-vous un type de réécriture de l'URL ou est REG.PHP un fichier réel?


Êtes-vous par hasard à l'aide de CDeCeigniter ou un autre cadre? Parfois, ils pistent sur les variables $ _request.


@DARMA: Même si Reg.php est un vrai fichier - mod_rewrite peut perdre la chaîne de requête si elle était écrite de manière incorrecte


@Matt Williamson: En fait, cela n'explique pas pourquoi $ _GET a disparu.


@zerkms: Vous avez raison, je pensais surtout à une [QSA] qui pourrait être manquante.


@zerkms: $ _Request Comprend $ _Post et $ _GET et je sais pour un fait que Codeigniter les tue, vous devez donc utiliser leurs fonctions spéciales pour les obtenir.


"Consulter les tue" - est-ce vrai ???????? Pourquoi diable le font-ils? un autre "inconvénient" contre CI.


@zerkms CI Auto-Filtres obtient tous les mesures de sécurité. _Post fonctionne exactement comme vous l'attendez. Vous pouvez également utiliser l'_GET si vous voulez, il suffit de lui permettre de l'activer explicitement.


@zerkms pour prévenir de mauvaises pratiques autour d'eux.


J'ai rencontré le même problème sans cadre et mod_rewrite a été activé. C'était parce que je construisais l'URL manuellement et j'ai défini le code de hachage avant la requête GET et donc la requête GET a été reconnue dans le cadre de la chaîne de hachage.


Pour les personnes utilisant Apache, cette erreur se produit également lorsqu'un dossier existe dans votre répertoire racine correspondant au nom d'un chemin de réécriture, avalant efficacement les paramètres d'obtention. Recherchez un nom de dossier correspondant et renommez-le comme test.


4 Réponses :


8
votes

Quand je rencontre quelque chose qui me soulevait comme ça, je prends toujours mon script jusqu'à la base des bases. Essayez ceci en haut de votre script:

var_dump($_GET);
exit;


2 commentaires

Salut je reçois Var Vark comme tableau vide..now comment déboguer ceci ... ?? J'ai annexé des valeurs dans l'URL


Cela signifie que rien ne rentre sur la demande d'obtention. Essayez $ _Request. Êtes-vous sûr de ne pas poster?



5
votes

Déplacer cela dans une réponse de mes commentaires ci-dessus. Deux raisons pour lesquelles vos paramètres get sont manquants. Soit vous avez la configuration de mode de réécriture en mode qui les supprime ou que vous utilisez un cadre, tel que CodeDigniter qui les déplace ailleurs.

Si vous utilisez CodeDIGNITiter, vous pouvez les réactiver avec parse_str ($ _ Server ["Query_string '], $ _GET);


2 commentaires

Imprimer $ _ Server ['Query_string'] pourrait ne pas être un mauvais endroit pour commencer indépendamment du cadre.


Je voudrais ajouter que pour certains cadres / cmses, la raison pourrait être que mod_rewrite n'est pas activé.



1
votes

Assurez-vous que votre fichier php.ini ne définit pas max_input_vars sur 0 . J'ai accidentellement mis le mien vers quelque chose d'autre afin d'ajouter quelque chose à $ _GET créé un avertissement PHP.


0 commentaires

0
votes

J'ai rencontré un problème similaire de $ _ get [] code> vide. principalement à cause d'une question de serveur quelque part et que je devais générer mon propre $ get code> à l'aide de $ _ serveur ['http_referer'] code>.

//url='http://example.com/?search=john&location=london';
$get=array();
$query=mb_split("&",parse_url($_SERVER['HTTP_REFERER'],PHP_URL_QUERY));
if(!empty($query)) foreach ($query as $qr){
    $vars=mb_split('=',$qr);
    $get[$vars[0]]=$vars[1];
}

var_dump($get['search']);
// output 'john'


0 commentaires