我对php很新,我相信这很容易,但我想以正确的方式做到这一点。我有这个脚本:
<?php
if ($_POST["username"]=="") {
include($_SERVER['DOCUMENT_ROOT'] ."/login.inc.php");
} else {
$username=$_POST["username"];
$password=$_POST["password"];
session_start();
if ($username=="bob" AND $password=="123"){ $permission="yes";}
$username=$_POST["username"];
session_register("permission");
session_register("username");
if ($permission=="yes"){
// Show stuff
}
}
?>
请原谅我代码的时髦格式 - 似乎无法正常显示。
所以,我一直收到这个错误:
警告:未知:您的脚本可能依赖于PHP 4.2.3之前存在的会话副作用。请注意,除非启用register_globals,否则会话扩展不会将全局变量视为数据源。您可以通过将session.bug_compat_42或session.bug_compat_warn分别设置为off来禁用此功能和此警告,分别在第0行的Unknown中
我假设意味着我需要更改我的一个变量名,这样它就不会与会话变量冲突吗?这就是我读到的内容,但我不确定要改变哪一个。
有人可以帮我/告诉我吗?
由于
OSU
答案 0 :(得分:3)
正是因为
而发生session_register("username");
不推荐使用,自PHP 5.3起不推荐使用。
如果您希望脚本无论register_globals如何工作,您都需要使用$ _SESSION数组,因为$ _SESSION条目会自动注册。如果您的脚本使用session_register(),则它将无法在禁用PHP指令register_globals的环境中工作。
众所周知,register_globals
很糟糕,总是关闭。
注册会话变量的最常用方法是使用$_SESSION
超全局,即
$_SESSION['username'] = $username;
答案 1 :(得分:0)
您最好开始删除已弃用的函数,例如session_register()。
使用$ _SESSION数组,例如
$_SESSION['username'] = $_POST['username'];