重力表单将数据提交到外部数据库

时间:2013-04-26 17:39:07

标签: wordpress gravity-forms-plugin

我在使用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表单,工作正常....

任何帮助?

P.S:任何人都可以帮我构建一个将此数据提交到外部php文件的函数吗?如果我不能做这个工作....

1 个答案:

答案 0 :(得分: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测试了上述代码。