Stworzyłem aplikację na facebooka. Użytkownik przechodzi do niej poprzez link
Cytat
Klikając "Przejdź do aplikacji" zostaje przekierowany do wybranego materiału.
Moim zadaniem jest "wyciągnięcie" informacji o nim (ID, imię, nazwisko, email) między kliknięciem Przejdź do aplikacji a przekierowaniem do tego materiału i zapisaniem ich do bazy danych do stworzonej już tabeli (bez fizycznej ingerencji użytkownika FB). Kod odpowiedzialny powinien zostać wrzucony do pliku "dane.php" do którego przekierowuje redirect.html (z linku wyżej), a dane.php zawiera przekierowanie do pożądanego materiału. Tak wygląda przerobiony przeze mnie kod:
Kod
<?
function connectToFacebook()
{
include_once('/home/facebook.php');
// utworzenie obiektu $facebook
$facebook = new Facebook(array(
'appId' => 'xxxx', // application id
'secret' => 'zzzz, // secret
'cookie' => true,
));
return $facebook;
}
function getUser($facebook)
{
// utworzenie pustego obiektu użytkownika
$me = null;
// jeżeli użytkownik jest zalogowany na Facebooku
// do zmiennej $uid zostanie zapisany identyfikator użytkownika
// do zmiennej $me zostaną zapisane dane użytkownika
if ($facebook) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
return $me;
}
/**
* rejestracja nowego użytkownika
* */
function registerNewUser($me)
{
require '/home/db_conn.php';
$insert = "INSERT INTO users (imie, nazwisko, email, haslo, fb_id) VALUES (" .
"'" . $me['first_name'] . "', " .
"'" . $me['last_name'] . "', " .
"'" . sha1(time() ) . "', " . // generowanie losowego hasła
"'" . $me['id'] . "')";
$result = $db->query($insert);
$affected = $db->affected_rows;
$db->close();
if ($affected == 1)
return true;
else
return false;
}
function connectToFacebook()
{
include_once('/home/facebook.php');
// utworzenie obiektu $facebook
$facebook = new Facebook(array(
'appId' => 'xxxx', // application id
'secret' => 'zzzz, // secret
'cookie' => true,
));
return $facebook;
}
function getUser($facebook)
{
// utworzenie pustego obiektu użytkownika
$me = null;
// jeżeli użytkownik jest zalogowany na Facebooku
// do zmiennej $uid zostanie zapisany identyfikator użytkownika
// do zmiennej $me zostaną zapisane dane użytkownika
if ($facebook) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
return $me;
}
/**
* rejestracja nowego użytkownika
* */
function registerNewUser($me)
{
require '/home/db_conn.php';
$insert = "INSERT INTO users (imie, nazwisko, email, haslo, fb_id) VALUES (" .
"'" . $me['first_name'] . "', " .
"'" . $me['last_name'] . "', " .
"'" . sha1(time() ) . "', " . // generowanie losowego hasła
"'" . $me['id'] . "')";
$result = $db->query($insert);
$affected = $db->affected_rows;
$db->close();
if ($affected == 1)
return true;
else
return false;
}
Plik db_conn.php:
Kod
<?php
$db = @new mysqli ("host","user","haslo","baza"); //łącze z bazą [serwer bazy,użytkownik,hasło]
if (mysqli_connect_errno() != 0)
{
echo 'Blad polaczenia z baza';
exit;
}
$db = @new mysqli ("host","user","haslo","baza"); //łącze z bazą [serwer bazy,użytkownik,hasło]
if (mysqli_connect_errno() != 0)
{
echo 'Blad polaczenia z baza';
exit;
}
Moje podstawowe pytanie brzmi - czy ten kod ma rację bytu? Stosując w tej postaci oraz wywołując kolejno te funkcje (nie wiem, czy dobrze to robię), wszystko działa teoretycznie poprawnie jednak żadne dane nie zostają wpisane do tabeli. W czym w zasadzie tkwi problem? Będę bardzo wdzięczny, jeśli ktoś krok po kroku pomoże mi się z tym uporać. Pozdrawiam.
