Jquery / PHP - 防止用户浏览到锁定的内容

时间:2012-06-07 01:52:53

标签: php jquery login

我有这个简单的登录脚本:

$.ajax({
        type: 'POST',
        url: 'authorize.php',
        data: { username: user, password: pass },
        dataType: 'json',
        success: function(data) {
            if (data.status == "loggedIn") {
                //Logged in
            } else {
                //Not logged in
            }
        }
    });

//Logged in在哪里,我该如何调用需要登录的页面?我可以简单地$.load页面,但是当用户可以首先浏览到这个文件时,验证登录的重点是什么?

5 个答案:

答案 0 :(得分:1)

这是一个演示问题,你可以在另一个文件上加载一个div,你不需要加载整个文件。

我使用ajax登录和$ .load来“带”我在模板文件中的div。这只是因为当您需要更改设计时它会更容易。

请记住,将作品分成单独的“碎片”会使您更容易改变。想象一下,您在20个单独的模板上拥有相同的登录框。如果你改变一个,你必须再改变19个。

答案 1 :(得分:1)

我建议在所有这些页面中使用PHP Sessions。检查用户实际登录的$.load页面,如果成功,请将用户设置为登录authorize.php页面。

这样,如果用户查看了网页来源并查看了您正在加载的内容,但是当他们尝试访问该网页时,它就不会做任何事情,因为您需要检查他们是否已经登录。

答案 2 :(得分:1)

你无法阻止用户使用javascript(jquery)做任何事情,因为它是客户端的,很容易被禁用/更改等。

您可以做的只是$.load您所说的页面,但还要检查加载页面上的会话,以便在发送内容之前检查实际登录。您需要在会话中设置一些变量作为authorize.php的一部分,以表示登录成功。

答案 3 :(得分:1)

为了防止访问数据,您应该考虑使用.htaccess和Apache的mod_rewrite。每当用户请求一条可能敏感的数据时,您将无形地调用一个PHP页面,然后该页面将提供所请求的数据或403 Forbidden

示例:

<强>的.htaccess

RewriteEngine On
RewriteRule ^user-content/(.+) display_content.php?file=$1

然后,将通过display_content.php重新路由将在用户内容中访问的所有文件。您还可以使用此.htaccess文件,以便在有引荐来源时拒绝显示资源,从而帮助防止热链接。

<强> display_content.php

<?php
if (isLoggedIn($_COOKIE["username"], $_COOKIE["password"]) && isset($_GET["file"])) {
    if (mimeTypeOk($_GET["file"]) { // Implementation not shown
        readfile($_GET["file"]);
        exit();
    }
}
header("403 Forbidden");
?>

答案 4 :(得分:0)

为了以最安全的方式执行此操作,您将不得不同时使用jQuery作为客户端方式,并使用PHP作为服务器端方式检查用户是否已登录。您不需要使用jQuery加载整个页面,只需使用以下代码加载div部分:

$("#load_dom").click(function(){  
$("#result")  
    .html(ajax_load)  
    .load(loadUrl + " #picture");  
});  

然后,作为安全措施,使用PHP来限制对页面的访问,方法是检查$ _SESSION vars,如下所示:

if (!isset($_SESSION['userid'])) {
    // user is logged in
} else {
    // user is not logged in
    die("You are not logged in.");
}