Php 如何在URL中传递电子邮件地址的md5哈希?

Php 如何在URL中传递电子邮件地址的md5哈希?,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,使用: MySQL 5.1.68-cll PHPmyadmin 3.5.5 Interspire电子邮件营销人员6.1.2 在Interspire中,在我的电子邮件时事通讯的链接中,我想传递一个变量e=[MD5该订阅者电子邮件的哈希]。你有没有想过我该怎么做?我是否需要创建一个名为e的自定义字段并运行一个用散列值填充它的函数,或者是否有一种方法可以动态地执行此操作 还有,有没有办法在每次有人加入我的电子邮件列表时创建哈希 谢谢大家! 在mysql的现代版本中,您可以 select md5(e

使用:

  • MySQL 5.1.68-cll
  • PHPmyadmin 3.5.5
  • Interspire电子邮件营销人员6.1.2
在Interspire中,在我的电子邮件时事通讯的链接中,我想传递一个变量e=[MD5该订阅者电子邮件的哈希]。你有没有想过我该怎么做?我是否需要创建一个名为e的自定义字段并运行一个用散列值填充它的函数,或者是否有一种方法可以动态地执行此操作

还有,有没有办法在每次有人加入我的电子邮件列表时创建哈希


谢谢大家!

在mysql的现代版本中,您可以

select md5(email_address) from whatevertable;
当然,您也可以通过以下方式对已检索到的电子邮件执行此操作:

$md5edEmail = md5($email_address);

在PHP和MySQL中,md5都是标准函数。您可以这样使用它:

PHP:

MySQL:

md5(EmailField)
这两种方法也可以用于查询。由于您计划在URL中将其作为查询字符串传递,因此可以像下面的PHP示例那样对其进行编码:

$EncodedEmail = urlencode($e);//where $e is from above.
当然,您必须使用
urldecode()
来反转它

更多信息: 您只需使用md5函数,就像我在MySQL查询中所展示的那样。但是我不熟悉Interspire,所以我不能给你任何建议

关于在查询中使用md5函数,下面是一个示例:

$strSQL = "Update MyTable Set
  EmailHash = md5(EmailAddress)";
但是当你说你不能使用PHP时,我有点不知所措。您需要能够在某个时候将PHP变量移动到邮件中,并将邮件信息移动到PHP代码中


在我的数据库中,我想创建一个包含散列的列。让我们称之为电子邮件的散列。是否可以对其进行定义,使其在每次创建新记录时始终创建电子邮件地址的哈希,并为所有现有记录创建哈希?如果是,我怎么做?理想情况下,我会在PHP中完成所有这些,但我使用Interspire,所以我不想编辑他们的任何文件,因为我对PHP或他们的代码了解不够。我能做的就是操纵数据库并在HTML编辑器中调用自定义变量

如果将INNODB作为表的存储引擎,则可以这样做

假设您添加了一个新的列
hash\u of_email
,以保留
email
列的哈希值

更新当前值

UPDATE `table` SET `hash_of_value` = MD5(`email`)
自动更新新记录

请参阅,您需要的是
上的创建前触发器。让我们开始吧:

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 ;

祝你好运,

谢谢!我试图在Interspire中传递时事通讯的HTML编辑器中的变量,因此无法使用PHP。我可以将其作为自定义字段传递,比如e=%%hash_of_email%%,其中hash_of_email是自定义字段的名称。如何用散列填充MySQL中的自定义字段,以便在调用它时提供值?如果需要双向加密,md5不是选项。md5是一种散列算法,一旦md5出现,就无法返回。您需要研究的是php加密与散列方面的内容,而不是md5的输出是url安全的,不需要进行任何url编码(但url编码没有任何错误,只是作为一种实践),md5散列只是用作分析的标识符。不需要破译它,所以在MySQL中使用md5(EmailField)就可以完成我想要的了?你能提供一些基本的说明把代码放在哪里吗?谢谢因为这是Interspire如何工作的一个非常具体的问题,所以他们自己的支持论坛将是一个更好的提问场所。他们的论坛死了,他们的支持需要支付维护许可证的费用。我的过期了。我相信stack ninjas可以提供同样好的想法。在我的数据库中,我想创建一个包含散列的列。让我们称之为电子邮件的散列。是否可以对其进行定义,使其在每次创建新记录时始终创建电子邮件地址的哈希,并为所有现有记录创建哈希?如果是,我怎么做?理想情况下,我会在PHP中完成所有这些,但我使用Interspire,所以我不想编辑他们的任何文件,因为我对PHP或他们的代码了解不够。我能做的就是操纵数据库并在HTML编辑器中调用自定义变量。这是可能的,但具体的实现将是特定于应用程序和数据库的。许多MVC系统都有插入/更新前事件的概念,可以利用该事件对新字段进行散列和更新/设置。或者,可以创建一个db触发器来透明地执行此操作。希望这将让你知道什么树树皮得到一个解决方案谢谢你,非常有用的代码。
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 ;