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


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.

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.

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

simbur
Auteur

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

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