Autor Zpráva
simonik
Profil *
Ahoj,
používám uploadify a chci použít údaje o uživateli z facebooku.
Pořád se mi ale zobrazuje "Použij údaje z facebooku". Přitom by se to mělo zobrazit pouze jednou.
Neporadfí někdo, kde je chyba anebo jak to udělat jinak?
Díky

<?php
   session_start(); // musí být vždy před použitím
   include 'fce.php';
   error_reporting(E_ALL);
   require 'src/facebook.php';

    $facebook = new Facebook(array(
    'appId'  => '128687787271438',
    'secret' => 'c37ded07907dab58969a9bcec3a5067a',
    ));
 
// Get User ID
$user = $facebook->getUser();
 
if ($user) {
    try {
        $user_profile = $facebook->api('/me');
        
        $_SESSION["fb_jmeno"]=  $user_profile["first_name"];
        $_SESSION["fb_prijmeni"]=  $user_profile["last_name"];
        
        
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
}
 
if ($user) {
    $logoutUrl = $facebook->getLogoutUrl();
} else {
    $loginUrl = $facebook->getLoginUrl();
}

?>

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>UploadiFive Test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="jquery.uploadify.min.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="uploadify.css">
<style type="text/css">
body {
    font: 13px Arial, Helvetica, Sans-serif;
}
</style>
</head>

<body>

  <?php 
   
   $targetfolder="\uploads";
   if (!isset( $_SESSION["fb_jmeno"])){ 
  ?>
    <div>
     <strong><em>Použij údaje FaceBooku.</em></strong>
     <a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
    </div>
  <?php 
  }
   ?>
  
  <?php
   if (isset( $_SESSION["fb_jmeno"])){
 
  
  echo "Uživatel:". $user_profile["first_name"].$user_profile["last_name"] ; 
  $album=session_id($_GET['PHPSESSID']);

  
  
  if ($_GET['success']=='uploaded') {
  
  spojeni();
  mysql_query("SET NAMES 'cp1250'");
  $prikaz="Select * from s281_photos where album ='".$album."'";    

  @$sql = MySQL_Query($prikaz);
  if (!$sql) 
  {
    echo "Chyba při ukládání dat do databáze číslo 1. Kontaktujte prosím webmastera ".mysql_error();
        break;
  }
  
 while($zaznam=mysql_fetch_array($sql))
 {
  echo '<img src="'.$targetfolder.'\\'.$zaznam["filename"].'">'.'<BR>';  
 } 
  }
  else
  {
?>
      <form>
        <div id="queue"></div>
        <input id="file_upload" name="file_upload" type="file" multiple="true">
    </form>

<?
  }
 }
 ?>
  
  
  <script type="text/javascript">
        <?php $timestamp = time();?>
        $(function() {
            $('#file_upload').uploadify({
                'formData'     : {
                    'timestamp' : '<?php echo $timestamp;?>',
                    'token'     : '<?php echo md5('unique_salt' . $timestamp);?>',
                'album' : '<?php echo $album;?>'
          },
                'swf'      : 'uploadify.swf',
                'uploader' : 'uploadify.php',
        'onQueueComplete' : function(file, data, response) {

         window.location.replace("index.php?success=uploaded");
        },
        'onUploadSuccess' : function(file, data, response) {
       // alert('The file was saved to: ' + data+file+response);
    }

  
            });
        });
    </script>
   
  
</body>
</html>
soucekgns
Profil
simonik:
Hláška se ti zobrazuje, protože neexistuje $_SESSION["fb_jmeno"] (tj. $facebook->api('/me')["first_name"]) a jelikož nevím, jak vypadá funkce facebook, tak ti já a asi nikdo jiný neporadí :))
simonik
Profil *
Díky za odpověď. Facebook.php je SDk uvolněné vývojáři facebooku .
Nakonec se mi to podařilo udělat trochu jinak - viz. níže. Tak to konečně funguje.
Nejsem s tím plně spokojen. Neukazuje se, jak u některých jiných řešení, co všechno se aplikace o uživatele dozví.

Kdyby mi mohl někdo objasnit způsoby přihlašování. Asi je jich víc - php, javascript. Nějak nemůžu pochopit jejich filosofii.
Díky

require_once 'src/facebook.php';
$facebook = new Facebook(array( 
    'appId'  => '1286877ddd71438',  
    'secret' => 'c37ded07907ddddd969a9bcec3a5067a', 
    'cookie' => true,   )); 

$userId = $facebook->getUser();     
$me = null; 
    if($userId){     
    $me = $facebook->api('/me');
     }    
    if($me['id']) 
    {
    // echo 'User is logged in and has a valid session'; 
    // echo $me["last_name"];
    $_SESSION["fb_jmeno"] =$me["first_name"];
    $_SESSION["fb_prijmeni"] =$me["last_name"];
    }   
    else 
    {     
    echo 'Chvíli strpení. Získávám informace z facebooku.';  
    echo '<script>top.location.href="'.$facebook->getLoginUrl().'";</script>';   
    } 
 
 
 
   if (isset( $_SESSION["fb_jmeno"])){
 
  
  echo "Uživatel:". $_SESSION["fb_jmeno"].$_SESSION["fb_prijmeni"] ; 



Teda, to jsem se radoval předčasně. Jakto, že seseion nezůstane uložena? To se při přesměrování odstraní? Myslel jsem, že až po uzavření prohlížeče. Když to spustím, tak se proměnné zs session načtou. Když dám reload, tak už ne. Taky po návratu z upoadify se nenačtou a opětovně získává údaje z facebook.
Kde dělám chybu?
Dík

if (!isset( $_SESSION["fb_jmeno"])){ 
require_once 'src/facebook.php';
$facebook = new Facebook(array( 
    'appId'  => '12868778ddd1438',  
    'secret' => 'c37ded07907dddd8969a9bcec3a5067a', 
    'cookie' => true,   )); 

$userId = $facebook->getUser();     
$me = null; 
    if($userId){     
    $me = $facebook->api('/me');
     }    
    if($me['id']) 
    {
    // echo 'User is logged in and has a valid session'; 
    // echo $me["last_name"];
    //print_r ($me);
    $_SESSION["fb_jmeno"] =$me["first_name"];
    $_SESSION["fb_prijmeni"] =$me["last_name"];
    }   
    else 
    {     
    echo 'Chvíli strpení. Získávám informace z facebooku.';  
    echo '<script>top.location.href="'.$facebook->getLoginUrl().'";</script>';   
    } 
  }
 
 
   if (isset( $_SESSION["fb_jmeno"])){
 
  
  echo "Uživatel:". $_SESSION["fb_jmeno"].$_SESSION["fb_prijmeni"] ; 
simonik
Profil *
simonik:

Tak celá chyba, že to nefungovalo byla tato :

$album=session_id($_GET['PHPSESSID']);

tento řádek zlikvidoval celou asession.

Čím to je, že to tak působí?

Dík.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: