0

gravityforms で作成したフォームに問題があります。このフォームの目的は、フォームの入力を取得し、パスワードを暗号化し、そのデータをデータベースに直接書き込むことです。データベースのユーザー名、パスワード、IP を確認しました。問題は、フォームが送信されることです。エントリは表示されますが、データベースにデータが書き込まれません。送信ボタンの横にロードサークルが表示されているだけです。

functions.php ファイル内で使用するコードは次のとおりです。

add_action("gform_after_submission_1", "create_account", 10, 2);
function create_account($entry, $form) {

    define('mySQL_hostname', '<ip>');  //database IP
    define('mySQL_database', '<database name>');  //database name
    define('mySQL_username', '<user>');  //database user
    define('mySQL_password', '<pass>');  //database password
    $db_link = mysql_pconnect( mySQL_hostname, mySQL_username, mySQL_password )
        or die( 'Error connecting to mysql<br><br>'.mysql_error() );

function l2j_encrypt($password) {
        return base64_encode(pack("H*", sha1(utf8_encode($password))));
    }

$str =  l2j_encrypt($entry["2"]);
$user = $entry["1"];
$currdate = date('Y-m-d H:i:s');
$email = $entry["3"];

    $db_select = mysql_select_db( mySQL_database, $db_link )
        or die( 'Error connecting to Database<br><br>'.mysql_error() );

    if ($user == '') { print'Incorrect UserID'; mysql_close(); }
        else {
    $db_add = mysql_query( "INSERT INTO `accounts` VALUES ('$user', '$str', '0', '0', '', '1', '$email', '$currate')" )
        or die( 'Error: '.mysql_error() );
}
mysql_close();

}

また、10,2 パラメーターとの取引は何ですか? それらを説明するものは何も見つかりませんでした...上記のコードは、別のphpファイルにある場合、htmlフォームと組み合わせて問題なく動作することに注意してください....

何か助けはありますか?

PS: このデータを外部の php ファイルに送信する関数を作成するのを手伝ってくれる人はいますか? この作業を行うことができない場合に備えて....

4

1 に答える 1

0

重力を少しいじった後、回避策を見つけることができました。

add_action("gform_after_submission_6", "set_page_log", 10, 2);
function set_page_log($entry, $form){
function post_to_url($url, $data) {
$fields = '';
foreach($data as $key => $value) {
$fields .= $key . '=' . $value . '&';
}
rtrim($fields, '&');
$post = curl_init();
curl_setopt($post, CURLOPT_URL, $url);
curl_setopt($post, CURLOPT_POST, count($data));
curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($post);
curl_close($post);
}
if($form["id"] == 6){//checking if the correct form is being used or not (optional)
$data = array(
"item1" =>     $entry["2"],
"item2" =>     $entry["5"],
"item3" =>         $entry["4"]
 );
post_to_url("http://www.example.com/post_data.php", $data);
//you can make changes to the data passed by gravity at the above url 
}
}

上記のコードを Gravity 1.6 と WP 3.5.1 でテストしました。

于 2013-04-28T23:40:05.347 に答える