Полезные приёмы - HTML, PHP, JavaScript, .htaccess

Источник: http://www.webheim.com/

Я не изобретаю велосипед, а просто привожу некоторые простые приёмы, которые можно использовать на собственной странице. Особенно полезно это тем, кто не имеет большого опыта или специальных знаний, но имеет hobby - собственная страничка в internet.
Иногда появляется желание что то добавить на свою страничку, и есть сотни вариантов решений - но хочется что то надёжное и простое. Если это так - тогда эта небольшая статья должна помочь.

 

Как защить файл паролем без .htaccess

Вариант 1 - только пароль (PHP)

Очень просто с php можно надёжно "закрыть" паролем.
Ниже приведен код файла (например test.php), который надо защитить:

<?php
$password = "test"; // test - Здесь пароль для доступа

session_start();

if (!session_is_registered("registered")) {
if (!$submit) {
echo "<form method="post" action="$PHP_SELF">";
echo "Пароль: <input type="text" name="passwd_input">";
echo "<input type="submit" name="submit" value="Вход">";
echo "</form>";
}
else {
if ($passwd_input != $password) die("Неправильный пароль!");
session_register("registered");
header("Location: $PHP_SELF");
}
}

if (!session_is_registered("registered")) exit();
?>

<html>
<head>
<title>OK</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body bgcolor="#FFFFFF" text="#000000">
Страница, которая защищена паролем здесь!
</body>
</html>

Использование сессии позволяет обеспечить дополнительную защиту, т.е. после ввода пароля и получения доступа к странице не требуется повторного ввода пароля,но после закрытия браузера, при повторном желании входа необходимо ввести пароль.

Вариант 2 - имя и пароль (PHP)


Как защить файл именем и паролем без .htaccess? Один из вариантов защиты файла test1.php приведен ниже.

<?PHP

// include this file where you want to limit access.

$username = "test";
$password = "test";

function authenticate() {
Header( "WWW-authenticate: basic realm="Protected"");
Header( "HTTP/1.0 401 Unauthorized");
echo "Введите правильное имя и пароль ";
exit;
}

function CheckPwd($user,$pass) {
global $username,$password;
return ($user != $username || $pass != $password) ? false : true;
}

if(!isset($PHP_AUTH_USER)) {
authenticate();
}
elseif(!CheckPwd($PHP_AUTH_USER,$PHP_AUTH_PW)) {
authenticate();
}
?>

<html>
<head>
<title>OK</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body bgcolor="#FFFFFF" text="#000000">
Страница, которая защищена паролем здесь!
</body>
</html>

Как открыть (и закрыть) картинку в новом окне

Вариант 1 - HTML

Вариантов очень много, поэтому рассмотрим только один в качестве возможного примера.
Допустим, что мы имеем две картинки - маленькая (kl_bild.gif) на нашей странице, и большая (gr_bild.gif), которую мы хотим показать в отдельном окне после нажатия мышью на маленькую картину.

Вот самое просто решение - вставьте этот код (пример - файл bild.htm):

<a href="gr_bild.gif" width="400" height="174" target="_blank"><img src="kl_bild.gif" width="92" height="40" border="0" alt="Нажмите, что бы посмотреть большую картинку в новом окне"></a>

То же самое (пример) в виде законченного html файла. Файл и картинки должны находиться в одной папке, иначе необходимо откорректировать ссылки.

<html>
<head>
<title>Bild</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<a href="gr_bild.gif" width="400" height="174" target="_blank"><img src="kl_bild.gif" width="92" height="40" border="0" alt="Нажмите, что бы посмотреть большую картинку в новом окне"></a>
</body>
</html>

Вариант 2 - JavaScript

Возможна такая простая, но очень эффектная реализация (пример):

1. Создаём файл gr_bild.htm:

<html>
<head>
<title>Gross Bild</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="JavaScript"> <!--
function closeWin() {
self.close();
}
//--> </script>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<a href="javascript:closeWin()"><img src="gr_bild.gif" width="400" height="174" align="middle" alt="Нажмите, что бы закрыть это окно" border="0"></a> </body>
</html>

2. Создаём файл bild1.htm, и его открываем, нажимаем на маленькую картину, после чего любуемся открывшейся в новом окне большой (которая закрывается путём нажатия на саму картинку).
Конечно оба файла и картинки в данном примере доолжны лежать для корректной работы в одной папке, в противнеом случае необходимо откорректировать ссылки.

<html>
<head>
<title>Bild mit JavaScript</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="JavaScript">
<!--
function openWindow(theURL,winName,winWidth,winHeight,features) {
var w = (screen.width - winWidth)/2;
var h = (screen.height - winHeight)/2 - 50;
features = features+',width='+winWidth+',height='+winHeight +',top='+h+',left='+w;
window.open(theURL,winName,features);
}
//-->
</script>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<a href="javascript:openWindow('gr_bild.htm', 'test','450','220','toolbar=no,scrollbars=no')"><img src="kl_bild.gif" width="92" height="40" alt="alt" border="0"></a>
</body>
</html>

Каr показать актуальную дату на своей странице

Вариант 1 - короткая дата (PHP)

Очень просто решается следующим образом (файл date.php):

Сегодня <?php echo date("d.m.Y"); ?>

Вариант 2 - полная дата (PHP)

Вряд ли нужны более "навороченные" варианты (которые всё же иногда хочется). Это можно реализовать например так для русскоязычного варианта:

<?php

$weekday = array(
"воскресенье","понедельник","вторник","среда", "четверг","пятница","суббота"
);
$months = array(
"января","февраля","марта","апреля","мая", "июня","июля","августа","сентября","октября","ноября","декабря"
);
list($wday,$mday,$month,$year) = split("( )",date("w j n Y"));
$month -= 1;
$this_day = "$weekday[$wday], $mday $months[$month] $year";
echo ("Сегодня $this_day года");
?>

Как сделать стартовой не index.html а start.html (.htaccess)

Самый лучший путь (конечно не единственный) - создать файл .htaccess и добавить одну строчку:

DirectoryIndex start.html

Конечно если .htaccess уже есть, то эту строчку надо просто добавить.
Для создания .htaccess проще всего использовать стандартный блокнот, но сохранять файл с именем .htaccess при этом нужно как "все файлы".

Файл .htaccess должен лежать в той жепапке, в которой и start.htm (конечно имя файла можно изменить на любое другое)

Как поставить собственный простой счётчик? (PHP)

Здесь существует множество вариантов. Один из них предложен ниже:

<?php
$counter = 0;
$counter++;
$file = fopen(basename($PHP_SELF), "r+");
flock($file,LOCK_SH);
fputs($file, "<? $counter = $counter;");
flock($file,LOCK_UN);
print("Количество посетителей этой страницы - $counter");
?>

Действующие примеры, описанные в статье

Рабочие примеры (нажмите на имя файла, что бы посмотреть в действии):

1. Как защить страницу (файл) паролем без .htaccess?
Вариант 1 - только пароль - файл test.php

2. Как открыть (и закрыть) картинку в новом окне?
Вариант 1 - HTML - файл bild.htm (+kl_bild.gif+gr_bild.gif)
Вариант 2 - JavaScript - файл bild1.htm (+kl_bild.gif+gr_bild.gif+gr_bild.htm)

3. Каr показать актуальную дату на своей странице?
Вариант 1 - коротко - файл date.php
Вариант 2 - полная дата - файл date1.php

4. Как сделать стартовой не index.html а start.html? - примера нет

5. Как поставить собственный простой счётчик? - counter.php

Загрузка кодов примеров

Загрузить все примеры (в одном файле beispiel.zip, в том числе .htaccess)

 

 

В заключение хочу подчеркнуть, что я не могу дать какой либо гарантии работоспособности приведенных выше примеров. Можно использовать приведенные в статье коды путём их копирования или загрузить все упомянутые файлы (были проверены на MyServer 2.2 на работоспособность) как один архивный файл в Downloads.

Надеюсь, что эта короткая статья будет полезной.

Gv