我有一個非常簡單的腳本,創建一個用戶:
<?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 ['用戶名']或任何其他會話變量,即使我已經開始在第3行的會話。我很困惑,因爲我的一些其他PHP腳本正確地操縱$ _SESSION變量,我不能說出我的有什麼不同。
P.S.請不要評論我的系統的安全性。這可能是非常不安全的,但我只是在寫一個原型。
編輯:只是爲了使這個問題稍微沒有用處,任何人都可以找到任何嚴重的安全缺陷here?
我正在閱讀它..但記得在腳本的開頭(在打開php標籤之後)放置「session_start()」:) –
@ErenorPaz,不必要,只要它在發送任何東西之前到客戶端(回聲,打印..) – Adi
如果包含給出錯誤怎麼辦?好的,在這種情況下,不會有任何連接變量,所以它會停止執行,但正如你所說的,「在任何事情發送到瀏覽器之前」:) –