2011-08-07 79 views
1

我想在我的网站上植入Facebook注册。MySQL:“拒绝访问”

我用这个教程:http://www.9lessons.info/2011/01/user-signup-using-facebook-data.html

当我点击“注册”,它的时间码的数据插入到数据库中,我得到这个错误:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'USERNAME'@'HOST' (using password: YES) in /home/a9297472/public_html/store_user_data.php on line 44

(我删的真正用户名和主机)

根据错误的主机和用户名是正确的。 这里是过程代码:

<?php 
include('config/db_con.php'); 
define('FACEBOOK_APP_ID', 'APP ID'); // Place your App Id here 
define('FACEBOOK_SECRET', 'APP SECRET'); // Place your App Secret Here 

// No need to change the function body 
function parse_signed_request($signed_request, $secret) 
{ 
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
    // decode the data 
    $sig = base64_url_decode($encoded_sig); 
    $data = json_decode(base64_url_decode($payload), true); 
    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') 
    { 
     error_log('Unknown algorithm. Expected HMAC-SHA256'); 
     return null; 
    } 

    // check sig 
    $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); 
    if ($sig !== $expected_sig) 
    { 
     error_log('Bad Signed JSON signature!'); 
     return null; 
    } 
    return $data; 
} 
function base64_url_decode($input) 
{ 
    return base64_decode(strtr($input, '-_', '+/')); 
} 
if ($_REQUEST) 
{ 
    $response = parse_signed_request(
     $_REQUEST['signed_request'], 
     FACEBOOK_SECRET 
    ); 

    $name = $response["registration"]["name"]; 
    $email = $response["registration"]["email"]; 
    $password = $response["registration"]["password"]; 
    $gender = $response["registration"]["gender"]; 
    $dob = $response["registration"]["birthday"]; 

    // Connecting to database 
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB"); 

    // Inserting into users table 
    $result = mysql_query(" 
INSERT INTO users (
    name, email, password, gender, dob 
) VALUES (
    '$name', '$email', '$password', '$gender', '$dob') 
"); 

    if($result){ 
    // User successfully stored 
    } 
    else 
    { 
     // Error in storing 
    } 
} 
else 
{ 
    echo '$_REQUEST is empty'; 
} 

?> 

我加倍检查了一切。 主机,用户名,密码& db_name是我在网站的其他部分使用的相同的细节,它工作正常。 我做错了什么?

谢谢!

+0

你也应该不发表您的appid和因为有人现在可以代表你的应用执行操作:-)我会建议编辑你的帖子以阻止秘密,然后重置它[开发者应用](http://www.facebook.com/developers)。 – DSchultz

回答

5

$password为DB这里正在改写:

$password = $response["registration"]["password"];

我假设你想使用db_con.php 的一个;)

+2

好的!另一个技巧:将你的数据库证书声明为常量,这样你就不会在脚本中覆盖它们。 – ninetwozero

+0

的确很棒!没有看到那里:D那不是唯一的问题。我还更改了'INSERT INTO用户(姓名,电子邮件,密码,性别,dob)VALUES('$ name','$ email','$ password','$ gender','$ dob'));' - I在字段名称周围添加:) - 谢谢! –