【发布时间】:2013-07-16 11:05:44
【问题描述】:
您好,阅读网站和论坛,我了解到,可以使用会话来阻止内容。我有一个 index.php 页面,用于检查会话并根据条件给出结果:
<?php
session_start();
if( $_SESSION['user'] != $name ) { echo "Sorry,no session found or is expired";
require( 'login.php' );
}
else {
echo "hello,you have session existing";
}
?>
我创建了表details
FNAME
LNAME
BDAY
PASS
EMAIL
CODES
login.php如下:
<?php
$name = $_POST['name'];
$pass = $_POST['pass'];
mysql_connect('mysqlhost','user','pass','userdatabase');
$query=mysql_query(sprintf("SELECT FNAME FROM `details` WHERE FNAME=$name AND PASS=$pass";
mysql_real_escape_string($PASS)));
if($query) { while($row = mysql_fetch_assoc($query)) { $rows[1] = $row; } }
if( isset($name) || isset($pass) )
{
if( empty($name) ) {
die ("ERROR: Please enter username!");
}
if( empty($pass) ) {
die ("ERROR: Please enter
password!");
}
if( $name == $rows[1][FNAME] &&
$pass == $rows[1][PASS] )
{
session_start();
$_SESSION['user'] = $_POST['name'];
header('Location: index.php');
}
else {
echo "ERROR: Incorrect username
or password!";
}
}
else {
?>
<html>
<head>
<body>
//Load login form here & save $SESSION value in "name"
</html>
<?php } ?>
所以,我的代码在某个地方出错了,看不到“你好,你有会话存在”。再次提供任何帮助将不胜感激。(代码可以查看一半,抱歉)
【问题讨论】:
-
$pass在index.php中来自哪里? -
您的查询中有漏洞,您直接在 sql 查询中使用用户输入。请调查使用mysql_real_escape_string() 以防止您的软件中存在 SQL 注入漏洞
-
停止使用 mysql_* 。切换到 PDO 或 mysqli_* 。不推荐使用 Mysql