使用:
在Interspire中,在我的电子邮件简报链接中,我想传递一个变量e = [该订阅者电子邮件的MD5哈希]。有关如何做到这一点的任何想法?我是否需要创建一个名为e的自定义字段并运行一个函数,该函数将使用散列值填充它,或者有没有办法在运行中执行此操作?
另外,每当有人加入我的电子邮件列表时,有没有办法创建哈希?
谢谢!
答案 0 :(得分:0)
在现代版本的mysql中你可以
select md5(email_address) from whatevertable;
您也可以通过对已经检索过的电子邮件进行操作
$md5edEmail = md5($email_address);
答案 1 :(得分:0)
在PHP和MySQL中,md5是标准函数。您可以像这样使用它:
PHP:
$e = md5($Email);
MySQL的:
md5(EmailField)
两者也可用于查询。由于您计划将其作为URL中的查询字符串传递,因此可以像对待PHP示例一样对其进行编码:
$EncodedEmail = urlencode($e);//where $e is from above.
当然,你必须使用urldecode()
来反转它。
更多信息: 你只需使用我在MySQL查询中显示的md5函数。但是我对Interspire并不熟悉所以我不能给你任何建议。
至于在查询中使用md5函数,这是一个例子:
$strSQL = "Update MyTable Set
EmailHash = md5(EmailAddress)";
但是当你说你不能使用PHP时,我有点失落。您需要能够在某些时候将PHP变量移动到邮件和邮件信息到PHP代码。
答案 2 :(得分:0)
在我的数据库中,我想创建一个包含哈希值的列。我们称之为hash_of_email。是否可以定义它以便每次创建新记录时始终创建电子邮件地址的哈希值,并为所有现有记录创建哈希值?如果是这样我该怎么办?理想情况下我会用PHP完成所有这些操作,但我使用的是Interspire,所以我不想编辑他们的任何文件,因为我不太了解PHP,或者他们的代码已经足够好了。我能做的是操纵数据库并在HTML编辑器中调用自定义变量
如果您将INNODB作为桌面的存储引擎,则可以这样做。
假设您添加了一个新列hash_of_email
以保留email
列的哈希值。
更新当前值
UPDATE `table` SET `hash_of_value` = MD5(`email`)
自动更新新记录
请参阅MySQL's trigger,您需要的是table
上的创建触发器。我们来做吧:
DELIMITER $$
CREATE TRIGGER `TG_table__before_insert`
ON `table` BEFORE INSERT FOR EACH ROW
BEGIN
SET NEW.`hash_of_email` = MD5(NEW.`email`);
END $
DELIMITER ;
祝你好运,