2010-08-11 2 views
4

J'ai une URL qui ressemblent à ceci: reg.php?lang=no_NO&passkey=test et j'essaie d'obtenir la variable de mot de passe, mais elle apparaît en blanc.

Lorsque j'essaie print_r($_GET);, il imprime Array ()?! Comment cela peut-il arriver?

Le look du site quelque chose comme ça

<?php 

     print_r($_GET); 

     include('..\libs\Smarty.class.php'); 
    ?> 

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Activate account</title> 

(...html code..) 

$smarty = new Smarty; 

//$smarty->force_compile = true; 
$smarty->debugging = false; 
$smarty->caching = false; 
$smarty->cache_lifetime = 120; 


// PHP gettext api 
define('PROJECT_DIR', realpath('./')); 

(... define gettext ...) 

$passkey=$_GET['passkey']; 

(...work with passkey ...) 

$smarty->display('templates\site.tpl'); 

?> 


</body> 
</html> 

thats it. Je ne peux pas comprendre pourquoi $ _GET apparaît vide. Cela me rend fou depuis un moment maintenant.

+0

utilisez-vous une sorte de réécriture d'URL ou est-ce que reg.php est un fichier réel? – darma

+5

Êtes-vous par hasard en utilisant CodeIgniter ou un autre framework? Parfois, ils écrasent les variables $ _REQUEST. –

+0

@darma: même si reg.php est un vrai fichier - mod_rewrite peut perdre la chaîne de requête si elle a été mal écrite – zerkms

Répondre

6

Quand je rencontre quelque chose qui me dérange comme ça, je prends toujours mon script jusque dans les bases. Essayez ceci au sommet de votre script:

var_dump($_GET); 
exit; 

vous pouvez voir si en fait, il obtient les vars du crochet. Si ce n'est pas le cas, il se peut qu'il y ait quelque chose de plus profond ... PHP fonctionne vraiment avec Apache? Si cela fonctionne, commencez à ajouter d'autres choses jusqu'à ce qu'il s'arrête à nouveau et vous pouvez commencer à réduire le coupable.

+0

Salut, je reçois var vider comme tableau vide .. maintenant comment déboguer ça ... ?? J'ai des valeurs ajoutées dans l'URL –

+0

Cela signifie que rien ne se trouve dans la requête GET. Essayez $ _REQUEST. Êtes-vous sûr de ne pas poster? –

5

Déplacer ceci dans une réponse de mes commentaires ci-dessus. Deux raisons pour lesquelles vos paramètres GET peuvent manquer. Soit vous avez configuré la réécriture de mode qui les supprime, soit vous utilisez un framework, tel que CodeIgniter qui les déplace ailleurs.

Si vous utilisez CodeIgniter, vous pouvez les réactiver avec parse_str($_SERVER['QUERY_STRING'], $_GET);

+5

L'impression de '$ _SERVER ['QUERY_STRING']' pourrait ne pas être un mauvais endroit pour démarrer, quel que soit le framework. – aaronasterling

+0

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

0

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

Questions connexes