[FB SDK] sql mislukt
Ik zit te proberen met de fb sdk. Nu heb ik 2 bestanden, bij het inloggen op index.php gaat het bij sommige gebruikers mis. Ik weet niet wat er fout gaat maar bij sommige fb gebruikers blijft hij nieuwe rijen aanmaken in de database en die zijn allemaal dezelfde zelfs het fb id.
Wat is er mis met mijn code?
(sorry voor de grote brokken maar ik snap echt niet wat er fout gaat)
fbaccess.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
try{
include_once "main/plugin/facebook/src/facebook.php";
}catch(Exception $e){
error_log($e);
}
// Create our application instance
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
));
// Get User ID
$user = $facebook->getUser();
// We may or may not have this data based
// on whether the user is logged in.
// If we have a $user id here, it means we know
// the user is logged into
// Facebook, but we don’t know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.
if($user){
//==================== Single query method ======================================
try{
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
}catch(FacebookApiException $e){
error_log($e);
$user = NULL;
}
//==================== Single query method ends =================================
}
if($user){
// Get logout URL
$logoutUrl = $facebook->getLogoutUrl();
}else{
// Get login URL
$loginUrl = $facebook->getLoginUrl(array(
'scope' => 'user_about_me,user_birthday,user_education_history,email,user_hometown,user_location',
'redirect_uri' => $site_url,
));
}
?>
try{
include_once "main/plugin/facebook/src/facebook.php";
}catch(Exception $e){
error_log($e);
}
// Create our application instance
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
));
// Get User ID
$user = $facebook->getUser();
// We may or may not have this data based
// on whether the user is logged in.
// If we have a $user id here, it means we know
// the user is logged into
// Facebook, but we don’t know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.
if($user){
//==================== Single query method ======================================
try{
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
}catch(FacebookApiException $e){
error_log($e);
$user = NULL;
}
//==================== Single query method ends =================================
}
if($user){
// Get logout URL
$logoutUrl = $facebook->getLogoutUrl();
}else{
// Get login URL
$loginUrl = $facebook->getLoginUrl(array(
'scope' => 'user_about_me,user_birthday,user_education_history,email,user_hometown,user_location',
'redirect_uri' => $site_url,
));
}
?>
index.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
include "fbaccess.php";
if(!empty($user)) {
//ingelogdt, data in database bijwerken ;)
$gebruiker_sql = mysqli_query($connectie, "SELECT id, voornaam, keer_op_site FROM gebruikers WHERE FB_id = '".mysqli_real_escape_string($connectie, $user)."'");
if($gebruiker_sql == FALSE) {
db_error('Er is een fout opgetreden bij het ophalen van u gegevens voordat deze konden worden bijgewerkt, (sql fout). ', mysqli_error($connectie));
} elseif(mysqli_num_rows($gebruiker_sql) == "0") {
if($json = json_decode(file_get_contents('https://graph.facebook.com/'.$user.'?fields=id,name,birthday,email,first_name,last_name&access_token='.$facebook->getAccessToken()))) {
$invoegen_sql = mysqli_query($connectie, " INSERT INTO gebruikers
(
FB_id,
FB_acc_token,
voornaam,
achternaam,
mailadres,
laatste_login_ip,
punten,
keer_op_site,
registratie_datum
)
VALUES
(
'".mysqli_real_escape_string($connectie, $user)."',
'".mysqli_real_escape_string($connectie, $facebook->getAccessToken())."',
'".mysqli_real_escape_string($connectie, $json->first_name)."',
'".mysqli_real_escape_string($connectie, $json->last_name)."',
'".mysqli_real_escape_string($connectie, $json->email)."',
'NULL',
'3',
'0',
'".date("Y-m-d H:i:s")."'
)");
if($invoegen_sql == FALSE) {
db_error('Er is een fout opgetreden bij het aanmaken van u gebruiker op ons systeem, (sql fout). ', mysqli_error($connectie));
} else {
echo ' <h1>Welkom</h1>U bent in onze database toegevoegd. Gelieve de pagina te herladen zodat wij u kunnen inloggen.
<meta http-equiv="refresh" content="0">';
}
} else {
echo 'Er is een fout opgetreden bij het ophalen van u gegevens van facebook, probeer het later nog eens. U bent niet ingeschreven.';
}
} else {
$gebruiker = mysqli_fetch_assoc($gebruiker_sql);
//update bestaande gebruiker
if($json = json_decode(file_get_contents('https://graph.facebook.com/'.$user.'?fields=id,name,birthday,email,first_name,last_name&access_token='.$facebook->getAccessToken()))) {
$keer = $gebruiker['keer_op_site'] + 1;
$update_sql = mysqli_query($connectie, " UPDATE
gebruikers
SET
FB_acc_token = '".mysqli_real_escape_string($connectie, $facebook->getAccessToken())."',
voornaam = '".mysqli_real_escape_string($connectie, $json->first_name)."',
achternaam = '".mysqli_real_escape_string($connectie, $json->last_name)."',
mailadres = '".mysqli_real_escape_string($connectie, $json->email)."',
laatste_login_ip = '".$_SERVER['REMOTE_ADDR']."',
keer_op_site = '".$keer."'
WHERE
FB_id = '".mysqli_real_escape_string($connectie, $user)."'");
if($update_sql == FALSE) {
db_error('Er is een fout opgetreden bij het update van u gegevens, (sql fout). ', mysqli_error($connectie));
}
echo ' Welkom terug '.$gebruiker['voornaam'].'
<meta http-equiv="refresh" content="0">';
$_SESSION['gebruiker'] = $gebruiker['id'];
$_SESSION['gebruikersnaam'] = $json->name;
} else {
echo 'Updaten mislukt, data kon niet worden opgehaald van facebook.';
}
}
} else {
//niet ingelogdt
echo ' <h1>Niet ingelogd.</h1>
U bent momenteel niet ingelogd op deze site.
}
?>
include "fbaccess.php";
if(!empty($user)) {
//ingelogdt, data in database bijwerken ;)
$gebruiker_sql = mysqli_query($connectie, "SELECT id, voornaam, keer_op_site FROM gebruikers WHERE FB_id = '".mysqli_real_escape_string($connectie, $user)."'");
if($gebruiker_sql == FALSE) {
db_error('Er is een fout opgetreden bij het ophalen van u gegevens voordat deze konden worden bijgewerkt, (sql fout). ', mysqli_error($connectie));
} elseif(mysqli_num_rows($gebruiker_sql) == "0") {
if($json = json_decode(file_get_contents('https://graph.facebook.com/'.$user.'?fields=id,name,birthday,email,first_name,last_name&access_token='.$facebook->getAccessToken()))) {
$invoegen_sql = mysqli_query($connectie, " INSERT INTO gebruikers
(
FB_id,
FB_acc_token,
voornaam,
achternaam,
mailadres,
laatste_login_ip,
punten,
keer_op_site,
registratie_datum
)
VALUES
(
'".mysqli_real_escape_string($connectie, $user)."',
'".mysqli_real_escape_string($connectie, $facebook->getAccessToken())."',
'".mysqli_real_escape_string($connectie, $json->first_name)."',
'".mysqli_real_escape_string($connectie, $json->last_name)."',
'".mysqli_real_escape_string($connectie, $json->email)."',
'NULL',
'3',
'0',
'".date("Y-m-d H:i:s")."'
)");
if($invoegen_sql == FALSE) {
db_error('Er is een fout opgetreden bij het aanmaken van u gebruiker op ons systeem, (sql fout). ', mysqli_error($connectie));
} else {
echo ' <h1>Welkom</h1>U bent in onze database toegevoegd. Gelieve de pagina te herladen zodat wij u kunnen inloggen.
<meta http-equiv="refresh" content="0">';
}
} else {
echo 'Er is een fout opgetreden bij het ophalen van u gegevens van facebook, probeer het later nog eens. U bent niet ingeschreven.';
}
} else {
$gebruiker = mysqli_fetch_assoc($gebruiker_sql);
//update bestaande gebruiker
if($json = json_decode(file_get_contents('https://graph.facebook.com/'.$user.'?fields=id,name,birthday,email,first_name,last_name&access_token='.$facebook->getAccessToken()))) {
$keer = $gebruiker['keer_op_site'] + 1;
$update_sql = mysqli_query($connectie, " UPDATE
gebruikers
SET
FB_acc_token = '".mysqli_real_escape_string($connectie, $facebook->getAccessToken())."',
voornaam = '".mysqli_real_escape_string($connectie, $json->first_name)."',
achternaam = '".mysqli_real_escape_string($connectie, $json->last_name)."',
mailadres = '".mysqli_real_escape_string($connectie, $json->email)."',
laatste_login_ip = '".$_SERVER['REMOTE_ADDR']."',
keer_op_site = '".$keer."'
WHERE
FB_id = '".mysqli_real_escape_string($connectie, $user)."'");
if($update_sql == FALSE) {
db_error('Er is een fout opgetreden bij het update van u gegevens, (sql fout). ', mysqli_error($connectie));
}
echo ' Welkom terug '.$gebruiker['voornaam'].'
<meta http-equiv="refresh" content="0">';
$_SESSION['gebruiker'] = $gebruiker['id'];
$_SESSION['gebruikersnaam'] = $json->name;
} else {
echo 'Updaten mislukt, data kon niet worden opgehaald van facebook.';
}
}
} else {
//niet ingelogdt
echo ' <h1>Niet ingelogd.</h1>
U bent momenteel niet ingelogd op deze site.
}
?>
(mysqli_num_rows($gebruiker_sql) == "0" ===> mysqli_num_rows($gebruiker_sql) == 0
Bedankt, getallen erbuiten. Helaas nog wel steeds hetzelfde probleem
Gewijzigd op 24/09/2013 22:12:53 door php knipper
Toevoeging op 25/09/2013 13:15:26:
ik heb mijn query even opgeslagen. en $user is daar anders dan op andere plaatsen
Toevoeging op 25/09/2013 13:23:13:
heb het gevonden
ini(11) was niet te klein