我有点困惑,我已经阅读了很多关于我的问题,但没有找到答案。
我必须登录一个网站并从登录后才能访问的页面中获取一些HTML。我过去使用Visual Basic执行此操作,使用IE Object
并且像脚本一样,但这给了我很多问题,主要是因为它太慢了。
我的网站只需使用<url>/j_security_check?j_username=username&j_password=pass
等POST请求即可轻松访问
我不知道的是如何检查我是否登录,
如何使用创建的会话访问页面,
以及如何获取HTML(主要由JavaScript生成)
之前从未创建过登录表单,我不知道会话的工作原理。我也对标头需要什么以及服务器给出的请求和响应代表感到困惑。
如果有人能指出我正确的方向来学习这些概念,我将非常感激。
答案 0 :(得分:2)
将SESSIONS
视为服务器内存中的变量。它们作为存储在用户计算机上的cookie持续存在。以下是两个简短但有用的解释:here和here
Here is a simplified code example。当登录成功或失败时,您要么(a)将用户重定向到安全页面,要么(b)将它们返回到公共页面再试一次。在PHP代码中,您可以使用headers()
方法或使用window.location.href="webpage.html";
的javascript重定向它们。上面的示例使用js方法,它还演示了如何保护网页以创建一些页面inside
和一些public
。
您选择PHP方法还是javascript方法(重定向到其他页面)取决于您如何处理来自用户的登录名/密码。如果您使用HTML表单,他们的工作方式是将数据发布到辅助页面 - 实际导航到其他页面 - 处理数据,并使用它执行某些操作。这一切都可以在PHP中发生。
这些天最常见的方法是保留在同一页面上(不导航它)并仅将数据发送到辅助PHP页面。该页面接收用户数据(id / pw),将这些凭据与您存储在数据库中的凭据(或甚至只是该PHP文件中的变量)进行比较,和ECHOs
回复登录页面的响应。响应在success:
函数内部接收,然后您使用javascript代码将用户重定向到内部页面。
在保留在原始页面上时将数据发送/接收到辅助PHP页面称为AJAX。这很简单。 Here is a brief overview with some simple examples.我建议您将代码复制到服务器并使示例正常工作 - 更改一些内容以了解每个代码的工作原理。
请注意,有两种方法可以将数据从一个网页发送到另一个网页:GET和POST。最明显的区别是GET方法的工作原理是将变量/值附加到URL,如您在问题中所示:
<url>/j_security_check?j_username=username&j_password=pass
POST方法更隐蔽 - 您需要使用开发人员工具查看数据 - 因此首选。
GET和POST源自HTML表单,大多数人立即将这两者联系起来。在AJAX的这些现代,根本不需要<form>
标签。实际上,如果您在AJAX中使用<form></form>
结构,则必须禁止导航到辅助页面的默认操作:
<form id="myForm" action="anotherpage.php" method="GET">
</form>
$('#myForm').submit(function(event){
event.preventDefault(); //suppress default form action
//Do some stuff
$.ajax({
type: 'post', //this is where you now do the GET or POST
url: 'my_secondary_file.php',
data: 'varname=' + field_value_variable + '&nuthervar=' +nutherval,
success: function(d){
if (d == 'whatever you echo from php') window.location.href = 'my_secret_page.php'
}
});
});
答案 1 :(得分:0)
会话在服务器上创建。点击网址后(在本例中为<url>/j_security_check?j_username=username&j_password=pass
),您的服务器应验证凭据,然后创建会话。您只能使用javascript管理该会话,可能使用cookie,而不是创建会话。