Transformer paramètre dans l'URL

Par simbur, il y a 12 ans


Bonjour,

je souhaiterai modifier une url de type monsite/projects/index/1 en une URL de type monsite/projects/index/12545516 afin que si qq1 change la valeur de l'id il ne tombe pas sur les vidéos d'un autre utilisateur

Cordialement

5 réponses

volovitz, il y a 12 ans

Ah mais j'avais compris que c'etait pour une interface de gestion, je pensais que c'etait des liens public

volovitz, il y a 12 ans

Bonjour,

Si tu ne veux pas qu'un visiteur puisse "deviner" un ID vidéo, il te faut utiliser un jeton.

Exemple :

Table video :

  • id
  • user_id

Dans ta vue pour créer le lien :

$this->Html->link('Voir la vidéo', array('controller' => 'videos', 'action' => 'index', 'token' => sha1($video[Video][id].$video[Video][user_id])));

Dans ton controller :

public function index($token) {
$video = $this->Video->find('first', array('conditions' => array('SHA1(concat(Video.id, Video.user_id))' => $token)));
}

Donc pour résumer, tu crée un token en combinant l'id de la vidéo et du propriétaire et tu le crypte en sha1.

Maenhyr, il y a 12 ans

C'est assez compliqué pour pas grand chose. Il te suffit tout simplement de voir si l'id correspondant à l'utilisateur ayant posté la vidéo est le même que l'id de l'utilisateur connecté et c'est tout.

simbur, il y a 12 ans

oui c'est ça quand l’utilisateur se connecte il voit toutes ses vidéos,je veux juste éviter qu'ils voient les vidéos des autres en changeant l'id dans l'url

volovitz, il y a 12 ans

Donc tu rajoutes une condition à ton find pour vérifier que ce soit le bon user