0

我有以下代码,在我之前有人为时事通讯注册系统设置。

error_reporting(0);
set_magic_quotes_runtime (0);
if (get_magic_quotes_gpc()) {
foreach($_POST as $k=>$v)
    $_POST[$k] = stripslashes($v);
foreach($_COOKIE as $k=>$v)
    $_COOKIE[$k] = stripslashes($v);
}

$msg = $_COOKIE['sb'.$_GET['id']];

$email = trim($_GET['email']);
$Ok = ereg("^([a-zA-Z0-9_\.-]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", $email);

$headers  = 'From: ' . $email . "\n"; 
$headers .= 'MIME-Version: 1.0' ."\n"; 
$headers .= 'Content-Type: text/plain; charset=iso-8859-1' ."\n"; 
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\n";

if ($Ok && ($msg != '')) {
mail($emailmanager,'Subscribe to Newsletter',$msg,$headers);
Header("Location: $urlok");
} else {
Header("Location: $urlko");
}

通过提交具有以下代码的表单(电子邮件地址、姓名、州、电话号码等)来调用 php 文件:

error_reporting(0);

set_magic_quotes_runtime (0);
if (get_magic_quotes_gpc()) {
foreach($_POST as $k=>$v)
    $_POST[$k] = stripslashes($v);
foreach($_COOKIE as $k=>$v)
    $_COOKIE[$k] = stripslashes($v);
}

$msg = '';
foreach($_POST as $k=>$v) {
if (strtolower($k) != "submit" && trim($v) != '')
    $msg .= "$k:$v\n";
}

$id = md5($msg);
setcookie("sb$id",$msg,time()+86400,'','',0);

$email = trim($_POST['email']);

它会向填写表格的人发​​送一封电子邮件,其中包含一个链接,供他们单击以验证其电子邮件地址。

当他们点击链接时,第一个 php 文件(在顶部)被调用,然后将存储的原始表单的详细信息作为消息发送到电子邮件地址,因此电子邮件的收件人可以手动将这些详细信息输入数据库(邮寄列表)。

我正在尝试对其进行逆向工程,以便将详细信息插入到数据库中,而不是向邮件列表管理器发送通知电子邮件。

我很擅长用 php 操作数据库,但上面的代码有点超出我的能力。

我不确定代码如何将表单的所有输入的详细信息打包到一个 id 中,存储直到验证电子邮件地址,然后将它们全部放入发送给列表管理器的电子邮件中,但是,查看代码,谁能看到再次提取这些输入的方法,以便我可以将它们放入一些变量中,准备插入我的数据库表中?

任何帮助将不胜感激。先感谢您。干杯,艾尔。

4

1 回答 1

1

当他们点击提交时,它会循环浏览表单中的帖子数据:

foreach($_POST as $k=>$v)
    $_POST[$k] = stripslashes($v);
foreach($_COOKIE as $k=>$v)
    $_COOKIE[$k] = stripslashes($v);
}

然后,cookie 作为电子邮件消息链接的一部分发送,以便在他们单击时进行处理。您可以第一次从 $_POST 数据中获取您想要的任何数据 - 可能将其标记为未验证或将其存储在临时表中,然后在它们返回时对其进行验证。

于 2013-04-26T12:08:19.987 回答