0

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 サーバーのバージョンに対応するマニュアルで、3 行目の SQL=INSERT INTO jos_aa_fan_user( username, email, town, password, n unique_key, 9 activation) registered_date1an VALUES ( someoneexample.com,ロンドン,e83d31748e85aa40539d4466dfd71a49,fe4793343f087e0890444bfb31b667b7,0,1383241398)

4

1 に答える 1

1

Joomla は、次の$db->Quote()ように値をラップすることで、文字列のエスケープを処理します。

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

Joomla 3.1 を使用しているので、$db->execute();代わりに$db->query();. 引き続き機能しますが、非推奨です。

余談ですが、パスワードのソルト化とmd5、その追加のセキュリティのために使用することも検討します. これは、Joomla がパスワードに使用するものでもあります ;)

お役に立てれば

于 2013-11-01T10:57:43.930 に答える