【发布时间】:2016-05-27 15:44:23
【问题描述】:
我写了一些代码,我正在调用(需要函数).php 文件,它将连接到 MySQL 库。该文件(不是用于 MySQL 连接的文件)我调用其他文件是因为我想打开一个连接一次,然后关闭它一次。错误说
未定义变量:第 21 行 C:\Program Files\WAMP\www\hsync_hsync_scripts_hsync_pristup.php 中的 _hsync_konekcija
_hsync_pristup.php 文件
<?php
require('_hsync_scripts/_hsync_baza.php');
function _hsync_pristup()
{
session_start();
if(isset($_COOKIE['_hsync_prijavljen'])) $_hsync_id = $_COOKIE['_hsync_prijavljen']; // PRIJAVLJEN
else if(isset($_SESSION['_hsync_sess_prijavljen'])) $_hsync_id = $_SESSION['_hsync_sess_prijavljen']; // PRIJAVLJEN
else
{
$_hsync_pristup_info = array(
'_hsync_pristup' => 0
);
$_hsync_konekcija->close();
return ($_hsync_pristup_info);
}
/* THIS LINE */ $_hsync_statment = $_hsync_konekcija->prepare("SELECT Zakljucan, Ime, Skin FROM $_hsync_usr WHERE ID = ?"); // LINE 21
$_hsync_statment->bind_param("i", $_hsync_id);
$_hsync_statment->execute();
$_hsync_rezultat = $_hsync_statment->get_result();
if($_hsync_rezultat->num_rows == 0) // OBIRSAN RAČUN
{
$_hsync_pristup_info = array(
'_hsync_pristup' => -1
);
session_unset();
session_destroy();
setcookie("_hsync_prijavljen", null, -1, "/");
$_hsync_statment->close();
$_hsync_rezultat->close();
$_hsync_konekcija->close();
return ($_hsync_pristup_info);
}
$_hsync_podatci = $_hsync_rezultat->fetch_assoc();
if($_hsync_podatci["Zakljucan"] != 0) // ZAKLJUČAN RAČUN
{
session_unset();
session_destroy();
setcookie("_hsync_zakljucan", $_hsync_id, time() + 8, "/");
setcookie("_hsync_zakljucan_zap", rand(6, 16), time() + 8, "/");
setcookie("_hsync_prijavljen", null, -1, "/");
$_hsync_pristup_info = array(
'_hsync_pristup' => -2
);
$_hsync_statment->close();
$_hsync_rezultat->close();
$_hsync_konekcija->close();
return ($_hsync_pristup_info);
}
else
{
$_hsync_ime = $_hsync_podatci['Ime'];
$_hsync_skin = $_hsync_podatci['Skin'];
}
$_hsync_statment = $_hsync_konekcija->prepare("SELECT ServerID FROM $_hsync_srv_online WHERE ID = ?");
$_hsync_statment->bind_param("i", $_hsync_id);
$_hsync_statment->execute();
$_hsync_rezultat = $_hsync_statment->get_result();
if($_hsync_rezultat->num_rows != 0) // PRIJAVLJEN NA GAME SERVERU
{
$_hsync_podatci = $_hsync_rezultat->fetch_assoc();
$_hsync_serverid = $_hsync_podatci["ServerID"];
session_unset();
session_destroy();
setcookie("_hsync_prijavljen", null, -1, "/");
setcookie("_hsync_online", $_hsync_id, time() + 8, "/");
setcookie("_hsync_online_id", $_hsync_serverid, time() + 8, "/");
$_hsync_pristup_info = array(
'_hsync_pristup' => -3
);
$_hsync_statment->close();
$_hsync_rezultat->close();
$_hsync_konekcija->close();
return ($_hsync_pristup_info);
}
if(isset($_COOKIE['_hsync_zabrana'])) return (-4); // IMA ZABRANU PRISTUPA
else // NEMA ZABRANU
{
$_hsync_statment = $_hsync_konekcija->prepare("SELECT ID FROM $_hsync_srv_bnds WHERE ID = ? AND Aktivno = 1"); // TRAŽI DALI JE IMA
$_hsync_statment->bind_param("i", $_hsync_id);
$_hsync_statment->execute();
$_hsync_rezultat = $_hsync_statment->get_result();
if($_hsync_rezultat->num_rows > 0) // IMA ZABRANU
{
session_unset();
session_destroy();
setcookie("_hsync_prijavljen", null, -1, "/");
setcookie("_hsync_zabrana", $_hsync_id, time() + 31536000, "/");
$_hsync_pristup_info = array(
'_hsync_pristup' => -4
);
$_hsync_statment->close();
$_hsync_rezultat->close();
$_hsync_konekcija->close();
return ($_hsync_pristup_info);
}
}
$_hsync_datum = date("d. m. Y.");
$_hsync_vrijeme = date("H:i:s");
$_hsync_statment = $_hsync_konekcija->prepare("UPDATE $_hsync_usr SET DatumhSync = ?, VrijemehSync = ? WHERE ID = ?");
$_hsync_statment->bind_param("ssi", $_hsync_datum, $_hsync_vrijeme, $_hsync_id);
$_hsync_statment->execute();
$_hsync_pristup_info = array(
'_hsync_pristup' => 1,
'_hsync_ime' => $_hsync_ime,
'_hsync_id' => $_hsync_id,
'_hsync_skin' => $_hsync_skin
);
return ($_hsync_pristup_info);
}
?>
其他文件
require('_hsync_scripts/_hsync_pristup.php'); // FRIST LINE ON THE TOP OF FILE
我不知道为什么 PHP 说连接变量不存在。 require('_hsync_scripts/_hsync_baza.php'); 在顶部,所以它是全球性的,对吧?
【问题讨论】:
-
向我们展示您的其他文件。
-
这是一个变量范围问题。如果要在函数内部使用
$_hsync_konekcija,则需要在函数内部声明,作为参数传入,或者声明为全局函数。您必须在函数内显式声明全局变量才能使用它们 - 只需将其放在文件顶部不会影响任何内容 -
@AndrewCheong 其他文件是 index.php。函数
_hsync_pristup()检查用户是否登录。我是 PHP 新手,但我认为其他文件无济于事,因为错误在 _hsync_pristup.php 中 -
看起来像“$_hsync_konekcija->close();”被调用,但从未调用过连接。 (第 18 行)
-
@SilvioCro - 你得问问 PHP 和 PAWN 的设计者。这就是全局变量在 PHP 中的工作方式。