0

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

4 回答 4

1

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

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

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

if(!isset($_SESSION["email"])){
    header("location:/admin/index.php");
}
于 2013-10-11T15:56:09.970 回答
1

session_register已被弃用,如php.net上所示

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

于 2013-10-11T15:56:14.707 回答
1

我相信您的服务器在过去两个月中在您不知情的情况下升级到 >5.4。 session_register()不再提供PHP 5.4

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

于 2013-10-11T15:56:42.430 回答
0

主机是否更新了您的 PHP 版本,从 php 5.3 开始不推荐使用 Session_register()

检查一个phpinfo找出,

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

于 2013-10-11T15:56:25.893 回答