-4

我正在使用 Wordpress 来构建我的网站。我正在创建一个登录系统,供学校登录到我的系统以查看您的信息。当授权登录的用户遇到问题,他们无法进入授权页面,即查看产品页面。

请帮忙。

下面是登录代码。

session_start();
if($_SERVER["REQUEST_METHOD"] == "POST") {

// School code and password sent from Form
$myschoolcode = ($_POST['schoolcode']);
$mypassword = ($_POST['password']);

$sql = "SELECT school_id FROM schools_info WHERE SchoolCode = '$myschoolcode' and Password = '$mypassword'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$active = $row['active'];
$count = mysql_num_rows($result);

// If result matched $myschoolcode and $mypassword, table row must be 1 row
if($count == 1) {
session_register("myschoolcode");
$_SESSION['login_school'] = $myschoolcode;

header("location: ../view-products/");
}
else
{
?>
    <script type="text/javascript">
    alert("Your School Code or Password is incorrect, please reenter");
    history.back();
    </script>
    <?php
}

}

下面是查看产品页面代码。

session_start();
$school_check = $_SESSION['login_school'];

$ses_sql = mysql_query("SELECT SchoolCode FROM schools_info WHERE SchoolCode = '$school_check' ");

$row = mysql_fetch_array($ses_sql);

$login_session = $row['schoolcode'];

if(!isset($login_session))
{
header("location: ../enter-icas/");
}
4

1 回答 1

2

如果我可以-1,我会的。您的最后一个问题是会话,您的首要问题是您存储的是普通密码?甚至不是一个粗糙的 MD5?甚至没有 mt_rand()?单纯吗?-> 大问题!2nd)您获取您甚至没有过滤或验证的用户输入数据,并立即将其插入查询中,并且您认为您是安全的,因为您使用

'$please_inject_me_NOW'

您应该使用 PDO。看看 Php PDO 手册。

好吧,除了我的咆哮,从你的观点来看,我不明白你为什么要从 $_SESSION 变量中进行另一个查询?

如果凭据与您所做的匹配,您所要做的就是设置您的会话变量。

现在在每个视图页面的顶部或在此视图中,例如页面,您所要做的就是:

if(!isset($_SESSION['LoggedIn'])){ // If session variable 'LoggedIn' is not set then
        die("Access denied, you must <a href='index.php'><bold>Login</bold></a> to view this page!"); // Die with the message Access Denied, You must Login to view this page!
} else { // If session variable LoggedIn is set then yyyyaaay! Do your thing man.
  .........
}

请阅读我的评论。您必须使用某种密码保护 = Bcrypt任何一种?也不要忘记 PDO!

编辑 1

并且不要忘记在实现上述解决方案之前添加 session_start() (虽然你可能已经知道了)

于 2013-04-16T02:13:51.913 回答