我有这个简单的登录脚本:
$.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
页面,但是当用户可以首先浏览到这个文件时,验证登录的重点是什么?
答案 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.");
}