2015-04-22 68 views
1

我已經生成了一個PHP文件,其中存儲了一個數據庫中的信息。要訪問此人,必須在頁面中使用登錄。.php文件安全使用MAMP

但是,當您使用MAMP時,您如何防止某人通過寫入IP地址和php文件名來訪問該文件,例如123.456.78.00:80/fileone.php。我希望這個fileone.php被隱藏,並且只能通過登錄頁面訪問它。 在此先感謝。

<?php 
session_start(); 

$username = mysql_real_escape_string($_POST['username']); 
$password = mysql_real_escape_string($_POST['password']); 

mysql_connect("localhost", "root","root") or die(mysql_error()); //Connect to server 
mysql_select_db("first_db") or die("Cannot connect to database"); //Connect to database 
$query = mysql_query("SELECT * from users WHERE username='$username'"); //Query the users table if there are matching rows equal to $username 
$exists = mysql_num_rows($query); //Checks if username exists 
$table_users = ""; 
$table_password = ""; 
if($exists > 0) //IF there are no returning rows or no existing username 
{ 

    while($row = mysql_fetch_assoc($query)) //display all rows from query 
{ 
    $table_users = $row['username']; // the first username row is passed on to $table_users, and so on until the query is finished 
    $table_password = $row['password']; // the first password row is passed on to $table_users, and so on until the query is finished 
    $table_id = $row['id']; 
    $page_id = $row['page']; 
} 
if(($username == $table_users) && ($password == $table_password)) // checks if there are any matching fields 
{ 
     if($password == $table_password) 
     { 
      $_SESSION['user'] = $username; //set the username in a session. This serves as a global variable 
      //echo $table_id; 
      //echo $page_id; 

      redirect ($page_id); //take the user to the page specified in the users table 

     } 
    else 
    { 
     echo "Login Failed"; 
    } 

} 
    else 
    { 
     Print '<script>alert("1. Incorrect Password!");</script>'; //Prompts the user 
     Print '<script>window.location.assign("login.php");</script>'; // redirects to login.php 
    } 
} 
else 
{ 
    Print '<script>alert("Incorrect Username!");</script>'; //Prompts the user 
    Print '<script>window.location.assign("login.php");</script>'; // redirects to login.php 
} 
function redirect($page_id) 
{ 
/* Redirect browser */  
header('Location: ' . $page_id); 
/* Make sure that code below does not get executed when we redirect. */ 
exit; 
} 
?> 

回答

1

登錄檢查

if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] === true) { 
    "Your script" 
} 

如果您對您的用戶配置文件,像一個正常的用戶= 0和管理員= 1,你可以做這樣的

if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] === true && $_SESSION['profile'] == 1) { 
    "Your script" 
} 

設置會話

要設置設置會話真正需要這個

if(isset($_POST['submit'])) { 
    $_SESSION['loggedIn'] = true; 

    // for set a profile 
    $_SESSION['profile'] = 1; 
} 

也許我不明白你很好,但可以肯定,我會解釋一下:

你說的連接checklogin.php,但你可以不會使用它來拒絕非會員訪問。如果他們知道該文件存在,他們可以在URL中輸入並仍然讀取fileone.php。第一個編碼塊需要在你的fileone.php中。

會議時間

搜索在php.ini爲 '的session.gc_maxlifetime'。會有一個數字,那就是幾秒鐘的時間。

+0

我附上了我的checklogin.php。登錄頁面本身除登錄按鈕外沒有太多內容,然後將用戶重定向到此頁面。我已經設置了用戶名和密碼,但這是爲了檢查用戶是否存在於數據庫中,然後確保他們在登錄後被重定向到他們的個人頁面。因此,我意識到我需要一些當用戶登錄和註銷時會觸發的東西。你的工作代碼如何識別用戶何時離開,或者已經停止了20分鐘。謝謝 – Rus84

+0

我編輯了答案,希望我幫你好! @ Rus84 – CrazzyMarc

+0

是的,這是非常有幫助的,你在底部解釋的部分是完全正確的。這是我的問題,他們可以輸入URL並仍然讀取文件,因此解決方案非常棒。我只有3個用戶,他們的用戶ID很簡單1,2和3.通過構建配置文件,你的意思是什麼?我的所有用戶都擁有相同的編輯權限等。如果我沒有配置文件,我該怎麼辦?用戶ID存儲在數據庫中,而checklogin.php只是確保用戶名和密碼相匹配。謝謝你的幫助。 – Rus84