【发布时间】:2011-09-12 02:56:07
【问题描述】:
我正在尝试在我正在构建的可安装网络应用程序中实现一个尽可能简单的许可系统(用户下载并上传到他们的服务器)。在得知无法跨域设置会话(这是我的第一选择)之后,我现在考虑在我的服务器上包含一个外部文件,其中包含一个名为 validate() 的函数,用于验证许可证是否存在于我的数据库。
事件流程: 用户在他的网站上输入许可证密钥 -> 许可证密钥发布到文件 /validate.php,其中包含我服务器中的文件 -> 服务器检查是否包含许可证密钥在数据库中 -> 如果是,则在用户域上设置会话并重定向到管理部分 -> 如果否,则重定向回登录页面,并显示错误消息。
这是我的代码(理论上 - 可能有问题):
validate.php
include("http://www.example.com/function.php");
validate($_POST['license']);
function.php
include("db_conn.php");
function validate($license)(
$conn = mysql_connect($db_host, $db_user, $db_pass); mysql_select_db($db_name);
$license = mysql_real_escape_string($license);
$query = "SELECT FROM licenses WHERE license = '$license'";
$result = mysql_query($query);
if(mysql_num_rows($result) == 1) {
mysql_close($conn);
session_set_cookie_params(60*60*24*30,"/","." . $_SERVER['SERVER_NAME']);
session_start();
$_SESSION['license_valid'] == "YES";
header("Location:" . $_SERVER['SERVER_NAME'] . "/admin");
} else {
mysql_close($conn);
header("Location" . $_SERVER['SERVER_NAME'] . "/login/?error=1");
}
);
问题是,我不确定服务器将如何处理函数validate(),例如,会话是设置在我的服务器上还是用户的服务器上?它会使用我的$_SERVER['SERVER_NAME'] 还是用户的?它会包含来自我的服务器还是用户的db_conn.php?
【问题讨论】:
-
你想从文件系统中包含,否则当通过 http 包含时你会得到 php 解析的文件
-
@Dagon:你能说得更具体一点吗?你的意思是这样的东西在外部包含时不会起作用?