Bonjour,
Je suis debutant en PHP et je veut cacher mon id, quand l'utilisateur clique sur l'url en gros que quand l'utilisateur clique sur le lien que sa fasse idResto =djdsjsglgmtp par exemple au leu de idResto = 1
Décrivez ici votre code ou ce que vous cherchez à faire
<a href='unSeulRestaurant.php?idResto=".$lesrestaurants['idResto']."'><h1>".$lesrestaurants['nomResto']."</h1></a>"
idResto = sjjrut&opsk
aucune erreur mais juste idResto = 1, 2 , 3 ou 4, selon l'article qu'on choisit
Salut,
Tu peux crypter l'URL avec la fonction PHP urlencode()
(http://php.net/manual/en/function.urlencode.php) et les décoder au besoin avec la fonction urldecode()
(http://php.net/manual/en/function.urldecode.php).
Sinon, si tu vexu crypter certains paramètres passés en GET, tu peux faire comme ceci :
// Fonctions encrypt / decrypt (à mettre dans un fichier helper inclu globalement par ex.)
function simple_encrypt($text, $salt = "xx2Bda3wW9aZ3c4PXG2PeB9")
{
return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
}
function simple_decrypt($text, $salt = "xx2Bda3wW9aZ3c4PXG2PeB9")
{
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
}
// On encode l'ID
<a href="unSeulRestaurant.php?idResto=<?= simple_encrypt($lesrestaurants['idResto']) ?>"><?= $lesrestaurants['nomResto'] ?></a>
// Pour décoder l'ID
$idResto = simple_decrypt($_GET['idResto']);
Tu te créé une fonction d'encryptage / décryptage.
Quand tu veux envoyer l'id, tu encryptes encrypt($lesrestaurants['idResto'])
, quand tu veux recevoir tu décryptes $monVraiId = decrypt($_GET['idResto']);
.
A toi de choisir le système d'encryptage que tu souhaites (il en existe de nombreux, des plus ou moins sécurisés, et des plus ou moins compliqués à utiliser).
Si ça doit être sécurisé, je te conseil d'utiliser des class toute faites (sur Github, tu devrais en trouver des suffisamments tester pour être utilisable sans risque).
Ok, mais la fonction encrypt/decrypt va être composé comment, je ne voie pas se qu'il faut mettre à l'intérieure (désolé mais je n'ai jamais fais ça)
Attention, je n'ai volontairement pas parlé de la façon la plus connu de crypté en PHP (mcrypt) car elle n'est plus maintenu depuis 2007 et l'extension n'est plus installé par défaut depuis PHP 7.
D'où le conseil d'utiliser une class maintenu via Github, qui sera plus sécurisé.
Evidemment, ça dépend de l'utilisation qu'on en a :)
Ah bah, ils viennent d'annoncer qu'elle sera carrement supprimé des extensions possibles dans la version 7.2 de PHP (suite à l'annonce de la sortie de la version 7.1). Bref, il est préférable de s'en passer.
Oui, tu trouvera pleins de ressources sur le net et des exemples de fonctions d'encodage/décodage ;)
Suffit de chercher un peu :)
J'utilise cette library en ce qui me concerne : https://github.com/defuse/php-encryption
enfin, un fork perso de cette library (elle ne répondait pas totalement à mes besoins).
Après, ils conseillent OpenSSL à la place, et donc je suppose :
http://php.net/manual/fr/function.openssl-encrypt.php
http://php.net/manual/fr/function.openssl-decrypt.php
Mais là, je ne connais pas, donc je ne peux pas te renseigner plus que ça.
je vais essayer de comprendre urlencode et urldecode pour l'appliquer dans ma structure MVC ^^
Euh, oué, alors urlencode ne crypte rien, il permet de passer un argument dans une url qui restera valide.
En l'occurrence, pour un chiffre tel que 10, le retour sera toujours 10.
Tu peux tester par toi même : http://meyerweb.com/eric/tools/dencoder/
ah oui c'est pour une chaine de caractere effectivement bon je vais essayer openSSL alors
j'ai trouvé une solution qui est
Modele.php
public function encrypt($chaine, $key="", $urlvalid=true) //methode pour encrypter une valeur
{
if ($urlvalid)
{
$ret = strtr($ret,
array(
'+' => '.',
'=' => '-',
'/' => '~'));
}
return $ret;
}
public function decrypt($chaine, $key="") //methode pour decrypter une valeur
{
$chaine = strtr(
$chaine,
array(
'.' => '+',
'-' => '=',
'~' => '/'));
return $chaine;
}
Controleur.php :
public function cryptageid($chaine, $key="", $urlvalid=true)
{
$this->ModeleAffichage-> encrypt($chaine, $key="", $urlvalid=true);
$user_id = strtr($ret ,array('+' => '.', '=' => '-', '/' => '~'));
$ret = urlencode($user_id);
return $ret;
}
public function decryptageid($chaine, $key="")
{
$user_id = strtr($chaine ,array('+' => '.', '=' => '-', '/' => '~'));
$chaine = urldecode($user_id);
$this->ModeleAffichage-> encrypt($chaine, $key="");
return $chaine;
}
mais je voie pas comment l'intégrer dans ma vue pour l'id ou il y a :
<a href='unSeulRestaurant.php?idResto=".$lesrestaurants['idResto']."'><h1>".$lesrestaurants['nomResto']."</h1></a>".