2013-04-22 111 views
0

我做了网站登录使用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"; 
} 

我的网站的conseption:有一个与主键索引文件和登录form.Button重定向没有登录其他索引文件和登录窗体重定向到与用户名和PASW的要求,第三个索引文件。在这个目录是我的网站的主要部分。 当我使用登录表单登录网站时,一切都可以,但是如果我在网页中进行复制并复制网址并粘贴到其他浏览器或其他选项卡中,则无需登录即可访问此部分。 问题是如何在没有登录的情况下使这些部件不可用?

+6

您正在使用[一个** **过时数据库API](http://stackoverflow.com/q/12859942/19068)和应该使用[现代替换](http://php.net/manual/en/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻击](http://bobby-tables.com/)**,现代的API会使[防御]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己从。 – Quentin 2013-04-22 13:44:04

+2

不要存储纯文本密码! [使用散列安全地存储它们](https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet)。 – Quentin 2013-04-22 13:47:22

+0

你能告诉我这更详细的,我该怎么做? – user2290637 2013-04-22 14:13:05

回答

0

您需要在客户端上存储某种形式的身份验证令牌(您已经在使用session cookie进行此操作),然后检查访问每个页面的用户是否已通过身份验证并且有权查看该页面(并给出403如果它们不是,则使用登录表单或适当的错误消息进行响应)。

+0

你能写这个 – user2290637 2013-04-22 14:17:53

0

您应该为每个内部页面添加一个函数来检查您登录时存储的会话数据。如果此数据与存储的数据不匹配,则将用户踢回到登录页面并显示错误消息。

CNC中

一个实例函数:

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(); 
}} 
+0

的代码吗你能写这个代码吗? – user2290637 2013-04-22 14:12:13