2013-04-26 129 views
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表格,工作得很好....

任何帮助吗?

P.S:任何人都可以帮助我建立一个函数,将这些数据提交给外部的php文件吗?如果我不能使这项工作....

回答

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测试了上述代码。

+0

尝试过,但没有工作...在目标数据库的同一台服务器上使用相同的PHP函数似乎工作但....任何线索为什么会发生这种情况? MySQL允许远程连接,我甚至尝试了root帐户... – 2013-04-29 22:49:59