2013-10-11 48 views
0

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

的[PHP/MySQL的登录](http://stackoverflow.com/questions/14538547/php-mysql-login) – showdev

+0

可能重复。如果你正在使用用户登录,请了解安全性以及如何哈希密码。永远不会*以纯文本形式存储密码。 – Spudley

+0

此外,请注意'mysql_xxx()'函数已被弃用,不建议再使用。你应该[阅读此](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)了解更多信息。 – Spudley

回答

2

session_register不再存在了会议。要设置会话变量,请确保您拨打session_start在你的脚本开始,然后简单地做:

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

要检查会话变量设置,只是做:

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

解决方法为+1 – ldrumm

1

session_register一直不推荐使用php.net

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