Мне нужно передать зашифрованное значение через URL. Есть ли способ избежать некоторых символов, таких как слэш (/) в значении, которое мы получаем после шифрования? Потому что в codeigniter для разделения параметров в URL используется символ, такой как слэш. Обратите внимание, что я не хочу, чтобы какое-либо предложение не передавало зашифрованную строку в URL 🙂
То, что вы хотите, – это не шифрование (подразумевающее безопасность), а кодирование. На практике ваши варианты в основном:
Я бы не выбрал гекс. Решите, хотите ли вы, чтобы строка была разборчивой и сначала выберите одну из двух.
Используйте функцию urlencode
PHP после шифрования: http://php.net/manual/en/function.urlencode.php и используйте urldecode
в скрипте, который обрабатывает данные GET.
class MY_Encrypt extends CI_Encrypt { function encode($string, $key="", $url_safe=TRUE) { $ret = parent::encode($string, $key); if ($url_safe) { $ret = strtr( $ret, array( '+' => '.', '=' => '-', '/' => '~' ) ); } return $ret; } function decode($string, $key="") { $string = strtr( $string, array( '.' => '+', '-' => '=', '~' => '/' ) ); return parent::decode($string, $key); } }
–
$key = $this->config->item('encryption_key'); $outboundlink = urlencode( $this->encrypt->encode($segment, $key, TRUE) ); $inboundlink = rawurldecode( $this->encrypt->decode( $segment, $key) );
Одна идея состоит в том, чтобы представлять зашифрованную строку как hex, используя только 0-9 и af и необязательно x.
Но я предлагаю вам использовать TLS (лучший SSL) для защиты ваших данных, потому что теперь вы, вероятно, шифруете данные с помощью JS, так что клавиши видны злоумышленнику.
Не вызывайте текущую схему безопасности или шифрование, а просто обфускацию.
это не правильный метод, но он может вам очень помочь. Для этого я сделал несколько альтернативных методов.
<html> <a href="<?= base_url('controller/category/').$this->encrypt->encode($category_men_top->category_id);?>">Category Name</a> </html> public function category() { $count=$this->uri->total_segments(); //getting total number of segment $id=''; //assigning value for ($i=3; $i<=$count ; $i++) { $id=$id.$this->uri->segment($i).'/'; } $id=rtrim($id,"/"); // removing '/' from the end of the whole string echo "$id"; echo "<br>"; echo $this->encrypt->decode($id); }