为什么php访问其他页面中定义的变量?

时间:2013-12-27 09:05:45

标签: php session variables

这很奇怪,我不知道它是怎么可能的,我在这里开展一个小项目的代表是代码

<?php
include 'database/dbconnect.php';
if (!isset($_SESSION['id'])) {
   header('location:index.php');
}
$user = json_decode(file_get_contents('https://graph.facebook.com/' . $fbid));
print_r($user);
?>

及其结果......

此页面中的变量$fbid不是defined,而是出于某种不同目的而在另一个页面中。 但是php没有显示任何error,给出了结果。我清除了sessions并且cookies没有发生任何事情。

dbconnect.php

session_start();
$dbhost="localhost";
$dbuser="uuuu";
$dbpass="pppp";
$dbdatabase="dddd";

mysql_connect($dbhost,$dbuser,$dbpass);

mysql_select_db($dbdatabase) or die("Connection Failed");

定义$ fbid的另一页

include 'dbconnect.php';
if (isset($_POST['me'])) {
    $me = $_POST['me'];
    $fbid = $me['id'];
    $name = $me['name'];
}

显然这两个页面没有连接,没有include没有require。并且两者都在不同的文件夹中

4 个答案:

答案 0 :(得分:1)

要显示错误,您需要在脚本开头添加以下内容:

error_reporting(E_ALL);
ini_set('display_errors', 'On');

答案 1 :(得分:1)

尝试制作

print_r($GLOBALS)

尝试在输出fbid变量

中查找

答案 2 :(得分:0)

在Facebook上,标识符(FBID)被分配给大多数内容。您可以使用FBID使用URL精确,简洁地引用一段内容。因此,可以在另一页中获取$ fbid的值。如果你尝试在Facebook外面这样做,你可以得到错误

答案 3 :(得分:0)

  

您应该开始会话

<?php
  session_start();
  include 'database/dbconnect.php';
  if (!isset($_SESSION['id'])) {
  header('location:index.php');
  }
  $user = json_decode(file_get_contents('https://graph.facebook.com/' . $fbid));
   print_r($user);
  ?>