2011-08-07 206 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在字段名稱周圍添加:) - 謝謝! –