PHP会话出错

时间:2013-10-11 15:52:38

标签: php session

我写了一个脚本,允许人们登录网站的管理员端来更新事件。它工作了大约2个月没有问题。我在两天前接到一个电话,说用户在尝试登录时遇到错误。他们得到的错误是“致命错误:在/ home / smslive / public_html / app / themes中调用未定义的函数session_register()第29行/church2/church2/admin/checklogin.php“。如果有人对如何解决它有任何想法我会非常感激。
以下是“checklogin.php”的代码

<?php

ob_start();
$host="localhost";
$username="username";
$password="password";
$db_name="database";
$tbl_name="table"; 

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$myusername=$_POST['email'];
$mypassword=$_POST['password'];

$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE email='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);


if($count==1){

session_register("email");
session_register("password");
header("location:/admin/edit.php");
}
else {
echo header("location:/admin/fail.php");
}

ob_end_flush();
?>

以下是 edit.php

的会话
session_start();
if(!session_is_registered("email")){
header("location:/admin/index.php");
}
?>

4 个答案:

答案 0 :(得分:2)

session_register不再存在。要设置会话变量,请确保在脚本开头调用session_start,然后执行以下操作:

$_SESSION['email'] = $email;
$_SESSION['password'] = $password;

要检查是否设置了会话变量,只需执行以下操作:

if(!isset($_SESSION["email"])){
    header("location:/admin/index.php");
}

答案 1 :(得分:1)

session_register已弃用,如php.net

所示

直接使用$_SESSION数组,例如$_SESSION['email'] = '';if(!isset($_SESSION['email']))

答案 2 :(得分:1)

我相信您的服务器在过去两个月内经历了升级到> 5.4,在您不知情的情况下。 session_register()

中不再提供PHP 5.4

http://php.net/manual/ru/function.session-register.php

答案 3 :(得分:-1)

您的PHP版本是否已由主机更新,自php 5.3起不再使用Session_register()

检查phpinfo以找出答案,

http://php.net/manual/en/function.session-register.php