Php 已弃用:函数session_register()已弃用,无法修改标头信息
我使用sql创建了一个简单的登录系统 它有4个主要组成部分 索引-要求输入用户名和密码 checklogin-检查凭据 logsuccess 主页-成功登录后的登录页 文章末尾给出了生成的错误Php 已弃用:函数session_register()已弃用,无法修改标头信息,php,login,Php,Login,我使用sql创建了一个简单的登录系统 它有4个主要组成部分 索引-要求输入用户名和密码 checklogin-检查凭据 logsuccess 主页-成功登录后的登录页 文章末尾给出了生成的错误 Index.php asks for username and pass <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> &
Index.php asks for username and pass
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Nottingham Uni</TITLE>
<script type="text/javascript" src="js/mootools-1.2.1-core-yc.js"></script>
<script type="text/javascript" src="js/process.js"></script>
<link rel="stylesheet" type="text/css" href="style.css" />
</HEAD>
<BODY>
<center>
<div id="intro">
<p> </p>
<p><img align="absmiddle" src="images/nott-uni-logo.jpg"></p>
</div>
<div id="status">
<fieldset><legend align="center">Authentication</legend>
<div id="login_response"><!-- spanner --></div>
<form id="login" name="login" method="post" action="checklogin.php">
<table align="center" width="300" border="0">
<tr>
<td width="80">Username</td><td><input id="name" type="text" name="myusername"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="mypassword"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><input id="submit" type="submit" name="submit" value="Login">
</tr>
</table>
</form>
</fieldset>
</div>
</center>
</BODY>
</HTML>
checklogin.php checks for the credentials
<?php
$link = mysql_connect('www.xxxxx.com', 'xxxxxx', 'xxxxxx');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("brainoidultrafb", $link);
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM logintbl WHERE stu_email='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>
If its success it goes to homepage.php
logsuccess.php is below
<?php
session_start();
if(!session_is_registered(myusername)){
header("location:homepage.php");
}
?>
<html>
<body>
Login Successful
</body>
</html>
these codes are give in the following errors
Deprecated: Function session_register() is deprecated in /home/content/58/9508458/html/pabrowser/checklogin.php on line 29
Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent (output started at /home/content/58/9508458/html/pabrowser/checklogin.php:29) in /home/content/58/9508458/html/pabrowser/checklogin.php on line 29
Deprecated: Function session_register() is deprecated in /home/content/58/9508458/html/pabrowser/checklogin.php on line 30
Warning: Cannot modify header information - headers already sent by (output started at /home/content/58/9508458/html/pabrowser/checklogin.php:29) in /home/content/58/9508458/html/pabrowser/checklogin.php on line 31
Index.php要求输入用户名和密码
诺丁汉大学
认证
用户名
密码
checklogin.php检查凭据
而不是做:
session_register("myusername");
session_register("mypassword");
您可以简单地执行以下操作:
session_start();
$_SESSION['username'] = 'something';
$_SESSION['password'] = 'something';
要检查用户名是否已设置,您可以执行以下操作:
session_start();
if(!isset($_SESSION['username'])){
// not logged in
}
请注意,我的检查/初始化正上方有session\u start()
函数。在代码中,您可能希望将其添加到脚本的顶部,以防止出现错误
另外,请不要对新代码使用mysql.*
函数。它们不再得到维护,社区已开始恢复。看到了吗?相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果你想学习
关于代码的最后一件事。看起来你没有输入密码,这被认为是不好的做法。如果攻击者获得了您的数据库,您需要向数据库中的用户解释(例如,您必须告诉他们攻击者获得了他们的所有密码)。您可以通过在任何不推荐的函数之前使用@
来避免此问题。如@session\u register()
谢谢您的快速回复。。新的错误显示为不推荐:函数session_is_registered()在第3行的/home/content/58/9508458/html/pabrowser/login_success.php中不推荐登录成功,我应该如何格式化它这也在我的答案中。这是if(!isset($\u SESSION['username'])){
part.@mario这不是谎言,这是教育。在soem点上它将被弃用。对于新代码,最好开始切换。确保代码在将来的版本中继续工作有什么问题吗?如果你想讨论这个问题,请随时来讨论,而不是污染评论,我将非常高兴地告诉你more@mario@mario谢谢你的合作。我们真的很感激。可能的重复