我在使用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文件的函数吗?如果我不能做这个工作....
答案 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测试了上述代码。