У меня есть очень простой скрипт, который создает пользователя:
<?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 , и я не могу сказать, что в моих силах.
P.S. Пожалуйста, не комментируйте безопасность моей системы. Это, наверное, ужасно неуверенно, но я просто пишу для прототипа.
EDIT: Просто, чтобы сделать это немного менее бесполезным вопросом, может ли кто-нибудь найти серьезные недостатки безопасности here?
Я читаю его ... но не забудьте поставить «session_start()» в самом начале скрипта (после открытия php-тега) :) –
@ErenorPaz, не нужно, пока он перед отправкой чего-либо для клиента (эхо, печать ..) – Adi
Что делать, если включение дает ошибку? Хорошо, в этом случае не будет никаких подключений, поэтому он прекратит выполнение в любом случае, но, как вы сказали, «прежде чем что-либо будет отправлено в браузер» :) –