gpt4 book ai didi

php - 弃用 : Function session_register() is deprecated and Cannot modify header information

转载 作者:可可西里 更新时间:2023-11-01 00:00:50 24 4
gpt4 key购买 nike

我用sql创建了一个简单的登录系统

它有 4 个主要组件index - 询问用户名并通过checklogin - 检查凭据登录成功首页-登录成功后的登陆页面

错误生成在文章末尾给出

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>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</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

最佳答案

而不是做:

session_register("myusername");
session_register("mypassword");

你可以简单地做:

session_start();
$_SESSION['username'] = 'something';
$_SESSION['password'] = 'something';

要检查用户名是否已设置,您可以执行以下操作:

session_start();
if(!isset($_SESSION['username'])){
// not logged in
}

请注意,我在检查/初始化上方有一个 session_start() 函数。在您的代码中,您可能希望将它添加到脚本的顶部以防止 "Headers already sent by PHP" message .

此外,请不要在新代码中使用mysql_* 函数。它们不再维护,社区已经开始 deprecation process .查看red box ?相反,您应该了解 prepared statements并使用 PDOMySQLi .如果你不能决定,this article会帮助选择。如果你想学习,here is a good PDO tutorial .

关于您的代码的最后一件事。看起来你没有 properly hash密码,这被认为是不好的做法。如果攻击者控制了您的数据库,您需要向数据库中的人员做一些解释(例如,您必须告诉他们攻击者获得了他们所有的密码)。

关于php - 弃用 : Function session_register() is deprecated and Cannot modify header information,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com