2

我有一个非常简单的脚本来创建用户:

<?php
include 'mysqlserver.php';
session_start();



$con = mysql_connect($mysql_host, $mysql_username,$mysql_password);
if (!$con) {
die('Could not connect: ' . mysql_error());
}


mysql_select_db($mysql_db, $con);

$newuser = $_POST[username];
$newpassword = $_POST[password];
$confirmnewpassword = $_POST[confirmpassword];

if ($newpassword != $confirmnewpassword) {
die('Passwords do not match.');
}

if ($newuser == null) {
die('You need to choose a username!');
} elseif ($newpassword == null) {
die('You need to enter a password!');
}

$avail_query = mysql_query("SELECT * FROM users WHERE username='$newuser'");

$avail_numrows = mysql_num_rows($avail_query);

if ($avail_numrows != 0) {
die('That user already exists');
}


mysql_query("INSERT INTO users (username, password) 
VALUES ('$newuser', '$newpassword')");


$_SESSION['username'] == $newuser;

mysql_close($con);
?>

<script type="text/javascript">

function enterUCP(){
window.location = "/member.php"
}

</script>
</head>
<body onLoad="setTimeout('enterUCP()', 3000)">
Account created! Logging you in...
</body>

最初,我的脚本只是在创建帐户后将您重定向到登录页面。我一直在尝试对其进行调整,以便您在创建帐户后登录。出于某种原因,我无法编辑 $_SESSION['username'] 或任何其他会话变量,即使我已经在第 3 行开始了会话。我很困惑,因为我的其他一些 PHP 脚本正确地操作了 $_SESSION 变量,我说不出我的有什么不同。

PS请不要评论我系统的安全性。它可能非常不安全,但我只是在为原型编写。

编辑:只是为了让这个问题不那么无用,任何人都可以在这里找到任何严重的安全漏洞

4

4 回答 4

6

改变:

$_SESSION['username'] == $newuser;

到:

$_SESSION['username'] = $newuser;

您是在比较而不是设置。

于 2012-06-18T17:12:21.773 回答
3

$_SESSION['username'] == $newuser;

删除第二个 = 符号。

$_SESSION['username'] = $newuser;
于 2012-06-18T17:14:12.067 回答
3

哦,天哪 :)

$_SESSION['username'] == $newuser;

双等号..只放一个就可以了:)

$_SESSION['username'] = $newuser;
于 2012-06-18T17:15:21.647 回答
3

很多人已经回答了你的问题,但我不想把这个放在评论中。首先,您通过更改来修复您的代码

$_SESSION['username'] == $newuser;

到:

$_SESSION['username'] = $newuser;

重要的:

当您学习 MySQLi 或PDO时,对您的代码执行此操作

$newuser = mysql_real_escape_string($_POST[username]);

保护自己免受SQL 注入

确保对查询中使用的所有输入进行类似的转义。

于 2012-06-18T17:23:52.250 回答