可能重复:
使用全局变量作为数据源的 PHP 会话副作用警告
我使用的登录脚本有问题。问题是一些托管服务提供商在登录后会话未注册。在 php 错误日志中我可以看到这个错误
PHP 警告:未知:您的脚本可能依赖于在 PHP 4.2.3 之前存在的会话副作用。请注意,除非启用了 register_globals,否则会话扩展不会将全局变量视为数据源。您可以通过分别在第 0 行的未知中将 session.bug_compat_42 或 session.bug_compat_warn 设置为 off 来禁用此功能和此警告
但是在大多数托管服务中,例如 bluehost、hostmonster,它可以正常工作,没有任何错误。有人可以指出我在这里做错了什么吗?谢谢你。
代码:
<?
session_start();
ob_start();
?>
<?php
$err=isset($_GET['error'])?$_GET['error']:"";
if($err=='error'){?>
<div class="errormsgbox">Wrong Username or Password. Please try again.</div>
<?php }
if(!isset($_SESSION['adminuser'])){
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// username and password sent from Form
$adminuser=mysql_real_escape_string($_POST['adminuser']);
$adminpassword=mysql_real_escape_string($_POST['adminpassword']);
$gpassword=md5($adminpassword); // Encrypted Password
$sql="SELECT id FROM admin WHERE adminuser='$adminuser' and adminpassword='$gpassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
// If result matched $username and $password, table row must be 1 row
if($count==1)
{
session_register("adminuser");
header("location:index.php");
}
else
{
header("location:login.php?error=error");
}
}
ob_end_flush();
?>
<form action="login.php" method="post">
<div class="login_input">
<label class="loginlbl" for="adminuser">UserName :</label>
<input type="text" name="adminuser"/>
</div>
<div class="login_input">
<label class="loginlbl" for="adminpassword">Password :</label>
<input type="password" name="adminpassword"/>
</div>
<div class="login_submit">
<input type="submit" id="submit" value=" Login to Admin Contol Panel"/>
</div>
</form>
<?php }else{
header("location:index.php");
}
?>