|
|
|
| Мне нужно генерировать временную ссылку по номеру телефона, этот номер мне нужно зашифровать в одном скрипте в МД5, а в другом принять и расшифровать.
Может я ошибаюсь и мне нужно не МД5, а какойнить хеш или кеш?
Вообщем мне нужно выдовать ссылку типа: ?id=буквы_цифры(зашифрованый номер телефона)
Далее юзер переходит по ссылке и попадает на другой скрипт, который должен расшифровать "буквы_цифры(зашифрованый номер телефона)" и сверить результат в БД | |
|
|
|
|
|
|
|
для: Елена Смирнова
(06.05.2008 в 18:29)
| | md5 - необратимый алгоритм хеширования (ну, почти ;). Можно сравнивать только суммы.
В вашем случае можно передавать телефон методом POST и юзер его видеть не будет | |
|
|
|
|
|
|
|
для: Maya
(06.05.2008 в 19:13)
| | md5 - совсем необратимый, однонаправленный. Само слово "хэширование" об этом говорит. Для кодирования можно разработать свой алгоритм, либо использовать функции кодирования по ключу, не помню названия) | |
|
|
|
|
|
|
|
для: LinUser
(06.05.2008 в 20:04)
| | Попробуйте вот это может вам подойдет! Это конечно только пример, но малоли пригодится!!
Только вам нужно создать БД в MYSQl telefon
<?php
$dblocation = "localhost";
$dbname = "telefon";
$dbuser = "root";
$dbpasswd = "";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx)
{
echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
exit();
}
if (! @mysql_select_db($dbname,$dbcnx) )
{
echo( "<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
exit();
}
?>
<?php
$tel = rand(0,9999999); // Номер телефона
$tel_md5 = date('Ymd')."".rand(0,99999); // Ключ (не md5)
echo "<a href='index.php?id=".$tel_md5."'>Ссылка</a> ";
$query = "INSERT INTO telef VALUES ('NULL', '$tel','$tel_md5')";
if(mysql_query($query))
{
echo "Телефон добавлен!!!<br />";
} else echo "Ошибка при добавлении телефона";
?>
<?php
if ( isset($_GET['id']) )
{
$id = intval($_GET['id']);
$ctg = mysql_query("SELECT * FROM telef WHERE telmd5=$id");
if ($telef = mysql_fetch_assoc($ctg))
{
echo "Ваш телефон: ".$telef['tel'];
}
}
?>
|
SQL!!!!!!!!
CREATE TABLE `telef` (
`id` int(12) NOT NULL auto_increment,
`tel` int(20) NOT NULL,
`telmd5` bigint(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=57 ;
--
-- Дамп данных таблицы `telef`
--
INSERT INTO `telef` VALUES (1, 5686454, 2008050684109);
INSERT INTO `telef` VALUES (2, 1234567, 200805064046);
|
| |
|
|
|
|
|
|
|
для: Елена Смирнова
(06.05.2008 в 18:29)
| | А в бд у вас явный номер или хеш MD5? | |
|
|
|
|
|
|
|
для: AcidTrash
(06.05.2008 в 21:52)
| | Номер, но думаю теперь его еще и в МД5 писать, а птом сверять... подскажите как перевести в МД5 | |
|
|
|
|
|
|
|
для: Елена Смирнова
(06.05.2008 в 22:38)
| | Ну какже когда user регистрируется, при принятии данных(телефона) записываете в БД хеш MD5 этих данных, а потом если user ввел номер телефона, хешируете его функцией
md5(номер телефона) и потом сравниваете с записями в БД. | |
|
|
|
|
|
|
|
для: Елена Смирнова
(06.05.2008 в 22:38)
| |
Если у вас есть "проверочная" база, то можно смело хешировать и сравнивать. Плюс можно добавить какой-нибудь ключ.
$Key="elenasmirnova";
$md5CheckSrc=$Tel.$Key;
$md5Check=md5($md5CheckSrc);
if(strcasecmp($md5Check,$md5ProverochnoeZnachenie == 0)) // проверочное хешируется так же
{
echo "Проверка пройдена";
}
else
{
echo "Проверка НЕ пройдена";
}
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(06.05.2008 в 21:52)
| | $tel = 7654321;
$tel_md5 = md5($tel);
echo $tel_md5; | |
|
|
|
|
|
|
|
для: Usta
(06.05.2008 в 22:43)
| | Спасибо! | |
|
|
|
|
|
|
|
для: Usta
(06.05.2008 в 22:43)
| | >$tel = 7654321;
>$tel_md5 = md5($tel);
>echo $tel_md5
Вопрос был не в хешировании, а в расхешировании, что в принципе невозможно.
А именно надо сравнивать хеши. | |
|
|
|