授权和PHP会话

授权和PHP会话,php,facebook,session,Php,Facebook,Session,我花了几个小时试图找到一个解决方案,但没有成功。因此,我希望你们中的一位能在这方面帮助我: 这个脚本似乎总是开始一个新的会话——我不知道为什么 <?php $code = $_REQUEST["code"]; if(empty($code)) { $_SESSION['state'] = md5(uniqid(rand(), TRUE)); $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" .

我花了几个小时试图找到一个解决方案,但没有成功。因此,我希望你们中的一位能在这方面帮助我: 这个脚本似乎总是开始一个新的会话——我不知道为什么

<?php

$code = $_REQUEST["code"];

if(empty($code)) {
 $_SESSION['state'] = md5(uniqid(rand(), TRUE)); 
 $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
   . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
   . $_SESSION['state']. "&scope=publish_actions,publish_stream";

 echo("<script> top.location.href='" . $dialog_url . "'</script>");
}

if($_SESSION['state'] && ($_SESSION['state'] === $_REQUEST['state'])) {
     $token_url = "https://graph.facebook.com/oauth/access_token?"
   . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
   . "&client_secret=" . $app_secret . "&code=" . $code;

 $response = file_get_contents($token_url);
 $params = null;
 parse_str($response, $params);
  $_SESSION['access_token'] = $params['access_token'];
}
else {
 echo("Sessionstate: ".$_SESSION['state']."<br>");
 echo("REQUEST_state: ".$_REQUEST['state']."<br>");
 echo("Sessionstatus stimmt nicht mit dem REQUEST_State &uuml;berein.");
 var_dump ($_REQUEST);
 exit;
}
?>
我试着通过考试

 <form action="<?=$_SERVER['PHP_SELF'];?>?what=save&state=<?=$_SESSION['state'];?>" method="post" enctype="multipart/form-data">
从我的index.php文件

谢谢你的阅读和帮助

他是基督徒


编辑:这里是开发者博客的链接:

您应该只在没有会话时启动会话。是否保存会话

<?php
  if (!isset ($_COOKIE[ini_get('session.name')])) {
    session_start();
  }
?>

谢谢你的提示。没有改变任何事情。根据php.net session_start-start new或resume existing session,我认为它总是在继续一个会话;就这样。见:
<?php
  if (!isset ($_COOKIE[ini_get('session.name')])) {
    session_start();
  }
?>