Joomla 3.1 mysql error with @



我正在尝试将联系表单插入Joomla 3.1中的自定义表中,它似乎删除了"@",然后抛出MySQL错误。

编辑注释有一个名为"内容 - 电子邮件伪装"的插件,禁用它没有帮助。事实上,它实际上什么也没做。

法典

$db = JFactory::getDBO();
$input = new JInput;
$email = $input->get('email',NULL);
$usname = $input->get('usname',NULL);
$town = $input->get('town',NULL);
$thisDate = gmdate('d-m-Y H:i:s');
$thisPass = md5($input->get('pawd',NULL));
$uniqueKey = md5($usname.gmdate('YmdHis'));
$setActivation = 0;
$thisDate = strtotime(gmdate('Y-m-d H:i:s'));
$query = $db->getQuery(true);
$columns = array("username", "email", "town", "password", "unique_key", "activation", "registered_date");
$values = array($usname,$email,$town,$thisPass,$uniqueKey,$setActivation,$thisDate);
$query
    ->insert($db->quoteName('#__aa_fan_user'))
    ->columns($db->quoteName($columns))
    ->values(implode(',', $values));
$db->setQuery($query);
$db->query();   

错误

1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在 '.com,dofsw,e83d31748e85aa40539d4466dfd71a49,fe4793343f087e0890444bfb31b667b7,0,13' 在第 3 行 SQL=插入jos_aa_fan_userusernameemailtownpasswordunique_keyactivationregistered_date ) 值(n911an,某人示例.com,伦敦,e83d31748e85aa40539d4466dfd71a49,fe4793343f087e0890444bfb31b667b7,0,1383241398)

Joomla 通过将值包装在$db->Quote()中来处理转义字符串,如下所示:

$values = array($db->Quote($username), $db->Quote($email));

看到您使用的是Joomla 3.1,我也会使用$db->execute();而不是$db->query();。它仍然有效,但已弃用。

附带说明一下,我还会考虑加盐密码以及使用md5来获得额外的安全性。这也是Joomla用于密码;)

希望这有帮助

相关内容

  • 没有找到相关文章

最新更新