我用php和html登录网站。代码:
<?php
session_start();
$user="root";
$host="localhost";
$password="";
$database="mb_dusnionys_login";
$usertable="nariai";
mysql_connect ($host, $user,$password) or die ("negalima");
mysql_select_db ($database)or die (mysql_error());
$myusername=$_POST['username'];
$mypassword=$_POST['password'];
$sql="SELECT * FROM {$usertable} WHERE username='{$myusername}' AND password='{$mypassword}'";
$result = mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
$_SESSION ["username"]=$myusername;
$_SESSION ["password"]=$mypassword;
$_SESSION ["userrecord"]=mysql_fetch_assoc($result);
header ("location: /nariu_turinys/index.html");
}
else {
echo "Netinkamas vartotojo vardas arba slaptažodis. Grįžkite atgal ir bandykite iš naujo";
}
我的网站的结论:主要索引文件有按钮和登录表单.Button重定向无需登录到其他索引文件,登录表单重定向到第三个索引文件,需要用户名和密码。在这个目录中是我网站的主要部分。 当我使用登录表单登录网站时,一切都还可以,但如果我已经进入并将URL复制到页面的某些部分并粘贴到其他浏览器或其他选项卡中,我可以在不登录的情况下到达此部分。 问题是如何在没有登录的情况下使这些部件无法使用?
答案 0 :(得分:0)
您需要在客户端上存储某种形式的身份验证令牌(您已使用session cookie执行此操作),然后检查访问每个页面的用户是否经过身份验证并有权查看该页面(以及如果不是,请提供带有登录表单或适当错误消息的403响应。
答案 1 :(得分:0)
您应该为每个内部页面添加一个功能,以检查您在登录时存储的会话数据。如果此数据与存储的数据不匹配,则将用户踢回登录页面并显示错误消息。
- 编辑 -
示例功能:
function isLoggedIn()
{
if(isset($_SESSION['username']))
$sql="SELECT * FROM {$usertable} WHERE username='{$_SESSION['myusername']}' AND password='{$_SESSION['password']}'";
$result = mysql_query($sql);
if(!$result)
{
logout();
}
} else {
logout();
}}