Numeric request keys are invalid.

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Numeric request keys are invalid.
« kdy: 12. 11. 2012, 10:38:25 »
Pri pokusu o odpoved ve foru jsem skoncil na:

Numeric request keys are invalid.

Nebyt TCPDUMPu a "try again" ve firefoxu, tak bych se hodne nastval... neslo pak zalozit ani nove tema, musel jsem smazat session/domain cookies.

Proc se neumi Vas web vzpamatovat z nejake podobne chyby vytvorenim nove session? Nebyt funkce na mazani cookies v prohlizeci, tak je Vas web nepouzitelny :(


Re:Numeric request keys are invalid.
« Odpověď #1 kdy: 12. 11. 2012, 13:27:43 »
Tohle se tu už řešilo několikrát. Shrnu, co o tom víme.

  • Je to zjevně problém v SMF, což je software, který tvoří tohle fórum.
  • Podle všeho je to tak, že si fórum (nebo nějaká funkce v PHP?) občas vygeneruje špatnou cookie, se kterou pak odmítne pracovat. Po smazání se vygeneruje cookie znovu a už většinou správně.
  • Naši vývojáři to několikrát zkoumali a na nic kloudného nepřišli. Objevili jen nějakou kontrolu, která tam byla kvůli jakési staré chybě v PHP. Ta chyba už není aktuální, kontrolu smazali a stejně to tu chybu hází.
  • Když to dáte do Google, najdete spoustu otázek, ale žádnou odpověď. Trápí to očividně hodně lidí a je to záhada.
  • Pokud umíte (nejen tazatel, to je obecná výzva) programovat v PHP a umíte zjistit, čím to je, budeme jen rádi, když dostaneme konkrétní tip. Ona by stačila možná i ta vadná cookie.

McFly

  • *****
  • 560
    • Zobrazit profil
    • E-mail
Re:Numeric request keys are invalid.
« Odpověď #2 kdy: 12. 11. 2012, 15:46:24 »
Kód: [Vybrat]
// Clean the request variables - add html entities to GET and slashes if magic_quotes_gpc is Off.
function cleanRequest()
{
global $board, $topic, $boardurl, $scripturl, $modSettings, $smcFunc;

// Makes it easier to refer to things this way.
$scripturl = $boardurl . '/index.php';

// What function to use to reverse magic quotes - if sybase is on we assume that the database sensibly has the right unescape function!
$removeMagicQuoteFunction = @ini_get('magic_quotes_sybase') || strtolower(@ini_get('magic_quotes_sybase')) == 'on' ? 'unescapestring__recursive' : 'stripslashes__recursive';

// Save some memory.. (since we don't use these anyway.)
unset($GLOBALS['HTTP_POST_VARS'], $GLOBALS['HTTP_POST_VARS']);
unset($GLOBALS['HTTP_POST_FILES'], $GLOBALS['HTTP_POST_FILES']);

// These keys shouldn't be set...ever.
if (isset($_REQUEST['GLOBALS']) || isset($_COOKIE['GLOBALS']))
die('Invalid request variable.');

// Same goes for numeric keys.
foreach (array_merge(array_keys($_POST), array_keys($_GET), array_keys($_FILES)) as $key)
if (is_numeric($key))
die('Numeric request keys are invalid.');

taky mi to dělá ve Firefoxu :-P

Re:Numeric request keys are invalid.
« Odpověď #3 kdy: 12. 11. 2012, 16:26:04 »
Dobrý den,

Petr přesně a věcně shrnul vše, co o problému víme. Bohužel má pravdu i v tom, že navzdory mnoha reportům této chyby (nejen) v SMF nebyla jejími autory opravena. Mysleli jsme, že jsme problém dílčími úpravami odstranili, ale pravděpodobně byl jen potlačen a občas se vrací. Odstranil jsem tedy teď ze SMF celou část kódu, která provádí test a vede k tomuto výsledku - podle našich informací už pro aktuální verze PHP nemá smysl. Snad to chybu definitivně odstraní.