СКРИПТЫ alt phpjshtmlcssblog
Мы переходим на новый движок - возможны сбои в работе сайта! подробнее...
ТЕГИ:
php (263)
js (133)
html (129)
css (96)
html tags (59)
form html (29)
php array (28)
edit text (25)
foto (23)
fonts (22)
forum (19)
board (17)
html book (17)
atom (17)
hosting (17)
Показать еще :
js jquery (16)
svg (16)
js method (16)
php file (15)
ruweb.net (15)
color (14)
jquery (14)
osclass (13)
htaccess (13)
table (12)
path (12)
online (11)
icon (11)
input (11)
php date (11)
notepad (11)
yandex (11)
url (10)
info (10)
php img (10)
jsphp (8)
form (8)
task (8)
php url (7)
comment (7)
ftp (6)
cookie (6)
js url (6)
bbcode (6)
click (6)
reg.ru (5)
value (5)
search (5)
js id (5)
adminka (5)
select (4)
js copy (4)
js form (4)
vk (3)
captcha (3)
js time (3)
vs code (3)
ukoz (2)
js post (2)
tag hr (2)
seo (2)
numbers (1)
ssl (1)
smile (1)
books (1)
header (1)

Система авторизации для админа DW-ADMIN v1.1.

Мы уже много раз делали разные входы для админа , но именно входа-то и не было!

Т.е. был какой-то полуфабрикат, в котором было фиг разобраться!

Вышло обновление : DW-ADMIN 2.1.

Сейчас - это просто и понятно! В чем смысл!?

Просто берем скрипт и бросаем в папку, после чего - просто входим в админку!

Где скачать систему авторизации для админа DW ADMIN v1.1.

После текста есть ссылка на скачивание данного архива! + отдельная кнопка в списке всех скриптов
Навигация по странице :
  1. Видео:
  2. Состав архива:
  3. Как работает система авторизации DW ADMIN v1.1
  4. Файл с данными системы авторизации config.php
  5. Файл входа системы авторизации index.php
  6. Файл выхода из системы авторизации админа logout.php
  7. Файл для хранения данных админа lp.dat
  8. Файл стилей style.css
  9. Тестовая страница test.php
  10. Файл для шифрования данных translit_1_4.php
  11. Скачать можно здесь


  1. Состав архива:

    Состав архива показывается вживую из папки... с помощью функции Scandir
    .htaccess
    Jura-Light.ttf
    back.png
    config.php
    index.php
    logout.php
    lp.dat
    style.css
    test.php
    translit_1_4.php


  2. Как работает система авторизации DW ADMIN v1.1

    О каких нюансах нужно сказать, кроме того, что сказано в видео!?

    test.php Вам нужен файл test.php, в котором продемонстрирована сущность входа в
    DW ADMIN

    Если вам требуется перевести права админа на стороннюю страницу, то:

    Сверху страницы запускаем сессию
    Вариант №1

    session_start();

    if($_SESSION[$name_login])

    {

    Сюда помещаем закрытые данные, скрипты, все, что должен увидеть только админ.

    }

    else

    {

    Сюда помещаем данные, которые будут видеть пользователь.

    }

    Вариант №2 Можно использовать без else

    session_start();

    if($_SESSION[$name_login])

    {

    Сюда помещаем закрытые данные, скрипты, все, что должен увидеть только админ.

    }


  3. Файл с данными системы авторизации config.php

    Если по какими-то причинам вам нужно изменить имя сессии админа, то вам нужна переменная $name_login,

    по умолчанию $name_login = dw_login, другими словами сессия админа выглядит таким образом:

    $_SESSION['dw_login']

    Вся страница

    <? session_start ();

    $name_login = 'dw_login';

    $DIR = __DIR__;

    $DIR_LP = $DIR.'/lp.dat';

    include($DIR.'/translit_1_4.php');

    $lp = @file_get_contents($DIR_LP);

    $name_site = $_SERVER["HTTP_HOST"];

    $domen = $_SERVER["HTTP_X_FORWARDED_PROTO"].'://'.$_SERVER["HTTP_HOST"];

    $real_page = $domen. parse_url( strip_tags($_SERVER['REQUEST_URI']) , PHP_URL_PATH);

    $dirname = dirname($_SERVER['REQUEST_URI']);

    $test = $domen . $dirname.'/test.php';

    $logout = $domen . $dirname.'/logout.php';

    $index = $domen . $dirname.'/index.php';


  4. Файл входа системы авторизации index.php

    Живой пример работы входа в админку DW ADMIN v1.1 - поскольку данные уже записаны, то данные для входа:
    TEST - логин
    Пример - секретное слово
    12345 - пароль

    Если по какими-то причинам вам нужно изменить значение передаваемое в сессию админа, то вам нужна переменная

    $login в строке(если выбрано секретное слово) номер 67 и строка 79 если выбрано скрыть форму.

    По умолчанию будет передавать значение, которое есть в переменной $login - это зашифрованные(файл translit_1_4.php) данные из поля login

    Весь файл

    <?

    include(__DIR__.'/config.php');

    if($lp)

    {

    $get_lp = explode('::', $lp);

    $salt = $get_lp[0];

    $login_get = $get_lp[1];

    $pass_get = $get_lp[2];

    }

    else

    {

    $salt = md5 ( date('d.m.Y')); // $salt = md5 ( date('01.10.2019'));

    }

    $login = ahead( trim( strip_tags( $_POST ['login'])));

    $pas = md5 ( trim( strip_tags( $_POST ['pas'])) .$salt);

    $pas2 = md5 ( trim( strip_tags( $_POST ['pas2'])) .$salt);

    $sekretnoe_slovo = trim ( strip_tags( $_POST ['sekretnoe_slovo']));

    $sekretnoe_slovo_2 = trim ( strip_tags( $_POST ['sekretnoe_slovo_2']));

    if($_POST['SECRET_OR_hide_form'])

    {

    $hide_form = strip_tags( $_POST['hide_form'] );

    if(($sekretnoe_slovo and $hide_form) or (!$sekretnoe_slovo and !$hide_form))

    {

    $rezult = 'Нужно выбрать одно поле!';

    }

    else

    {

    if($sekretnoe_slovo != $sekretnoe_slovo_2)

    {

    $rezult = 'Слова не равны!';

    }

    else

    {

    if($sekretnoe_slovo){$word = ahead($sekretnoe_slovo).'::secret_word';}else{$word = 'close_form';}

    $_SESSION['SECRET_OR_hide_form'] = $word;header("Refresh: 0");

    }

    }

    }

    if($_POST['do_lp'])

    {

    if($pas != $pas2 )

    {

    $rezult = 'пароли не равны!';

    }

    else

    {

    $data = $salt.'::'. $login.'::'.$pas.'::'.$_SESSION['SECRET_OR_hide_form'] ;

    $lp = @file_put_contents($DIR_LP, $data);

    if($lp){$rezult = 'данные записаны';header("Refresh: 1");}

    else{$rezult = 'не получилось записать -повторите опреацию!'; }

    }

    }

    if($_POST['avtorization'] and $lp)

    {

    if(substr_count($lp, 'secret_word')) { $get_secret = $get_lp[3];}

    if($get_secret)

    {

    if($pass_get == $pas and $login_get == $login and ahead($sekretnoe_slovo) == $get_secret)

    {

    $_SESSION[$name_login] = $login; //первый вариант сессии

    @SetCookie( $name_login , $login_get .'_'. $pass_get ,time()+(365*24*60*60), "/", $name_site , 0) ;

    }

    else

    {

    $rezult = 'Либо: 1.логин, 2.пароль, 3.секретное слово - не верно!';

    }

    }

    else

    {

    if($pass_get == $pas and $login_get == $login)

    {

    $_SESSION[$name_login] = $login; //второй вариант сессии

    @SetCookie( $name_login , $login_get .'_'. $pass_get ,time()+(365*24*60*60), "/", $name_site , 0) ;

    }

    else

    {

    $rezult = 'Либо: 1.логин, 2.пароль не верно!';

    }

    }

    }

    if(substr_count($lp, 'secret_word')) { $_SESSION['SECRET_OR_hide_form']= 1;}

    if(!$_SESSION['SECRET_OR_hide_form'])

    {

    $title = 'Нужно выбрать или или'; $var = 'SECRET_OR_hide_form';

    $ad_form = '<input type="password" name="sekretnoe_slovo" placeholder="cекретное слово">

    <input type="password" name="sekretnoe_slovo_2" placeholder="слово второй раз">

    <flex><input type="checkbox" name="hide_form" value="hide_form"> Скрыть форму</flex>';

    $height=300;

    }

    elseif(!$lp and $_SESSION['SECRET_OR_hide_form'])

    {

    $title = 'Создать пароль и логин'; $var = 'do_lp';

    $ad_form = '<input type="text" name="login" placeholder="логин" required>

    <input type="password" name="pas" placeholder="пароль" required>

    <input type="password" name="pas2" placeholder="повторите пароль" required> ';

    $height=300;

    }

    elseif($lp and !$_SESSION[$name_login])

    {

    $title = 'Авторизация'; $var = 'avtorization';

    $ad_form = '<input type="text" name="login" placeholder="логин" required>

    <input type="password" name="pas" placeholder="пароль" required> ';

    $height =220;

    if(!substr_count($lp, 'close_form')) { $ad_form .= '<input type="password" name="sekretnoe_slovo" placeholder="cекретное слово" required>'; $height=300;}

    }

    elseif($lp and $_SESSION[$name_login])

    {

    $rezult = 'вы авторизованы';

    header("Location: $test ");// header("Location: $domen ");

    }

    else

    {

    die('какого?');

    }

    if($_SESSION[$name_login] and !$_COOKIE[$name_login])

    {

    $get_lp = explode('::', $lp);

    $salt = $get_lp[0];

    $login_get = $get_lp[1];

    $pass_get = $get_lp[2];

    $do_COOK = @SetCookie($name_login,$login_get.'_'.$pass_get,time()+(365*24*60*60),"/",$name_site,0);

    if($do_COOK){header("Location: $test ");}

    }

    if($_COOKIE[$name_login] and !$_SESSION[$name_login])

    {

    $del_COOK = explode('_', $_COOKIE[$name_login]);

    $get_lp = explode('::', $lp);

    $salt = $get_lp[0];

    $login_get = $get_lp[1];

    $pass_get = $get_lp[2];

    if($login_get == $del_COOK[0] and $pass_get == $del_COOK[1]){$_SESSION[$name_login] = $login_get; header("Location: $test ");}

    }

    if(substr_count($lp, 'close_form') and $real_page == $index and !$_SESSION[$name_login] and !$_SESSION['SECRET_OR_hide_form']){ header("Location: $domen "); exit;}

    if($rezult){ $hideMe = ' style="display: block;" id="hideMe"';}

    ?>

    <!DOCTYPE html>

    <html lang="en">

    <head>

    <meta charset="UTF-8">

    <title><? echo $title; ?></title>

    <link rel="stylesheet" type="text/css" href="<? echo $domen . $dirname;?>/style.css">

    </head>

    <body>

    <rezult<? echo $hideMe; ?>><? echo $rezult; ?></rezult>

    <block>

    <form method="post" style="height:<?echo $height;?>px">

    <h2><? echo $title ; ?></h2>

    <? echo $ad_form ; ?>

    <button type="submit" name="<? echo $var;?>" value="<? echo $var;?>">отправить</button>

    </form>

    </block>

    </body>

    </html>


  5. Файл выхода из системы авторизации админа logout.php

    Файл logout.php предназначен для ликвидации всех сессий и кук, которые установлены.

    <? include(__DIR__.'/config.php');

    if(!$_SESSION[$name_login])

    {

    $info = 'Для того, чтобы выйти – надо сперва войти!';

    }

    else

    {

    session_destroy ();

    @SetCookie( $name_login , '' , time()+(365*24*60*60), "/", $name_site , 0) ;

    $info = 'Вы вышли';

    }

    ?>

    <html>

    <head>

    <title>Выход</title>

    <meta http-equiv='Refresh' content='3; URL=<? echo $index ;?>'>

    <meta charset="utf-8">

    <? echo $info;?>

    </body>

    </html>


  6. Файл для хранения данных админа lp.dat

    Файл lp.dat - создается в момент отправки данных на сервер. Сейчас данные отображаются. потому, что данные были созданы для того, чтобы вы смоли протестировать вход!

    Если вы выбирает не показывать форму при первом вводе данных, то если куки и сессия умрут, то вы никак войти не сможете... это сделано для безопасности! И... заходим на сревре удаляем данный файл lp.dat и возвращаемся на страницу авторизации!

    4aac041f8c05df149eb31f774a5c746a::ᵩᵚᵨᵩ::63f854dd4f76f09fb0907cfa52d95561::ᶾᶞᶑᶛᶎᶞ::secret_word


  7. Файл стилей style.css

    Файл стилей системы авторизации для админа нужны для отображения в браузере

    raund {

    display: block;

    border: 1px solid darkgrey;

    padding: 12px 0;

    margin: 10px 0;text-align: center;

    }input[type="checkbox"] {

    width: 33px;

    }raund span {

    border-bottom: 1px solid #bbbbbb;

    display: block;

    padding-bottom: 7px;

    margin-bottom: 10px;

    }flex {

    display: flex;

    TEXT-TRANSFORM: lowercase;

    PADDING-TOP: 10PX;

    }

    @font-face {

    font-family: Jura Light;

    src: url(Jura-Light.ttf);

    }

    body, input,button {

    font-family: 'Jura Light';

    font-size: 16px;

    }

    body::before {

    content: "";

    position: fixed;

    left: -50px;

    right: -50px;

    top: -10px;

    bottom: 0px;

    z-index: -1;

    background: url(back.png)center/cover no-repeat;

    filter: blur(10px);

    height: 110%;

    opacity: 0.5;

    }

    block {

    text-transform: uppercase;

    font-weight: 100;

    }

    form {

    position: absolute;

    display: inline-grid;

    top: 50%;

    left: 50%;

    width: 320px;

    border: 1px solid #cecece;

    padding: 50px;

    transform: translate(-50%,-50%); background-color: #fafafa;

    opacity: 0.7;

    }input {

    width: 319px;

    border-bottom: 1px solid #d6d6d6;

    border-top: 0px;

    border-left: 0px;

    border-right: 0px;

    outline: none; text-indent: 13px;

    }form h2 {

    font-family: 'Jura Light';

    font-size: 26px;

    text-align: center;

    border-bottom: 1px solid #d4d4d4;

    color: #7e7e7e;

    font-weight: 100;

    text-shadow: 4px 4px 4px #aaa;

    margin: 21px 0 10px 0;

    }button#submit {

    height: 46px;

    margin-top: 10px;

    cursor: pointer;

    padding: 10px;

    color: rgb(68,68,68);

    text-decoration: none;

    outline: none;

    border: 1px solid rgba(0,0,0,.1);

    border-radius: 2px;

    background: rgb(245,245,245) linear-gradient(#f4f4f4, #f1f1f1);

    transition: all .218s ease 0s;

    }button#submit:hover{

    color: rgb(24,24,24);

    border: 1px solid rgb(198,198,198);

    background: #f7f7f7 linear-gradient(#f7f7f7, #f1f1f1);

    box-shadow: 0 1px 2px rgba(0,0,0,.1);

    }

    rezult {

    z-index: 10000;

    display: none ;

    position: absolute;

    left: 50%;

    transform: translate(-50%);

    border: 1px solid #a9a9a9;

    padding: 17px;

    background: #fbfbfb;

    font-size: 15px;

    color: #868686;

    font-family: monospace;

    box-shadow: 0 0 10px rgba(194, 160, 195, 0.5);

    }

    #hideMe {

    -moz-animation: cssAnimation 0s ease-in 3s forwards;

    -webkit-animation: cssAnimation 0s ease-in 3s forwards;

    -o-animation: cssAnimation 0s ease-in 3s forwards;

    animation: cssAnimation 0s ease-in 3s forwards;

    -webkit-animation-fill-mode: forwards;

    animation-fill-mode: forwards;

    }

    @keyframes cssAnimation { to {top: -60px; }}@-webkit-keyframes cssAnimation { to {top: -40px; }}

    red{color:red;}fio{color:violet;}block {

    display: block;

    margin: auto;

    width: 600px;

    }login {

    display: block;

    padding: 17px;

    border: 1px solid #bfbfbf;

    margin: 10px 0;

    }a {

    color: #9e9e9e;

    text-decoration: none;

    border-bottom: 1px solid #7d7d7d;

    }a:hover {

    text-decoration: none;

    border-bottom: 1px solid #7d7d7d00;

    }about {

    background: #f9f9f9;

    display: block;

    padding: 20px;

    transform: translate(-50%,-50%);

    top: 50%;

    left: 50%;

    width: 600px;

    height: 450px;

    position: absolute;

    opacity: 0.8;

    }about2 {

    background: #f9f9f9;

    display: block;

    padding: 20px;

    transform: translate(-50%,-50%);

    top: 50%;

    left: 50%;

    width: 600px;

    height: 23px;

    position: absolute;

    opacity: 0.8;

    text-align: center;

    }h2 {

    font-family: 'Jura Light', sans-serif;

    text-shadow: 4px 4px 4px #aaa;

    text-align: center;

    color: #828282;

    text-transform: uppercase;

    border-bottom: 1px solid #d3d3d3;

    padding-bottom: 10px;

    }


  8. Тестовый файл test.php

    После авторизации вы попадете на эту страницу

    <? include(__DIR__.'/config.php');

    if($_SESSION[$name_login])

    {

    $info = '<h2>Здравствуйте '.back($_SESSION[$name_login]).'</h2>

    Эта страница - пример!<br>

    Если вы видите это текст, значит у вас активирована сессия $_SESSION['.$name_login.'] <br>

    Список существующих данных<br>

    имя <fio>$name_login</fio> = <red>'.$name_login.'</red> - файл config.php<br>

    сессия <fio>$_SESSION['.$name_login.']</fio> = <red>'.$_SESSION[$name_login].'</red><br>

    Данные в сесии зашифрованы файлом <fio>translit_1_4.php</fio><br>

    Расшифровка - <fio>back($_SESSION['.$name_login.'])</fio> = <red>'.back($_SESSION[$name_login]).'</red><br>

    куки <fio>$_COOKIE['.$name_login.']</fio> = <red>'.$_COOKIE[$name_login].'</red><br>

    Файл данных перменная <fio>$lp</fio> - файл config.php<br>

    Сейчас в нём записано = <red>'. str_replace('::', "::\n<br>", $lp) .'</red>

    ';

    }

    else

    {

    echo '<html> <head><link rel="stylesheet" type="text/css" href="'.$domen . $dirname.'/style.css"> <meta http-equiv="Refresh" content="2; URL='.$index .'"> </head> <body><about2>У вас недостаточно прав для просмотра данной информации!</about2></body> </html>';

    exit;

    }

    ?>

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>тестовая страница</title>

    <link rel="stylesheet" type="text/css" href="<? echo $domen . $dirname;?>/style.css">

    </head>

    <body>

    <about>

    <login><? if($_SESSION[$name_login]){?>

    <a href="<? echo $logout; ?>" target="_blank">Выйти</a> <?}else{?>

    <a href="<? echo $index; ?>" target="_blank">Войти</a><?}?>

    </login>

    <? echo $info; ?>

    <br>

    </about>

    </body>

    </html>


  9. Файл стилей translit_1_4.php

    Чтобы файлы не лежали в открытом виде мы их немного зашифровали - еще о шифровании

    <?

    $letters = array_unique(array('Ɇ','Ø','%','æ','ā','ɡ','ɸ','Ý','Þ','ʥ','ɤ','﬩','ɶ','Ȼ','ȵ','Ϣ','Ϡ','ŀ','ō','ä',

    'ƺ','Ħ','fi','╦','®','ǽ','≡','ȡ','Ȿ','ȣ','ɮ','ⱥ','ʁ','ʄ','ʆ','ʇ','ウ','¢','œ','ư','ƶ', 'ᖠ','ᖡ','ᖢ','ᖣ','ᚕ','ᚖ','ᚗ','ᚘ','ᚙ','ᚚ','᚛','᚜','ᴀ','ᴁ','ᴂ','ᴃ','ᴄ','ᴅ','ᴆ','ᴇ','ᴈ','ᴉ','ᴊ','ᴋ','ᴌ','ᴍ','ᴎ','ᴏ','ᴐ','ᴑ','ᴒ','ᴓ','ᴔ','ᴕ','ᴖ','ᴗ','ᴘ','ᴙ','ᴚ','ᴛ','ᴜ','ᴝ','ᴞ','ᴟ','ᴠ','ᴡ','ᴢ','ᴣ','ᴤ','ᴥ','ᴦ','ᴧ','ᴨ','ᴩ','ᴪ','ᴫ','ᴬ','ᴭ','ᴮ','ᴯ','ᴰ','ᴱ','ᴲ','ᴳ','ᴴ','ᴵ','ᴶ','ᴷ','ᴸ','ᴹ','ᴺ','ᴻ','ᴼ','ᴽ','ᴾ','ᴿ','ᵀ','ᵁ','ᵂ','ᵃ','ᵄ','ᵅ','ᵆ','ᵇ','ᵈ','ᵉ','ᵊ','ᵋ','ᵌ','ᵍ','ᵎ','ᵏ','ᵐ','ᵑ','ᵒ','ᵓ','ᵔ','ᵕ','ᵖ','ᵗ','ᵘ','ᵙ','ᵚ','ᵛ','ᵜ','ᵝ','ᵞ','ᵟ','ᵠ','ᵡ','ᵢ','ᵣ','ᵤ','ᵥ','ᵦ','ᵧ','ᵨ','ᵩ','ᵪ','ᵫ','ᵬ','ᵭ','ᵮ','ᵯ','ᵰ','ᵱ','ᵲ','ᵳ','ᵴ','ᵵ','ᵶ','ᵷ','ᵸ','ᵹ','ᵺ','ᵻ','ᵼ','ᵽ','ᵾ','ᵿ','ᶀ','ᶁ','ᶂ','ᶃ','ᶄ','ᶅ','ᶆ','ᶇ','ᶈ','ᶉ','ᶊ','ᶋ','ᶌ','ᶍ','ᶎ','ᶏ','ᶐ','ᶑ','ᶒ','ᶓ','ᶔ','ᶕ','ᶖ','ᶗ','ᶘ','ᶙ','ᶚ','ᶛ','ᶜ','ᶝ','ᶞ','ᶟ','ᶠ','ᶡ','ᶢ','ᶣ','ᶤ','ᶥ','ᶦ','ᶧ','ᶨ','ᶩ','ᶪ','ᶫ','ᶬ','ᶭ','ᶮ','ᶯ','ᶰ','ᶱ','ᶲ','ᶳ','ᶴ','ᶵ','ᶶ','ᶷ','ᶸ','ᶹ','ᶺ','ᶻ','ᶼ','ᶽ','ᶾ','ᶿ','ῲ','ῳ','ῴ','ῶ','ῷ','Ὸ','Ό','Ὼ','Ώ','ῼ'));

    $all_letter = array_unique(array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z', 'u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0','@','_','-','.','<','>','/',',','а','о','у','ы','э','я','е','ё','ю','и','б','в','г','д','й','ж','з','к','л','м','н','п','р','с','т','ф','х','ц','ч','ш','щ','ь','ъ','А','О','У','Ы','Э','Я','Е','Ё','Ю','И','Б','В','Г','Д','Й','Ж','З','К','Л','М','Н','П','Р','С','Т','Ф','Х','Ц','Ч','Ш','Щ','Ь','Ъ'));

    $count_letters = count($letters);

    $count_all_letter = count($all_letter);

    if($count_letters == $count_all_letter)

    {

    $new_massiv = array_combine($all_letter, $letters);

    }

    else

    {

    if($count_letters > count($all_letter))

    {

    $letters = array_splice($letters, $count_letters - $count_all_letter);

    }

    else

    {

    $all_letter = array_splice($all_letter, $count_all_letter - $count_letters);

    }

    }

    function ahead($str)

    {

    global $letters; global $all_letter;

    $tr = array_combine($all_letter, $letters);

    return strtr($str,$tr);

    }

    function back($str)

    { global $letters; global $all_letter;

    $tr = array_combine($letters, $all_letter);

    return strtr($str,$tr);

    }

    ?>

Пользуйтесь на здоровье! Не забудьте сказать спасибо
Название скрипта :DW Admin v1.1.
Ссылка на скачивание : Все скрипты на одной странице

Сообщение системы комментирования :

01.09.2021

Форма пока доступна только админу... скоро все заработает...надеюсь...

Последние комментарии :
Марат :
17.09.2021 28:02
Установка Яндекс поиск на сайт! Контент обновлен на 100%. Такое ощущение, что старый текст не я…
подробнее.
Марат :
07.09.2021 23:21
Частенько приходится исправлять ошибки и вот...как-то я обратил внимание на надпись: "нажми ctrl enter" на сайте и…
подробнее.
Марат :
23/07/2021 10:58
Сам офигеваю...
подробнее.
александр анатольевич таширев :
21/07/2021 02:47
прикольно
подробнее.
Марат :
17/07/2021 04:14
Рад, что помог! Приходите ещё!
подробнее.
Slomal Plintus :
16/07/2021 06:41
спасибо за ответ, очень помогло!
подробнее.