Zabezpečení proti změnám parametrů v URL

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jim.street
Člen | 26
+
0
-

Ahoj všichni,
mám šablonu, která mi vypisuje seznam osob z databáze řešitelů úloh. Vypisuje je tím způsobem, že
v presenteru načtu údaje o řešiteli z databáze, který obsahuje sloupec hodnocení. Hodnocení jednotlivých uživatelů sečtu a poté je podle sestupně setřídím (generuju to pak v tabulce ve zpusobu Poradi | Uzivatel).
Uživatele mám prolinkované, aby si přihlášení uživatelé mohli prohlídnou detailněji jejich statistiky.

<?php
<td title="{$r['school']}"><a href="{link Profile:show 'id'=>$r['id'], 'rank'=>$r['order']}">{$r['first_name']} {$r['last_name']}</a></td>
?>

Potřeboval bych zabezpečit, aby se nedal měnit parametr ‚rank‘, popřípadě aby se nezobrazoval.
Případně co si o tom nastudovat.

Napadlo mě vytvořit si asociativní pole id ⇒ poradi a předávat jej, ale nevím, jestli je to vhodný způsob

Editoval jim.street (10. 10. 2014 13:52)

enumag
Člen | 2118
+
+1
-

Proč to pořadí předáváš v odkazu místo aby sis jej vždy zjistil z db na základě ID?

looky
Člen | 99
+
0
-

A musíš rank do toho odkazu na profil vůbec dávat? Nestačilo by tam jen id a na stránce profilu si rank vytáhnout z db podle něj?

EDIT: @enumag byl o pár vteřin rychlejší :)

Editoval looky (10. 10. 2014 14:32)

jim.street
Člen | 26
+
0
-

Jenomže rank v DB není, jen hodnocení. Uživatelé vytažení z databáze jsou setříděni podle sumy hodnocení a rank k nim je asociativně přiřazen (vzestupně od prvního do posledního místa podle hodnocení). Napadla mě možnost předat jen id a pak si ten rank vytáhnout znova, jen jsem chtěl vědět, jestli není jednodušší způsob, např. pomocí předání parametrů.

<?php
	{if is_array($r['order'])}
		{$r['order'][0]}.&nbsp;&mdash;&nbsp;{$r['order'][1]}.
	{elseif $r['order']}
		{$r['order']}.
	{/if}


?>

Editoval jim.street (10. 10. 2014 14:43)

enumag
Člen | 2118
+
+3
-

Ten rank si vždy vytáhni znova. Je-li ten výpočet časově náročný, nasaď cache. Parametry na tohle nejsou určené.