Защита на файл с име и парола!?

LuBaTa

Registered
Здравейте, трябва ми код, който като се сложи най-отгоре в дадени файлове, да ги защитава със парола и ако съм влязъл примерно във example1.php със име и парола да не се налага да ги пиша пак след като вляза във example2.php
Зле съм със Сесиите... просто нищо не ми идва на акъл..
Благодаря предварително!
 
login.php

PHP:
<?php
session_start();
$user = "admin"; // потребителско име
$pass = "12131415"; // парола
if (!isset($_SESSION['username']) or $_SESSION['username'] != $user)
{
?>
<form method="POST">
Username: <input type="text" name="username"><br />
Password: <input type="password" name="password"><br />
<input type="submit" name="submit" value="Login">
</form>
<?php
if (isset($_POST['submit']))
{
$username = htmlspecialchars($_POST['username']);
$password = htmlspecialchars($_POST['password']);
if ($username == $user and $password == $pass)
{
$_SESSION['username'] = $user;
?>
back to <a href="index.php">home</a>
<?php
}
else
{
echo "error";
}
}
exit;
}
?>


index.php

PHP:
<?php
include_once "login.php";
?>
this is home page

example2.php

PHP:
<?php
include_once "login.php";
?>
example 2.

logout.php

PHP:
<?php
include_once "login.php";
session_destroy();
?>
back to <a href="index.php">home</a>
 
Сега ще го тествам , че аз го писах тук в textarea-та за отговор и не съм го пробвал дали работи.

EDIT:

Пробвах го на моят localhost и си работи на 100%.
 
По-скоро:
PHP:
<?php
session_start();
$user = "admin"; // потребителско име
$pass = "12131415"; // парола
if (isSet($_SESSION['username'])) {
	echo "Welcome {$user}!";
} else {
	if (isSet($_POST['submit'])) {
        if(isSet($_SESSION['token']) && $_POST['token'] == $_SESSION['token']) {
			if(isSet($_POST['username'], $_POST['password'])) {
				$username = trim(htmlspecialchars($_POST['username']));
				$password = trim(htmlspecialchars($_POST['password']));
			} else {
				$username = "";
				$password = "";
			}
			if(!$username || !$password) {
				echo "Username/password combination incorrect.";
			}  else {
				if ($username == $user || $password == $pass) {
					$_SESSION['username'] = $username;
					echo "back to <a href=\"index.php\">home</a>";
				} else {
					echo "Invalid user/pass";
				}
			}
		} else {
			echo "CSRF Attack Detected";
		}
	} else {
		$token = $_SESSION['token'] = md5(uniqid('shalqlqlq',true));
		$GET_SELF = htmlentities($_SERVER['PHP_SELF']);
		echo "
		<form method=\"POST\" action=\"{$GET_SELF}\">
		Username: <input type=\"text\" name=\"username\"><br />
		Password: <input type=\"password\" name=\"password\"><br />
		<input type=\"submit\" name=\"submit\" value=\"Login\">
		<input type=\"hidden\" name=\"token\" value=\"{$token}\" />
		</form>";
	}
}
?>

На другите страници:
PHP:
<?php
session_start();
if(isSet($_SESSION['username'])) {
	echo "exp2";
} else {
	echo 'access denied';
}
?>

За logout;
PHP:
<?php
session_destroy();
?>

Точката е за @proba.
 
nom3r1 каза:
На другите страници:
PHP:
<?php
session_start();
if(isSet($_SESSION['username'])) {
	echo "exp2";
} else {
	echo 'access denied';
}
?>

И само това стига

PHP:
<?php
session_start(); #ако са динамични страниците това не го слагай
if(!isset($_SESSION['username'])){
         exit('Access denied!');
}

#надолу останалият код

а за logout е хубаво да се правят проверки дали е логнат потребителя, защото някой и без да е логнат пак може да напише в адресбара logout.php и най-много да му изчатка грешка за session_destroy();
Нещо такова трябва да се получи

PHP:
<?php
session_start();

if(isset($_SESSION['username'])){
         unset($_SESSION['username']); #предпочитам unset() пред session_destroy()
         header("http://example.com/index.php");
}
else{
         header("http://example.com/index.php");
}
?>

като естествено example.com трябва да се смени със вашия сайт.
 
Е добре, нещо не става аз слагам този код
Код:
<?php
session_start();
$user = "admin"; // потребителско име
$pass = "12131415"; // парола
if (isSet($_SESSION['username'])) {
echo "Welcome {$user}!";
} else {
if (isSet($_POST['submit'])) {
if(isSet($_SESSION['token']) && $_POST['token'] == $_SESSION['token']) {
if(isSet($_POST['username'], $_POST['password'])) {
$username = trim(htmlspecialchars($_POST['username']));
$password = trim(htmlspecialchars($_POST['password']));
} else {
$username = "";
$password = "";
}
if(!$username || !$password) {
echo "Username/password combination incorrect.";
} else {
if ($username == $user || $password == $pass) {
$_SESSION['username'] = $username;
echo "back to <a href=\"index.php\">home</a>";
} else {
echo "Invalid user/pass";
}
}
} else {
echo "CSRF Attack Detected";
}
} else {
$token = $_SESSION['token'] = md5(uniqid('shalqlqlq',true));
$GET_SELF = htmlentities($_SERVER['PHP_SELF']);
echo "
<form method=\"POST\" action=\"{$GET_SELF}\">
Username: <input type=\"text\" name=\"username\"><br />
Password: <input type=\"password\" name=\"password\"><br />
<input type=\"submit\" name=\"submit\" value=\"Login\">
<input type=\"hidden\" name=\"token\" value=\"{$token}\" />
</form>";
}
}
?>
Във index.php, след това във всички страници слагам този код
Код:
<?php
session_start();
if(isSet($_SESSION['username'])) {
echo "exp2";
} else {
echo 'access denied';
}
?>
и нищо не се получава, влизам си в файловете без да пиша никакви пароли и т.н..изписва ми
access denied
, а аз мога да си ровичкам в файла..
 
relax4o каза:
И само това стига

PHP:
<?php
session_start(); #ако са динамични страниците това не го слагай
if(!isset($_SESSION['username'])){
         exit('Access denied!');
}

#надолу останалият код
 

Back
Горе