0

我在使用重力形式创建的表单时遇到问题。此表单的目的是获取表单的输入、加密密码并将该数据直接写入数据库。我已经验证了数据库的用户名、密码和 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 回答