PHP会话未注册 [英] PHP session not registering

查看:36
本文介绍了PHP会话未注册的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<块引用>

可能的重复:
PHP 会话副作用警告以全局变量作为数据源

我使用的登录脚本有问题.问题在于某些托管服务提供商登录后会话未注册.在 php 错误日志中我可以看到这个错误

<块引用>

PHP 警告:未知:您的脚本可能依赖于 PHP 4.2.3 之前存在的会话副作用.请注意,除非启用了 register_globals,否则会话扩展不会将全局变量视为数据源.您可以通过分别在 Unknown on line 0 中将 session.bug_compat_42 或 session.bug_compat_warn 设置为 off 来禁用此功能和此警告

但在大多数主机中,如 bluehost、hostmonster,它运行良好,没有任何错误.有人可以指出我在这里做错了什么吗?提前谢谢你.

代码:

<代码><?php$err=isset($_GET['error'])?$_GET['error']:"";if($err=='error'){?><div class="errormsgbox">用户名或密码错误.请重试.

<?php }if(!isset($_SESSION['adminuser'])){if($_SERVER["REQUEST_METHOD"] == "POST"){//从表单发送的用户名和密码$adminuser=mysql_real_escape_string($_POST['adminuser']);$adminpassword=mysql_real_escape_string($_POST['adminpassword']);$gpassword=md5($adminpassword);//加密密码$sql="SELECT id FROM admin WHERE adminuser='$adminuser' and adminpassword='$gpassword'";$result=mysql_query($sql);$count=mysql_num_rows($result);//如果结果匹配 $username 和 $password,则表行必须为 1 行如果($count==1){session_register("adminuser");header("位置:index.php");}别的{header("location:login.php?error=error");}}ob_end_flush();?><form action="login.php" method="post"><div class="login_input"><label class="loginlbl" for="adminuser">用户名:</label><input type="text" name="adminuser"/>

<div class="login_input"><label class="loginlbl" for="adminpassword">密码:</label><input type="password" name="adminpassword"/>

<div class="login_submit"><input type="submit" id="submit" value="登录管理控制面板"/>

</表单><?php }else{header("位置:index.php");}?>

解决方案

session_register 的使用已被弃用,如 PHP:SESSION_REGISTER

你应该使用:

//session_register("adminuser");//已弃用$_SESSION["adminuser"] = $adminuser;

Possible Duplicate:
PHP session side-effect warning with global variables as a source of data

I have a problem with a login script that im using. problem is with some of the hosting providers after login the session is not registering. and in php error logs i can see this error

PHP Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0

but in most of the hosting's like bluehost, hostmonster it works fine without any error. can someone point me out what is the wrong thing im doing here? thank you in advanced.

Code:

<?
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");
    }
    ?>

解决方案

The use of session_register is deprecated as says in PHP:SESSION_REGISTER

You should use:

//session_register("adminuser"); //deprecated
$_SESSION["adminuser"] = $adminuser;

这篇关于PHP会话未注册的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
PHP最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆