阻止访问网页而无需登录详细信息

时间:2017-04-06 23:21:35

标签: php html database authentication login

我已经对这个问题进行了很多研究,我想因为我是PHP的新手,我似乎无法实现与我自己的代码类似的其他问题的解决方案。无论哪种方式,下面是我的代码,并提前感谢您提供的任何帮助。

的login.php:



<?php
	include '../includes/inc.header.php';
?>

<body id="body">
	<title>Please Login</title>
	<link rel="stylesheet" type="text/css" href="../css/login.css">
	<div id="sign-In">
		<img src="http://downloadicons.net/sites/default/files/locked-icon-28008.png"/>
		<h3>Login Here</h3>
		<form method="POST" action="connectivity.php">
			<br/>
			<input type="text" name="userName" size="40" placeholder="Username" id="user">
			<input type="password" name="pass" size="40" placeholder="Password" id="user">
			<br/>
			<input id="button" type="submit" name="submit" value="Log-In">
		</form>
		</fieldset>
	</div>
</body>
&#13;
&#13;
&#13;

connectivity.php:

&#13;
&#13;
<?php
    
    session_start();
    
	define('DB_HOST', 'localhost');
	define('DB_USER', 'root');
	define('DB_PASSWORD', 'root');
	define('DB_NAME', 'server-temp');
	
    $con=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
    $db=mysqli_select_db($con, DB_NAME) or die("Failed to connect to MySQL: " . mysql_error());

        if(isset($_POST['userName'])) {

	        $query = "SELECT *  FROM login where userName = '$_POST[userName]' AND pass = '$_POST[pass]'";
	        $query = mysqli_query($con,$query);
	        $row = mysqli_fetch_array($query);
			
            	if(!empty($row['userName']) AND !empty($row['pass'])) {
		            
		            $_SESSION['ID'] = $row['UserNameID'];
		            header('location: ../main-page/index.php');
                    exit();

	            }else {
	                
		            header('location: login.php');
	            }
            }
			
			$_SESSION['ID'] = 1;
?>
&#13;
&#13;
&#13;

的index.php:

&#13;
&#13;
<?php
	
	include '../includes/inc.header.php';
	include '../login/connectivity.php';
	
?>
 
<div id="temp1"></div>

<?php

	include '../includes/inc.footer.php';

?>
&#13;
&#13;
&#13;

以下是数据库表值的屏幕截图:

dbLoginTbl

页眉和页脚包含的内容不包含与登录表单相关的任何代码,因此不需要包含它。任何人都可以告诉我需要什么代码,所以我可以克服这个小但必要的打嗝。谢谢。

1 个答案:

答案 0 :(得分:0)

你需要做这样的事情。

<?php
session_start();
include '../includes/inc.header.php';
include '../login/connectivity.php';    
?>

<?php 
if(isset($_SESSION['ID'])&&$_SESSION['ID']!=""){  //MUltiple session val better
?>
<div id="temp1"></div>
<?php 
}
else{
    echo "Access Denide!";
    //redirect to login page or just display message 
}
?>

<?php include '../includes/inc.footer.php'; ?>

注意:如果用户未登录,这是隐藏内容的简单方法。在此方法中,我们只是检查是否设置了会话变量。您可以在登录时设置不同的会话变量,然后使用这些变量来检查用户是否已登录。您只需使用isset()empty()方法检查会话是否可用。

基本上我们正在检查会话以检查用户登录并阻止某些内容,这里是代码示例的简单形式

//HEADER
//..................
if(isset($_SESSION['ID'])&&$_SESSION['ID']!=""){
    //Allowed content
    echo "Session variablefound and set, that why your content is .....";
    //Put your content here, 
    //you can put all allowed HTMl content here which are allowed to the authenticated user.
}
else{
    echo "Access Denied!";
}
//FOOTER
//..............................