2017-04-06 53 views
0

我已經研究了這個問題了很多,我猜是因爲我是PHP新手,似乎無法實現類似於我自己的其他問題的解決方案到我自己的代碼。無論哪種方式,以下是我的代碼,並提前感謝您提供任何幫助。阻止訪問網頁沒有登錄細節

的login.php:

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

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

connectivity.php:

<?php 
 
    
 
    session_start(); 
 
    
 
\t define('DB_HOST', 'localhost'); 
 
\t define('DB_USER', 'root'); 
 
\t define('DB_PASSWORD', 'root'); 
 
\t define('DB_NAME', 'server-temp'); 
 
\t 
 
    $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'])) { 
 

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

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

的index.php:

<?php 
 
\t 
 
\t include '../includes/inc.header.php'; 
 
\t include '../login/connectivity.php'; 
 
\t 
 
?> 
 
    
 
<div id="temp1"></div> 
 

 
<?php 
 

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

 
?>

這裏是數據庫表中的值的屏幕截圖:

dbLoginTbl

頁眉和頁腳包括不包含與登錄表單的任何代碼,因此它不需要包括在內。任何人都可以告訴我需要什麼代碼,以便我可以克服這種小但必要的呃逆。謝謝。

+0

你想要什麼,隱藏頁眉和頁腳的簡單形式,如果用戶沒有通過認證? – webDev

+0

沒有主頁面index.php會阻止任何訪問本身,除非用戶已經登錄。忽略我的頁眉和頁腳,他們是爲了其他的東西。 –

+0

,只需使用if語句檢查會話變量並將該主要部分包含到該條件中即可。爲了成功完整登錄設置會話變量並限制某些內容,只需檢查會話變量。 – webDev

回答

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 
//..............................