2013-10-31 41 views
0

我想在Joomla 3.1的自定義表格中插入一個聯繫表單,它似乎是刪除「@」,然後拋出一個MySQL錯誤。Joomla 3.1 mysql錯誤與@

編輯注 有一個名爲「Content - Email Cloaking」的插件,禁用它並沒有幫助。事實上,它實際上什麼都沒做。

代碼

$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正確的語法= INSERT INTO jos_aa_fan_userusernameemailtownpasswordunique_keyactivationregistered_date)VALUES(n911an,someoneexample.com,倫敦,e83d31748e85aa40539d4466dfd71a49,fe4793343f087e0890444bfb31b667b7,0,1383241398)

+0

你能提供你的** **的HTML標記以及這樣我就可以嘗試複製錯誤?忘了問,你的* php.ini *中關閉了魔術引號嗎? – Lodder

回答

1

的Joomla負責通過包裝值逃避串的$db->Quote()像這樣:

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

鑑於您使用的是Joomla 3.1,我還會使用$db->execute();而不是$db->query();。它仍然可以工作,但不推薦使用。

只是在一個側面說明,我也會考慮鹽漬密碼以及使用md5爲額外的安全。這也是什麼的Joomla使用的密碼;)

希望這有助於

+0

謝謝。我做鹽密碼,這只是一個第一階段的開發,一旦我有它的工作,它會全部適當強化。 – ggdx

+0

好的,好的:) – Lodder

+0

@Daniel - 忘了說,如果你還沒有開始關注Stackexchange的[Joomla Proposal](http://area51.stackexchange.com/proposals/58842/joomla),請這樣做。我們需要我們可以獲得的所有幫助 – Lodder