ユーザーを作成する非常に単純なスクリプトがあります。
<?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>
元々、私のスクリプトは、アカウントを作成した後、ログインページにリダイレクトするだけでした。アカウントの作成後にログインできるように調整しようとしています。何らかの理由で、3行目でセッションを開始したにもかかわらず、$ _ SESSION['username']または他のセッション変数を編集できません。他のPHPスクリプトの一部が$_SESSION変数を適切に操作しているため、非常に混乱しています。何が違うのかわかりません。
PS私のシステムのセキュリティについてコメントしないでください。恐らくひどく安全ではありませんが、私はプロトタイプのために書いているだけです。
編集:これを少し役に立たない質問にするために、誰かがここで重大なセキュリティ上の欠陥を見つけることができますか?