私のサイトに連絡フォームがあります。同じメールアドレスのユーザーが複数回連絡するのを防ぎたいです。
データを格納するmySQLデータベースで、ストアドプロシージャを作成しました
DELIMITER //
CREATE PROCEDURE find_email(emailaddr VARCHAR(60))
BEGIN
DECLARE form_email VARCHAR(60);
SET form_email=emailaddr;
SELECT count(*)
FROM wordpress.cf7dbplugin_submits
WHERE form_name='Register'
AND field_name LIKE '%email%'
AND field_value=form_email;
END //
このようにして、データベースに電子メールアドレスがあった回数から数値を取得できました。
私のPHPファイルでこれを行いました
Global $res;
$res = $mydb->query("CALL find_email");
if($res>0)
{
echo "<script>alert('This email address is already in use!')</script>";
}
else
{
$tableName = $this->getSubmitsTableName();
$parametrizedQuery = "INSERT INTO `$tableName` (`submit_time`, `form_name`, `field_name`, `field_value`, `field_order`) VALUES (%s, %s, %s, %s, %s)";
$parametrizedFileQuery = "INSERT INTO `$tableName` (`submit_time`, `form_name`, `field_name`, `field_value`, `field_order`, `file`) VALUES (%s, %s, %s, %s, %s, %s)";
$order = 0;
$noSaveFields = $this->getNoSaveFields();
$foundUploadFiles = array();
global $mydb;
}
コードを変更し、手動で$ resを0に設定すると、フォームは想定どおりに機能します。そうしないと、送信ボタンをクリックしても何も起こりません。
解決策を持っている人に事前に感謝して、私が十分な詳細を入れてくれることを願っています。