0

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

$.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访问页面,但是当用户首先可以浏览到该文件时,验证登录的意义何在?

4

5 回答 5

1

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

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

请记住,将工作分成单独的“部分”可以让您更轻松地进行更改。想象一下,您在 20 个单独的模板上有相同的登录框。如果你改变一个,你必须再改变19个。

于 2012-06-07T01:57:10.100 回答
1

我建议PHP Sessions在所有这些页面中使用。在您要访问的页面上检查用户是否实际登录,如果成功$.load,则在页面上将用户设置为已登录。authorize.php

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

于 2012-06-07T02:01:31.660 回答
1

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

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

于 2012-06-07T02:02:38.713 回答
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");
?>
于 2012-06-07T02:08:16.667 回答
0

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

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

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

if (!isset($_SESSION['userid'])) {
    // user is logged in
} else {
    // user is not logged in
    die("You are not logged in.");
}
于 2012-06-07T03:26:20.270 回答