2011-08-07 45 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

あなたのDBの$passwordがここに上書きされます。

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

私はあなたがdb_con.php からいずれかを使用するとしますが、)

+2

ニースキャッチ!別のヒント:DB資格情報を定数として宣言して、スクリプトで実際に上書きすることはありません。 – ninetwozero

+0

本当にいいキャッチ!そこにそれが見えませんでした:しかし、それは唯一の問題ではありませんでした。 INSERT INTOユーザー(名前、電子メール、パスワード、性別、dob)VALUES( '$ name'、 '$ email'、 '$ password'、 '$ genb'、 '$ dob')を変更しました。 'フィールド名の周りに追加:) - ありがとう! –

関連する問題