我知道,这个问题问了很多次,但我找不到解决方案。
我编写了一个 php/JS 脚本来从服务器获取数据并显示它们。
我正在使用 Ajax 来验证用户是否经过身份验证?我正在使用以下方法来做到这一点;
我的 index.php:
>?php
...
...
$.post("data.php",{ req:'登录',
username:$('#username').val(), //用户输入给定的id
pass:$('#password').val(),
工作:$('#job').val(),
rand:Math.random() } ,
功能(数据)
{
if (data == 'yes') // 用户已通过身份验证。
document.location='system.php';
}
...
...
// 我正在使用表单将收集到的数据发送到 data.php
?>
data.php 中的代码是这样的:
>?php
session_start();
$link = mysql_connect("localhost", "user", "pass");
如果(!$链接){
die("没有连接:" .mysql_error());
}
mysql_select_db("数据库");
if ($_POST["req"] == "login"){
$user_id=($_POST["用户名"]);
$user_pass=($_POST["pass"]);
$user_job=($_POST["job"]);
// 选择合适的表(与他/她的工作相关)并控制用户是否提供了正确的密码?
if(密码正确){
$_SESSION["id"]=$_POST["username"];
// 或 $_SESSION["id"]=$user_id;
回声“是”;
}
否则回显“否”;//登录无效
} else if ($_POST["req"] == "userinfo"){
...
...
...
} 别的
...
...
?>
系统工作正常,直到这里我重定向到 system.php,在 system.php 中我想使用 $_SESSION 变量在 JavaScript 中获取登录的用户名。
我的 system.php 的一部分;
>?php
session_start();
if ((isset($_SESSION["id"]))||(!empty($_SESSION["id"]))) header("Location:index.php");
$userno = $_SESSION["id"];
if(isset($_GET["注销"]))
{
session_destroy();
$_SESSION["id"] = 假;
header("位置:index.php");
}
?>
...
...
...
>脚本类型=“文本/javascript”>
$.post("data.php",{ req:'userinfo',username:'>?php echo ($userno) ?>',rand:Math.random() } ,function(data){
// 确定 ?php 在脚本中是正确编写的 ;)
//.. 再次从 data.php 获取数据并将结果放入页面..
});
>>脚本>
此代码在我的 PC (xampp) 中正常工作,但在我的服务器上没有机会..
echo ($userno) 不输出任何内容。
我搜索了很多地方,发现这是因为 register_globals 已关闭。我明白为什么会这样了。
但是为什么我无法获取 $_SESSION["id"] 的值并将其分配给我的 system.php 中的 $userno
注意:我对许多其他请求使用相同的 data.php 文件,所有这些请求都取决于用户名但是不同的条件会改变用于数据源的表,所以我一开始就无法获取信息。
现在谢谢...
注意:由于我找不到使用代码突出显示的正确方法,我将 >?php 用于启动 php 代码部分和 >script 用于 JS 代码部分..