[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Зашифровать ссылки на сайте с помощью base64encode
kav1
Итак, всем привет.

На моем сайте есть кое-какие ссылки на главной, которые не желательно вот так в открытом виде держать. Те ссылки, которые начинаются на http://mysite.ru/file.php?id= необходимо зашифровать (они открываются в новом окне, где с помощью метода get я получу их в зашифрованном виде и расшифрую с помощью base64 decode).

Тут получается, надо сделать "маской" - то есть если ссылка начинается с http://mysite.ru/file.php?id=, то шифровать надо то,что после id= и до двойной кавычки.

допустим, содержимое занесено в $a

тогда что-то вроде:

$find="http://mysite.ru/file.php?id=";
if(strpos ($a, $find)) {
$a = str_replace("что на что менять используя base64 decode???", $a); }


вот как правильно замену сделать? То что после id= и до знака "



Спустя 1 час, 5 минут, 58 секунд (2.08.2011 - 16:23) killer8080 написал(а):
mav1
без регулярок не обойтись ;)
$t = ' 
<a href="http://mysite.ru/file.php?id=123&p=56&t=88">link</a>
text
text
<a href="http://mysite.ru/file.php?id=456&d=hh&h=66">link2</a>
'
;

$t = preg_replace_callback(
'#(href="http\://mysite\.ru/file\.php\?id\=)([^"]+)"#ius',
create_function('$m', 'return $m[1].base64_encode($m[2]).\'"\';'),
$t
);
echo '<pre>',htmlspecialchars($t), '</pre>';

Спустя 21 час, 53 минуты, 19 секунд (3.08.2011 - 14:16) mav1 написал(а):
вот блин, всё отлично, но как бы от PRE избавиться, дизайн весь летит фтопку из за этого...

спасибо что откликнулись!!!

Спустя 14 минут, 27 секунд (3.08.2011 - 14:30) waldicom написал(а):
<pre> - это же просто для тебя. Можно убрать smile.gif

Спустя 26 секунд (3.08.2011 - 14:31) mav1 написал(а):
дада, все сделал, все работает, спасибо!!!!!

Спустя 16 минут, 7 секунд (3.08.2011 - 14:47) killer8080 написал(а):
Цитата (mav1 @ 3.08.2011 - 14:16)
вот блин, всё отлично, но как бы от PRE избавиться, дизайн весь летит фтопку из за этого...

спасибо что откликнулись!!!

htmlspecialchars() тоже убери wink.gif
это только для удобства просмотра примера.

Спустя 2 минуты, 38 секунд (3.08.2011 - 14:50) mav1 написал(а):
killer8080 ,спасибо вам за помощь, а как будет выглядеть строка кода если мне надо заменить в тексте то что начинатся со слова SLOVO и до кавычек ?

text
text
bla bla bla SLOVOjdlijrgkjk47y...t7cyt7cy78cty378"


чтобы SLOVOjdlijrgkjk47y...t7cyt7cy78cty378 стало в шифре?

Спустя 3 минуты, 47 секунд (3.08.2011 - 14:53) killer8080 написал(а):
да тут простая регулярка ;)
'#SLOVO[^"\s]+"#'

Спустя 8 минут, 13 секунд (3.08.2011 - 15:02) mav1 написал(а):
$t = preg_replace_callback(
'#SLOVO[^"\s]+"#',
create_function('$m', 'return $m[1].base64_encode($m[2]).\'"\';'),
$t
);

echo $t;


что то не хочет работать) где косячок? )

Спустя 8 минут, 17 секунд (3.08.2011 - 15:10) killer8080 написал(а):
mav1
а откуда возьмётся $m[1] и $m[2]? :)
в реге же скобок нет ;)
что нужно кодировать
'SLOVOjdlijrgkjk47y...t7cyt7cy78cty378'

или
'jdlijrgkjk47y...t7cyt7cy78cty378'

Спустя 9 минут, 15 секунд (3.08.2011 - 15:19) mav1 написал(а):
скобок нет, верно, я синтаксис не знаю, сорри((

SLOVOjdlijrgkjk47y...t7cyt7cy78cty378
- это кодировать

Спустя 3 минуты, 27 секунд (3.08.2011 - 15:23) killer8080 написал(а):
$t = '
text
text
bla bla bla SLOVOjdlijrgkjk47y...t7cyt7cy78cty378"
'
;

$t = preg_replace_callback(
'#SLOVO[^"\s]+"#',
create_function('$m', 'return base64_encode($m[0]);'),
$t
);

echo $t;


PS там последняя кавычка то же захватывается, если не нужно то
$t = '
text
text
bla bla bla SLOVOjdlijrgkjk47y...t7cyt7cy78cty378"
'
;

$t = preg_replace_callback(
'#(SLOVO[^"\s]+)"#',
create_function('$m', 'return base64_encode($m[1]);'),
$t
);

echo $t;

Спустя 40 минут, 38 секунд (3.08.2011 - 16:03) mav1 написал(а):
вот не знаю, и первый и второй варианты кода - и там и там кавычка съедается(

а мне надо чтобы кавычка оставалась кавычкой)


Спустя 3 минуты, 45 секунд (3.08.2011 - 16:07) killer8080 написал(а):
она съедается но не шифруется, если её нужно сохранить, то
$t = preg_replace_callback(
'#(SLOVO[^"\s]+)(")#',
create_function('$m', 'return base64_encode($m[1]).$m[2];'),
$t
);
или
$t = preg_replace_callback(
'#(SLOVO[^"\s]+)"#',
create_function('$m', 'return base64_encode($m[1]).\'"\';'),
$t
);

Спустя 7 минут, 8 секунд (3.08.2011 - 16:14) mav1 написал(а):
вроде добили)) вымучили)) работает)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.