【发布时间】:2014-06-19 23:01:23
【问题描述】:
我的 session_destroy () 不起作用。当我以用户身份注销并返回浏览器时,显示用户在线。我哪里有错误?谢谢。 :-)
文件 login.php
<?php
require_once('functions.php');
if(isset($_POST['submit'])){
if((isset($_POST['username']) && $_POST['username'] != '') && (isset($_POST['password']) && $_POST['password'] != '')){
$connection = conectDatabase();
$query = "SELECT * FROM users WHERE username='" . $_POST['username'] . "' AND password='" . $_POST['password'] . "';";
$result = $connection->query($query);
if ($result->num_rows >0){
session_start();
$_SESSION['username'] = $_POST['username'];
header('LOCATION: users.php');
} else {
echo '<p class="formMessage">Username/password do not match !</p>';
}
} else {
echo '<p class="formMessage">Username/Password field is empty</p>';
}
}
?>
文件functions.php
<?php
function conectDatabase() {
$connection = new mysqli('localhost', 'root', '', 'DB');
if(mysqli_connect_errno()) {
die("error DB: " . mysqli_error() . "(" . mysqli_connect_errno() . ").");
}
return $connection;
}
?>
文件 logout.php
<?php
session_start();
session_destroy();
header('LOCATION: login.php');
?>
【问题讨论】:
-
2014年了,你还觉得把用户的密码以明文的形式存储在数据库中是可以接受的吗?另外,
"show user online"是什么意思? -
请同时使用prepared statements,在SQL中直接使用
$_POST元素是危险的。 -
SQL 注入一切!