2

我们有一些网站在不同的 CMS(Drupal、Joomla 等)上运行。我们希望这些站点共享一个 phpbb 论坛(在不同的域上),并希望在每个站点上注册的人也能在论坛上自动创建一个用户帐户。

为此,我编写了一个脚本,它发送一个php curl request模仿 phpbb 的注册过程的脚本。

首先,我厌倦了一个简单的注册表单,它运行良好。但由于论坛使用Captcha我需要在我的脚本中添加一个表单,以便用户可以输入Captcha string. 而这里的事情并没有那么顺利。经过数小时的检查phpbb代码文件后,我设法或多或少地找出了问题所在,尽管我有限的 phhbb 知识阻止我找到解决方案,所以我想我会在这里寻求帮助。

我的脚本发送 curl 请求以ucp.php?mode=register通过"agree to terms"屏幕,解析结果以获取令牌和创建时间,然后发送另一个请求。返回值是带有验证码图像的注册屏幕。除了没有图像可以被视为url图像脚本是相对的,所以我改变了输出结果并制作了url一个absolute url.

所以而不是

./ucp.php?mode=confirm&confirm_id=xxxxxxxxxxxxx&type=1

我将代码更改为

http://www.mydomain.com/phpbb3/ucp.php?mode=confirm&confirm_id=xxxxxxxxxxxxx&type=1

并获取验证码图像(xxxxxxxxxxxxx每次confirm_id string都会更改)。

这就是我碰到砖墙的地方。生成的图像永远不是正确的验证码字符串。

如果我var_dump在其中的$captcha变量ucp_register.php可以看到正确的字符串,它永远不是验证码图像中的那个。我在输出某些变量的文件中放置了一些代码,phpbb以帮助我了解幕后发生的事情。这是我设法收集的内容,希望有人能告诉我为什么会发生这种情况,或者至少为我指明正确的方向:

  1. Incaptcha_abstract.phpcaptcha_gd.php是变量$this->confirm_code。当我在这两种情况下将其转储到文件中时,我可以看到正确的验证码(与输出$captcha varin时相同ucp_register.php)。
  2. ucp_confirm.php里面有一个$captcha->codevar ,它保存了我在输出验证码图像时看到的字符串。
  3. 当我通过浏览器正常完成注册过程$this->confirm_code$captcha->code持有相同的值时。

所以很明显,更改ucp.php?mode=confirm上面的行会导致这种情况,但我无法避免,好像我不这样做我没有得到验证码图像。

4

0 回答 0