Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重定向的php页面没有';除非我点击刷新,否则无法加载_Php_Mysql_Facebook - Fatal编程技术网

重定向的php页面没有';除非我点击刷新,否则无法加载

重定向的php页面没有';除非我点击刷新,否则无法加载,php,mysql,facebook,Php,Mysql,Facebook,早上好,在登录Facebook后,我终于将Facebook用户名存储到了我的数据库中。唯一的问题是,用户登录Facebook后重定向到的页面需要重新加载(我第一次只得到一个空页面)。你能参考我之前的问题吗,因为我已经发布了所有代码 更新:我注意到页面只需要在第一次刷新(当用户信息还没有存储在数据库中时,它就会快速而漂亮地加载页面。请帮助!;-) UPDATE2:有没有一种方法可以在添加新用户后自动刷新页面(仅一次)? 非常感谢 更新3:我发布代码。。。。只有当我刷新页面时,它才起作用。。。。有什

早上好,在登录Facebook后,我终于将Facebook用户名存储到了我的数据库中。唯一的问题是,用户登录Facebook后重定向到的页面需要重新加载(我第一次只得到一个空页面)。你能参考我之前的问题吗,因为我已经发布了所有代码

更新:我注意到页面只需要在第一次刷新(当用户信息还没有存储在数据库中时,它就会快速而漂亮地加载页面。请帮助!;-)

UPDATE2:有没有一种方法可以在添加新用户后自动刷新页面(仅一次)? 非常感谢

更新3:我发布代码。。。。只有当我刷新页面时,它才起作用。。。。有什么想法吗

        <?php

          mysql_connect('host', 'username', 'password');  
           mysql_select_db('table');  



require 'library/facebook.php';

    // Create our Application instance 
   $facebook = new Facebook(array(
    'appId'  => 'MYID',
   'secret' => 'MYSECRET',
  'cookie' => true));


// Get User ID
 $user = $facebook->getUser();



   if ($user) {
     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;
   }
     }else{
   header('location: index.php');

    }
      $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND       oauth_uid = ". $user_profile['id']);  
      $result = mysql_fetch_array($query);  

    if(empty($result)){ 
      $query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username)         VALUES ('facebook', {$user_profile['id']}, '{$user_profile['name']}')");  
       $query = msyql_query("SELECT * FROM users WHERE id = " . mysql_insert_id());  
      $result = mysql_fetch_array($query);  

       }  



    if ($user) {
     $paramsout = array('next'=>'http://www.mywebsite/test/logout.php');
     $logoutUrl = $facebook->getLogoutUrl($paramsout);
     }


     ?>

我认为您必须更新脚本,尝试加载或获取$user配置文件,而不是只加载user。。它可能会工作

您可能需要添加
标题(“位置:$url”)在脚本末尾。

当facebook使用next或redirect URL重定向时,它会发送api获取的帖子数据,但当您手动重定向页面时,它不会获取facebook帖子数据,因此代码位于
else条件头('location:index.php')被执行,并且您被正确重定向

第一次出现的问题是,它绕过else条件并转到sql以插入新记录,之后就没有重定向了。。所以您需要放置
标题('location:index.php')

希望这有助于使用

header("Location: url");
exit();

在完成所有必要的操作之后,假设您现在没有发送任何标题。否则,您可以在生成的文档中使用元刷新或JS document.location.href

我终于成功了。当然,这是一个重定向问题。但是,无论是在index.php还是在user_page.php中添加sql,它都不起作用。 最后,我创建了“login.php”,用户从Facebook页面重定向,如果是新记录,则添加到数据库,然后重定向到user_page.php。 这是login.php的代码:

<?php


 mysql_connect('HOST', 'USER', 'PSW');  
 mysql_select_db('MYDATABASE');

 require 'library/facebook.php';

  // Create our Application instance (replace this with your appId and secret).
   $facebook = new Facebook(array(
  'appId'  => 'MYID',
  'secret' => 'MYSECRET',
   'cookie' => true));


// Get User ID
$user = $facebook->getUser();

if($user){

 $user_profile = $facebook->api('/me');

    $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid = ". $user_profile['id']);
    $result = mysql_fetch_array($query);

    if(empty($result)){
        $query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username) VALUES ('facebook', {$user_profile['id']}, '{$user_profile['name']}')");

        header('Location: user_page.php');
                                }else{
        header('Location: user_page.php');
         }


          }else{

        header('Location: logout.php');


        }


           ?>

或者使用javascript或jquery在运行时告诉您不必重定向

您到底想要什么?请您详细说明我希望我的页面在登录后不需要重新加载。当用户从Facebook登录重定向到我的页面(user_page.php)时,我得到一个只有主体背景颜色的空页面。我必须按重新加载按钮才能加载页面。我希望现在更清楚了。我认为问题是由于我的数据库查询在代码中的“位置”错误造成的,我无法理解。您的
user\u page.php
代码不完整,如果用户已经注册,会发生什么情况?没有什么?还有,为什么要两次询问用户id
$fbuid=$facebook->getUser()?谢谢您的。。。。直到我知道……,我才注意到我问了两次;-)在刷新页面(以便它实际加载)时,会显示什么?我看不到有任何输出。。。用户登录后是否立即注销?:/我认为那部分很好用。我可以在我的数据库中添加用户。唯一的问题是,每当新用户登录时,我都需要刷新页面。什么不起作用?在这之前你做过重定向吗?我想问题可能是我没有把重定向放在最后…我会尝试改变它…我尝试了标题,但我仍然需要点击刷新按钮。我会尝试元刷新。我尝试了。。。但它一直在重新加载,这很烦人。必须有更“干净”的东西才能让它工作。你不必每次都贴上这个标签。使用类似$bNeedsRefresh的变量,默认设置为FALSE。如果成功添加新用户,请将此变量设置为TRUE。在生成页面输出时,仅当变量设置为TRUE时才添加此标记。请复制我的代码并将其放在您认为应该放在的答案标题中。谢谢你的回答。我尝试将标题放在sql之后,但由于某些原因,我仍然必须刷新页面。我知道代码必须运行两次:第一次插入新记录,第二次加载页面。我肯定我的if-else状态有问题,但我不知道如何修复它。好吧,这几乎和一些人要求做的一样;很高兴看到它现在能工作这是我从一开始就试图做的事情,我不明白为什么header在我上面发布的代码中不能工作。谢谢朱奈德。好了,终于起作用了,这就是所需要的:)。。顺便说一句,标题不起作用是另一个问题,如果它真的不起作用,它有很多原因。这是另一场辩论。我刚刚开始“玩”php……我并不惊讶它没有按预期工作!;-)
require 'lib/facebook-php-sdk/src/facebook.php';

define('APP_TITLE', 'Cool project');
define('APP_DESCRIPTION', 'Very nice project');
define('APP_ID', '168565339939940');
define('APP_SECRET', '4127eee9d3ab29a114e80h89060243a7');
define('APP_URL', 'https://localhost/project/');
define('APP_PERMISSIONS', '');

$user_id = null;
$user_profile = null;

$fb = new Facebook(array(
    'appId'  => APP_ID,
    'secret' => APP_SECRET,
    'cookie' => true,
));

$loginUrlParams = array(
  'scope' => APP_PERMISSIONS,
  'redirect_uri' => APP_URL,
);

$user_id = $fb->getUser();

if ( $user_id ) 
{
    try 
    {
        $data = $fb->api('/me');

        $user_profile = array(
            'user_id' => $user_id,
            'name' => isset($data['name']) ? he($data['name']) : null,
            'avatar' => 'https://graph.facebook.com/'.$user_id.'/picture',
        );

        unset($data);
    } 
    catch ( FacebookApiException $e ) 
    {
        header('Location: ' . $fb->getLoginUrl($loginUrlParams));
        exit;
    }
}
else
{
    header('Location: ' . $fb->getLoginUrl($loginUrlParams));
    exit;
}