Создание простой системы регистрации пользователей на PHP и MySQL. Создание простой системы регистрации пользователей на PHP и MySQL Безбожный index php registration

Создание простой системы регистрации пользователей на PHP и MySQL. Создание простой системы регистрации пользователей на PHP и MySQL Безбожный index php registration

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

Этот урок рассчитан для начинающих изучение php где мы рассмотрим основы управления пользователями.

Шаг-1

Создадим в базе таблицу user в которой, мы будем хранить информацию о пользователях в таблице 4 поля

  • UserID
  • Username
  • Password
  • EmailAddress

Используйте SQL запрос ниже для создания базы данных

CREATE TABLE `users` ( `UserID` INT(25 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `Username` VARCHAR(65 ) NOT NULL , `Password` VARCHAR(32 ) NOT NULL , `EmailAddress` VARCHAR(255 ) NOT NULL ) ;

session_start () ; $dbhost = "localhost" ; // Имя хоста где расположен сервер mysql обычно localhost $dbname = "database" ; // Имя базы данных $dbuser = "username" ; // Имя пользователя базы данных $dbpass = "password" ; // Пароль для доступа к базе данных mysql_connect ($dbhost , $dbuser , $dbpass ) or die ("MySQL Error: " . mysql_error () ) ; mysql_select_db ($dbname ) or die ("MySQL Error: " . mysql_error () ) ; ?>

Этот файл отвечает за подключение к базе данных и будет выводиться на всех страницах. Рассмотрим строки кода более подробно

session_start();

Эта функция начинает сессию для нового пользователя, далее в ней мы будем хранить данные о ходе сессии, чтобы мы могли узнавать пользователей которые уже прошли идентификацию

mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL Error: " . mysql_error());

mysql_select_db($dbname) or die("MySQL Error: " . mysql_error());

Каждая из этих функций выполняет отдельные, но связанные задачи.

Функция mysql_connect выполняет соединение с сервером баз данных MySQL в качестве параметров в скобках указаны переменные которым присвоены соответствующие значения Хост, Имя пользователя, Пароль если данные не верные выдаст сообщение об ошибке

Функция mysql_select_db выбирает базу данных имя которой мы присвоили переменной $dbname , в случае если не удаётся найти базу выводит сообщение об ошибке

Шаг-2 Создаем файл index.php

Немало важным элементом на нашей странице – является первая строка PHP; эта строка будет включать файл, который мы создали выше (base.php ), и по существу позволим нам обращаться к чему-нибудь от того файла в нашем текущем файле. Мы сделаем это со следующей строкой кода PHP. Создайте файл, названный index.php, и поместите этот код наверху.

Создайте новый файл index.php и вставите в самое начало следующий код

Эта строка будет подключать фаил который мы создали выше (base.php), что позволит нам обращаться к коду того файла в нашем текущем файле.

Это осуществляет функция include()

Теперь мы займёмся созданием внешнего интерфейса, где пользователь будет вводить свои данные для регистрации, а если он уже зарегистрирован дать возможность изменения данных. Так как этот урок нацелен на PHP мы не будем разбираться с кодом HTML/CSS внешний вид сделаем потом когда мы создадим нашу таблицу стилей CSS, а пока просто вставим этот код после предыдущей строки.

Система управления пользователями <title> </span> <span><link rel="stylesheet" href="/style.css" type="text/css" /> </span> </head> <body> <span><div id="main">Сюда вставим php код </div> </p> <p>Теперь прежде чем пристать php программу разберём принцип её работы, что в той или иной ситуации надо выводит на экран:</p> <ol><li>Если пользователь уже вошёл то показываем страницу с различными опциями которые были скрыты до регистрации.</li> <li>Если пользователь еще не вошёл но прошёл регистрацию то показываем форму для ввода логина и пароля.</li> <li>Если 1 и 2 пункт не выполнен выводим форму для регистрации.</li> </ol><p>Выглядеть это будет так:</p> <p><?php </span> <span>if (! empty empty </span> <span>{ </span> <span>// Здесь выводиться скрытые опции </span> <span>} </span> <span>elseif (! empty empty ($_POST [ "password" ] ) ) </span> <span>{ </span> <span>// Выводим форму для входа </span> <span>} </span> <span>else </span> <span>{ </span> <span>// Выводим форму для регистрации </span> <span>} </span> <span>?> </p> <p>Когда пользователь проходит авторизацию на нашем сайте, информация сохраняется в сессии получить к ней доступ мы можем через глобальный массив <b>$ _SESSION </b>. С помощью функции empty и знака! в условии if мы проверяем имеет ли переменная значение, если переменная имеет значение выполняем код между фигурных скобок.</p> <p>В следующей строке всё работает тем же образом, только на этот раз с помощью <b>$ _POST </b> глобального массива. Этот массив содержит какие либо данные переданные через форму входа которую мы создадим позже. Последняя условие else выполниться в том случае если предыдущие условия не удовлетворяются.</p> <p>Теперь когда мы понимаем логику давайте вставим следующий код в файл index.php между тегами <div></p> <p><?php </span> <span>if (! empty ($_SESSION [ "LoggedIn" ] ) && ! empty ($_SESSION [ "Username" ] ) ) </span> <span>{ </span> <span>?> </span> <span> <h1>Пользовательская зона</h1> </span> <span> <p Спасибо что вошли! Вы <b><?= $_SESSION [ "Username" ] ?> </b> и Ваш адрес электронной почты <b><?= $_SESSION [ "EmailAddress" ] ?> </b>.</p> </span> <span><?php </span> <span>} </span> <span>elseif (! empty ($_POST [ "username" ] ) && ! empty ($_POST [ "password" ] ) ) </span> <span>{ </span> <span>$username = mysql_real_escape_string ($_POST [ "username" ] ) ; </span> <span>$password = md5 (mysql_real_escape_string </span> <span>$checklogin = mysql_query (</span> <span>if (mysql_num_rows ($checklogin ) == 1 ) </span> <span>{ </span> <span>$row = mysql_fetch_array ($checklogin ) ; </span> <span> echo <span>"<h1>Вы успешно вошли</h1>" </span>; </span> <span> echo <span>"<p>Сейчас вы будете переадресованы в ваш профиль.</p>" </span>; </span> <span> echo <span>"<meta content="=2;index.php" />" </span>; </span> <span>} </span> <span>else </span> <span>{ </span> <span> echo "<h1>Ошибка</h1>" ; </span> <span> echo <span>"<p>Ваша учётная запись не найдена или вы неправильно ввели логин или пароль. <a href=\" index.php\" >Попробовать снова </a>.</p>" </span>; </span> <span>} </span> <span>} </span> <span>else </span> <span>{ </span> <span>?> </span> <h1>Вход</h1> <span> <p>Хорошо что зашли Регистрация .</p> </span> <span> <form method="post" action="index.php" name="loginform" id="loginform"> </span> <fieldset> <span> <label for="username">Логин:</label><input type="text" name="username" id="username" /><br /> </span> <span> <label for="password">Пароль:</label><input type="password" name="password" id="password" /><br /> </span> <span> <input type="submit" name="login" id="login" value="Войти" /> </span> </fieldset> </form> <span><?php </span> <span>} </span> <span>?> </p> <p>В этом участке кода две функции,это<b>mysql _real _escape _string </b>которая экранирует специальные символы в строках для использования в базе данных тем самым обезопасит вас от нехорошихлюдей, и <b>md 5 </b> эта функция шифрует всё что передано ей в качестве параметра, в данном случае это пароль в глобальном массиве <b>$_POST </b>. Всё результаты работы функций мы присваиваем переменным<b>$username , <span>$password </span> </b>.</p> <p>$checklogin = mysql_query (<span>"SELECT * FROM users WHERE Username = "" </span>. $username . "" AND Password = "" . $password . """ ) ; </span> <span>if (mysql_num_rows ($checklogin ) == 1 ) </span> <span>{ </span> <span>$row = mysql_fetch_array ($checklogin ) ; </span> <span>$email = $row [ "EmailAddress" ] ; </span> <span>$_SESSION [ "Username" ] = $username ; </span> <span>$_SESSION [ "EmailAddress" ] = $email ; </span> <span>$_SESSION [ "LoggedIn" ] = 1 ; </p> <p>В этом участке кода нам надо проверить существует ли такой пользователь,для этого направляем запрос в базу данных, вытащить все поля из таблицы users где поля Username и Password равны переменным<b>$username и $password </b>. Результат запроса заносим в переменную<b>$checklogin </b> далее в условии <b>if </b> функция <b>mysql _num _row </b>s считает количество строк в запросе к базе и если равно 1 то есть пользователь найденвыполняем код в фигурных скобках, функция <b>mysql _fetch _array </b>преобразовывает результат запроса из <b>$checklogin </b>в ассоциативный массив, присваиваеваем значение поля EmailAddress переменной <b>$email </b>для использовать в дальнейшем.</p> <p>Заносим логин и email в текущею сессию после этого пользователь перенаправляется в свою учётную запись.</p> <p><b>Шаг-3 </b></p> <p>Теперь надо сделать страницу где пользователи будут регистрироваться.</p> <p>Создаем файл register.phpи скопируйте в него следующий код:</p> <p><?php include "base.php" ; ?> </span> <span><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> </span> <span><html xmlns="http://www.w3.org/1999/xhtml"> </span> <span><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </span> <span><title> Система управления пользователями - Регистрацияtitle> </span> <span><link rel="stylesheet" href="/style.css" type="text/css" /> </span> </head> <body> <div id="main"> <span><?php </span> <span>if (! empty ($_POST [ "username" ] ) && ! empty ($_POST [ "password" ] ) ) </span> <span>{ </span> <span>$username = mysql_real_escape_string ($_POST [ "username" ] ) ; </span> <span>$password = md5 (mysql_real_escape_string ($_POST [ "password" ] ) ) ; </span> <span>$email = mysql_real_escape_string ($_POST [ "email" ] ) ; </span> <span>$checkusername = mysql_query (<span>"SELECT * FROM users WHERE Username = "" </span>. $username . """ ) ; </span> <span>if (mysql_num_rows ($checkusername ) == 1 ) </span> <span>{ </span> <span> echo "<h1>Ошибка</h1>" ; </span> <span> echo <span>"<p>Такой логин уже занят p>" </span>; </span> <span>} </span> <span>else </span> <span>{ </span> <span>$registerquery = mysql_query (<span>"INSERT INTO users (Username, Password, EmailAddress) VALUES("" </span>. $username . "", "" . $password . "", "" . $email . "")" ) ; </span> <span>if ($registerquery ) </span> <span>{ </span> <span> echo "<h1>Отлично</h1>" ; </span> <span> echo <span>"<p>Ваша учетная запись была успешно создана. Вы можете<a href=\" index.php\" >Воити</a>.</p>" </span>; </span> <span>} </span> <span>else </span> <span>{ </span> <span> echo "<h1>Ошибка</h1>" ; </span> <span> echo <span>"<p>Попробуйте повторить регистрацию снова.</p>" </span>; </span> <span>} </span> <span>} </span> <span>} </span> <span>else </span> <span>{ </span> <span>?> </span> <span> <h1>Регистрация</h1> </span> <span> <form method="post" action="register.php" name="registerform" id="registerform"> </span> <fieldset> <span> <label for="username">Логин:</label><input type="text" name="username" id="username" /><br /> </span> <span> <label for="password">Пароль:</label><input type="password" name="password" id="password" /><br /> </span> <span> <label for="email">Email:</label><input type="text" name="email" id="email" /><br /> </span> <span> <input type="submit" name="register" id="register" value="Регистрация" /> </span> </fieldset> </form> <span><?php </span> <span>} </span> <span>?> </span> </div> </body> </html> </p> <p>В этом коде есть немного нового, запись в базу данных</p> <p>Это такой же запрос к базе данных который был раньше только теперь мы не получаеминформацию, а записываем командой INSERT , первым деломнадо указать в какие поля будет вноситься информация а в область VALUES информация которая будет записана в нашем случае это переменные со значением которые были переданы пользователем.Обратите особое внимание правила формирования запросов.</p> <p><b>Шаг-4 Завершение </b></p> <p>Для того чтобы пользователь мог выйти создайте файл logout.php и скопируйте в него код:</p> <p><?php include "base.php; <span>$_SESSION = array(); session_destroy(); ?> </span> <meta http-equiv=" refresh" content=" 0 ; index. php" </p> <p>В результате этого кода происходит сбросглобального массива $_SESSION и разрушение сессии, не забудьтев опция пользователя поставить ссылку на этот фаил.</p> <p>И наконец придадим стиль всему вышеописанному, создайте файл style.css и поместите туда следующий ниже код.</p> <p>* { </span> <span>margin : 0 ; </span> <span>padding : 0 ; </span> <span>} </span> body <span>{ </span> <span>} </span> a <span>{ </span> <span>color : #000 ; </span> <span>} </span> a<span>:hover , a:active , a:visited { </span> <span>text-decoration : none ; </span> <span>} </span> <span>#main { </span> <span>width : 780px ; </span> <span>margin : 0 auto ; </span> <span>margin-top : 50px ; </span> <span>padding : 10px ; </span> <span>background-color : #EEE ; </span> <span>} </span> form fieldset <span>{ border : 0 ; } </span> form fieldset p br <span>{ clear : left ; } </span> label <span>{ </span> <span>margin-top : 5px ; </span> <span>display : block ; </span> <span>width : 100px ; </span> <span>padding : 0 ; </span> <span>float : left ; </span> <span>} </span> input <span>{ </span> <span>font-family : Trebuchet MS; </span> <span>border : 1px solid #CCC ; </span> <span>margin-bottom : 5px ; </span> <span>background-color : #FFF ; </span> <span>padding : 2px ; </span> <span>} </span> input<span>:hover { </span> <span>border : 1px solid #222 ; </span> <span>background-color : #EEE ; </span> <span>} </p> <p>Вот в принципе и всё конечно приведенный в этом уроке пример далёк от совершенства но он и был рассчитан для начинающих чтобы дать понятие основ.</p> <p>Разберём некоторые части данного кода</p> <p>$username = mysql_real_escape_string($_POST["username"]); </p> <p>$password = md5(mysql_real_escape_string($_POST["password"])); </p> <p>В этом участке кода две функции,этоmysql _real _escape _string которая экранирует специальные символы в строках для использования в базе данных тем самым обезопасит вас от нехорошихлюдей, и md 5 эта функция шифрует всё что передано ей в качестве параметра, в данном случае это пароль в глобальном массиве $_POST . Всё результаты работы функций мы присваиваем переменным$username , <span>$password </span>.</p> <p>Over the past few years, web hosting has undergone a dramatic change. Web hosting services have changed the way websites perform. There are several kinds of services but today we will talk about the options that are available for reseller hosting providers. They are Linux Reseller Hosting and Windows Reseller Hosting. Before we understand the fundamental differences between the two, let’s find out what is reseller hosting. </p> <p><b>Reseller Hosting </b> </p> <p>In simple terms, reseller hosting is a form of web hosting where an account owner can use his dedicated hard drive space and allotted bandwidth for the purpose of reselling to the websites of third parties. Sometimes, a reseller can take a dedicated server from a hosting company (Linux or Windows) on rent and further let it out to third parties. </p> <p>Most website users either are with Linux or Windows. This has got to do with the uptime. Both platforms ensure that your website is up 99% of the time. </p> <p>1. Customization </p> <p>One of the main differences between a Linux Reseller Hostingplan and the one provided by Windows is about customization. While you can experiment with both the players in several ways, Linux is way more customizable than Windows. The latter has more features than its counterpart and that is why many developers and administrators find Linux very customer- friendly. </p> <p>2. Applications </p> <p>Different reseller hosting services have different applications. Linux and Windows both have their own array of applications but the latter has an edge when it comes to numbers and versatility. This has got to do with the open source nature of Linux. Any developer can upload his app on the Linux platform and this makes it an attractive hosting provider to millions of website owners. </p> <p>However, please note that if you are using Linux for web hosting but at the same time use the Windows OS, then some applications may not simply work. </p> <p>3. Stability </p> <p>While both the platforms are stable, Linux Reseller Hosting is more stable of the two. It being an open source platform, can work in several environments.This platform can be modified and developed every now and then. </p> <p>4. .NET compatibility </p> <p>It isn’t that Linux is superior to Windows in every possible way. When it comes to .NET compatibility, Windows steals the limelight. Web applications can be easily developed on a Windows hosting platform. </p> <p>5. Cost advantages </p> <p>Both the hosting platforms are affordable. But if you are feeling a cash crunch, then you should opt for Linux. It is free and that is why it is opted by so many developers and system administrators all around the world. </p> <p>6. Ease of setup </p> <p>Windows is easier to set up than its counterpart. All things said and done, Windows still retains its user-friendliness all these years. </p> <p>7. Security </p> <p>Opt for Linux reseller hosting because it is more secure than Windows. This holds true especially for people running their E-commerce businesses. </p> <p><b>Conclusion </b> </p> <p>Choosing between the two </span><span> will depend on your requirement and the cost flexibility. Both the hosting services have unique advantages. While Windows is easy to set up, Linux is cost effective, secure and is more versatile. </p> <br><h2></h2> <p><img src='https://i0.wp.com/1.bp.blogspot.com/-mxibWQ7h54A/W3G4bcnqRjI/AAAAAAAABo0/h3EEBVFXm5o5PzX6d-ZRtZ9z9e4CkOd7ACLcBGAs/s400/homepge.JPG' width="100%" loading=lazy></p> <br> Back in March of this year, I had a very bad experience with a media company refusing to pay me and answer my emails. They still owe me thousands of dollars and the feeling of rage I have permeates everyday. Turns out I am not alone though, and hundreds of other website owners are in the same boat. It"s sort of par for the course with digital advertising.<p>In all honesty, I"ve had this blog for a long time and I have bounced around different ad networks in the past. After removing the ad units from that company who stiffed me, I was back to square one. I should also note that I never quite liked Googles AdSense product, only because it feels like the "bottom of the barrel" of display ads. Not from a quality perspective, but from a revenue one.</p><p>From what I understand, you want Google advertising on your site, but you also want other big companies and agencies doing it as well. That way you maximize the demand and revenue.</p><p>After my negative experience I got recommend a company called Newor Media . And if I"m honest I wasn"t sold at first mostly because I couldn"t find much information on them. I did find a couple decent reviews on other sites, and after talking to someone there, I decided to give it a try. I will say that they are SUPER helpful. Every network I have ever worked with has been pretty short with me in terms of answers and getting going. They answered every question and it was a really encouraging process.</p><p>I"ve been running the ads for a few months and the earnings are about in line with what I was making with the other company. So I can"t really say if they are that much better than others, but where they do stand out is a point that I really want to make. The communication with them is unlike any other network I"ve ever worked it. Here is a case where they really are different:</p><p>They pushed the first payment to me on time with Paypal. But because I"m not in the U.S (and this happens for everyone I think), I got a fee taken out from Paypal. I emailed my representative about it, asking if there was a way to avoid that in the future.</p><p>They said that they couldn"t avoid the fee,<b> but that they would REIMBURSE ALL FEES.... INCLUDING THE MOST RECENT PAYMENT! Not only that, but the reimbursement payment was received within 10 MINUTES! </b> When have you ever been able to make a request like that without having to be forwarded to the "finance department" to then never be responded to.</p><p>The bottom line is that I love this company. I might be able to make more somewhere else, I"m not really sure, but they have a publisher for life with me. I"m not a huge site and I don"t generate a ton of income, but I feel like a very important client when I talk to them. It"s genuinely a breathe of fresh air in an industry that is ripe with fraud and non-responsiveness. </p> <h2></h2> <p>Microcomputers that have been created by the Raspberry Pi Foundation in 2012 have been hugely successful in sparking levels of creativity in young children and this UK based company began offering learn-to-code startup programs like pi-top an Kano. There is now a new startup that is making use of Pi electronics, and the device is known as Pip, a handheld console that offers a touchscreen, multiple ports, control buttons and speakers. The idea behind the device is to engage younger individuals with a game device that is retro but will also offer a code learning experience through a web based platform.<br></p><p><img src='https://i0.wp.com/1.bp.blogspot.com/-SIlr3BAOEwQ/WjQdkeZ01-I/AAAAAAAABVk/sG-kuxu_5XoMezHKS9W-VsHsVTrZ5hK9wCLcBGAs/s320/introducing-kids-to-coding-with-pip1.jpg' height="229" width="320" loading=lazy></p><p>The amazing software platform being offered with Pip will offer the chance to begin coding in Python, HTML/CSS, JavaScript, Lua and PHP. The device offers step-by-step tutorials to get children started with coding and allows them to even make LEDs flash. While Pip is still a prototype, it will surely be a huge hit in the industry and will engage children who have an interest in coding and will provide them the education and resources needed to begin coding at a young age.</p><h2>Future of Coding</h2> Coding has a great future, and even if children will not be using coding as a career, they can benefit from learning how to code with this new device that makes it easier than ever. With Pip, even the youngest coding enthusiasts will learn different languages and will be well on their way to creating their own codes, own games, own apps and more. It is the future of the electronic era and Pip allows the basic building blocks of coding to be mastered.<br> Computer science has become an important part of education and with devices like the new Pip , children can start to enhance their education at home while having fun. Coding goes far beyond simply creating websites or software. It can be used to enhance safety in a city, to help with research in the medical field and much more. Since we now live in a world that is dominated by software, coding is the future and it is important for all children to at least have a basic understanding of how it works, even if they never make use of these skills as a career. In terms of the future, coding will be a critical component of daily life. It will be the language of the world and not knowing computers or how they work can pose challenges that are just as difficult to overcome as illiteracy.<br> Coding will also provide major changes in the gaming world, especially when it comes to online gaming, including the access of online casinos. To see just how coding has already enhanced the gaming world, take a look at a few top rated casino sites that rely on coding. Take a quick peek to check it out and see just how coding can present realistic environments online.<h2>How Pip Engages Children</h2> When it comes to the opportunity to learn coding, children have many options. There are a number of devices and hardware gizmos that can be purchased, but Pip takes a different approach with their device. The portability of the device and the touchscreen offer an advantage to other coding devices that are on the market. Pip will be fully compatible with electronic components in addition to the Raspberry Pi HAT system. The device uses standard languages and has basic tools and is a perfect device for any beginner coder. The goal is to remove any barriers between an idea and creation and make tools immediately available for use. One of the other great advantages of Pip is that it uses a SD card, so it can be used as a desktop computer as well when it is connected to a monitor and mouse.<br> The Pip device would help kids and interested coder novice with an enthusiasm into learning and practicing coding. By offering a combination of task completion and tinkering to solve problems, the device will certainly engage the younger generation. The device then allows these young coders to move to more advanced levels of coding in different languages like JavaScript and HTML/CSS. Since the device replicates a gaming console, it will immediately capture the attention of children and will engage them to learn about coding at a young age. It also comes with some preloaded games to retain attention, such as Pac-Man and Minecraft. <h2>Innovations to Come</h2> Future innovation largely depends on a child’s current ability to code and their overall understanding of the process. As children learn to code at an early age by using such devices as the new Pip, they will gain the skills and knowledge to create amazing things in the future. This could be the introduction of new games or apps or even ideas that can come to life to help with medical research and treatments. There are endless possibilities. Since our future will be controlled by software and computers, starting young is the best way to go, which is why the new Pip is geared towards the young crowd. By offering a console device that can play games while teaching coding skills, young members of society are well on their way to being the creators of software in the future that will change all our lives. This is just the beginning, but it is something that millions of children all over the world are starting to learn and master. With the use of devices like Pip, coding basics are covered and children will quickly learn the different coding languages that can lead down amazing paths as they enter adulthood. <p>Процесс создания системы регистрации – это довольно большой объем работы. Вам нужно написать код, который бы перепроверял валидность email-адресов, высылал email-письма с подтверждением, предлагал возможность восстановить пароль, хранил бы пароли в безопасном месте, проверял формы ввода и многое другое. Даже когда вы все это сделаете, пользователи будут регистрироваться неохотно, так как даже самая минимальная регистрация требует их активности.</p><p>В сегодняшнем руководстве мы займемся разработкой простой системы регистрации, с использованием которой вам не понадобятся никакие пароли! В результаты мы получим, систему, которую можно будет без труда изменить или встроить в существующий PHP-сайт. Если вам интересно, продолжайте чтение.</p><p><b>PHP </b> </p><p>Теперь мы готовы к тому, чтобы заняться кодом PHP. Основной функционал системы регистрации предоставляется классом User, который вы можете видеть ниже. Класс использует (), представляющую собой минималистскую библиотеку для работы с базами данных. Класс User отвечает за доступ к базам данных, генерирование token-ов для логина и их валидации. Он представляет нам простой интерфейс, который можно без труда включить в систему регистрации на ваших сайтах, основанных на PHP.</p><p><b>User.class.php </b></p><p> // Private ORM instance<br> private $orm;</p><p> /**<br> * Find a user by a token string. Only valid tokens are taken into<br> * consideration. A token is valid for 10 minutes after it has been generated.<br> * @param string $token The token to search for<br> * @return User<br> */</p><p>Public static function findByToken($token){</p><p> // find it in the database and make sure the timestamp is correct</p><p> <br> ->where("token", $token)<br> ->where_raw("token_validity > NOW()")<br> ->find_one();</p><p>If(!$result){<br> return false;<br> }</p><p>Return new User($result);<br> }</p><p> /**<br> * Either login or register a user.<br> * @return User<br> */</p><p>Public static function loginOrRegister($email){</p><p> // If such a user already exists, return it</p><p>If(User::exists($email)){<br> return new User($email);<br> }</p><p> // Otherwise, create it and return it</p><p>Return User::create($email);<br> }</p><p> /**<br> * Create a new user and save it to the database<br> * @param string $email The user"s email address<br> * @return User<br> */</p><p>Private static function create($email){</p><p> // Write a new user to the database and return it</p><p> $result = ORM::for_table("reg_users")->create();<br> $result->email = $email;<br> $result->save();</p><p>Return new User($result);<br> }</p><p> /**<br> * Check whether such a user exists in the database and return a boolean.<br> * @param string $email The user"s email address<br> * @return boolean<br> */</p><p>Public static function exists($email){</p><p> // Does the user exist in the database?<br> $result = ORM::for_table("reg_users")<br> ->where("email", $email)<br> ->count();</p><p>Return $result == 1;<br> }</p><p> /**<br> * Create a new user object<br> * @param $param ORM instance, id, email or null<br> * @return User<br> */</p><p>Public function __construct($param = null){</p><p>If($param instanceof ORM){</p><p> // An ORM instance was passed<br> $this->orm = $param;<br> }<br> else if(is_string($param)){</p><p> // An email was passed<br> $this-><br> ->where("email", $param)<br> ->find_one();<br> }<br> else{</p><p>If(is_numeric($param)){<br> // A user id was passed as a parameter<br> $id = $param;<br> }<br> else if(isset($_SESSION["loginid"])){</p><p> // No user ID was passed, look into the sesion<br> $id = $_SESSION["loginid"];<br> }</p><p> $this->orm = ORM::for_table("reg_users")<br> ->where("id", $id)<br> ->find_one();<br> }</p><p> /**<br> * Generates a new SHA1 login token, writes it to the database and returns it.<br> * @return string<br> */</p><p>Public function generateToken(){<br> // generate a token for the logged in user. Save it to the database.</p><p> $token = sha1($this->email.time().rand(0, 1000000));</p><p> // Save the token to the database, <br> // and mark it as valid for the next 10 minutes only</p><p> $this->orm->set("token", $token);<br> $this->orm->set_expr("token_validity", "ADDTIME(NOW(),"0:10")");<br> $this->orm->save();</p><p>Return $token;<br> }</p><p> /**<br> * Login this user<br> * @return void<br> */</p><p>Public function login(){</p><p> // Mark the user as logged in<br> $_SESSION["loginid"] = $this->orm->id;</p><p> // Update the last_login db field<br> $this->orm->set_expr("last_login", "NOW()");<br> $this->orm->save();<br> }</p><p> /**<br> * Destroy the session and logout the user.<br> * @return void<br> */</p><p>Public function logout(){<br> $_SESSION = array();<br> unset($_SESSION);<br> }</p><p> /**<br> * Check whether the user is logged in.<br> * @return boolean<br> */</p><p>Public function loggedIn(){<br> return isset($this->orm->id) && $_SESSION["loginid"] == $this->orm->id;<br> }</p><p> /**<br> * Check whether the user is an administrator<br> * @return boolean<br> */</p><p>Public function isAdmin(){<br> return $this->rank() == "administrator";<br> }</p><p> /**<br> * Find the type of user. It can be either admin or regular.<br> * @return string<br> */</p><p>Public function rank(){<br> if($this->orm->rank == 1){<br> return "administrator";<br> }</p><p>Return "regular";<br> }</p><p> /**<br> * Magic method for accessing the elements of the private<br> * $orm instance as properties of the user object<br> * @param string $key The accessed property"s name <br> * @return mixed<br> */</p><p>Public function __get($key){<br> if(isset($this->orm->$key)){<br> return $this->orm->$key;<br> }</p><p>Return null;<br> }<br>} <br>Token-ы генерируются при помощи алгоритма , и сохраняются в базу данных. Мы используем из MySQL для установки значения в колонку token_validity, равного 10 минутам. При валидации token, мы сообщаем движку, что нам нужен token, поле token_validity пока еще не истекло. Таким образом мы ограничиваем время, в течение которого token будет валиден.</p><p>Обратите внимание на то, что мы используем волшебный метод __get () в конце документа, чтобы получить доступ к свойствам объекта user. Это позволяет нам осуществить доступ к данным, которые хранятся в базе данных в виде свойств: $user->email, $user->token. Для примера давайте посмотрим, как мы можем использовать этот класс в следующем фрагменте кода:</p><p><img src='https://i1.wp.com/coolwebmasters.com/uploads/posts/2013-08/thumbs/1377077855_simple-registration-system-05.jpg' width="100%" loading=lazy></p><br>Еще один файл, в котором хранится необходимый функционал, это functions.php. Там у нас есть несколько вспомогательных функций, которые позволяют нам сохранить остальной код более опрятным.<p><b>Functions.php </b></p><p>Function send_email($from, $to, $subject, $message){</p><p> // Helper function for sending email</p><p> $headers = "MIME-Version: 1.0" . "\r\n";<br> $headers .= "Content-type: text/plain; charset=utf-8" . "\r\n";<br> $headers .= "From: ".$from . "\r\n";</p><p>Return mail($to, $subject, $message, $headers);<br>}</p><p>function get_page_url(){</p><p> // Find out the URL of a PHP file</p><p> $url = "http".(empty($_SERVER["HTTPS"])?"":"s")."://".$_SERVER["SERVER_NAME"];</p><p>If(isset($_SERVER["REQUEST_URI"]) && $_SERVER["REQUEST_URI"] != ""){<br> $url.= $_SERVER["REQUEST_URI"];<br> }<br> else{<br> $url.= $_SERVER["PATH_INFO"];<br> }</p><p>Return $url;<br>}</p><p>function rate_limit($ip, $limit_hour = 20, $limit_10_min = 10){</p><p> // The number of login attempts for the last hour by this IP address</p><p> $count_hour = ORM::for_table("reg_login_attempt")<br> -><br> ->where_raw("ts > SUBTIME(NOW(),"1:00")")<br> ->count();</p><p> // The number of login attempts for the last 10 minutes by this IP address</p><p> $count_10_min = ORM::for_table("reg_login_attempt")<br> ->where("ip", sprintf("%u", ip2long($ip)))<br> ->where_raw("ts > SUBTIME(NOW(),"0:10")")<br> ->count();</p><p>If($count_hour > $limit_hour || $count_10_min > $limit_10_min){<br> throw new Exception("Too many login attempts!");<br> }<br>}</p><p>function rate_limit_tick($ip, $email){</p><p> // Create a new record in the login attempt table</p><p> $login_attempt = ORM::for_table("reg_login_attempt")->create();</p><p> $login_attempt->email = $email;<br> $login_attempt->ip = sprintf("%u", ip2long($ip));</p><p> $login_attempt->save();<br>}</p><p>function redirect($url){<br> header("Location: $url");<br> exit;<br>} <br>Функции rate_limit и rate_limit_tick позволяют нам ограничивать число попыток авторизации на определенный промежуток времени. Попытки авторизации записываются в базу данных reg_login_attempt. Эти функции запускаются при проведении подтверждения формы авторизации, как можно видеть в следующем фрагменте кода.</p><p>Нижеприведенный код был взят из index.php, и он отвечает за подтверждение формы авторизации. Он возвращает JSON-ответ, который управляется кодом jQuery, который мы видели в assets/js/script.js.</p><p><b>index.php </b></p><p>If(!empty($_POST) && isset($_SERVER["HTTP_X_REQUESTED_WITH"])){</p><p> // Output a JSON header</p><p>Header("Content-type: application/json");</p><p> // Is the email address valid?</p><p>If(!isset($_POST["email"]) || !filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)){<br> throw new Exception("Please enter a valid email.");<br> }</p><p> // This will throw an exception if the person is above <br> // the allowed login attempt limits (see functions.php for more):<br> rate_limit($_SERVER["REMOTE_ADDR"]);</p><p> // Record this login attempt<br> rate_limit_tick($_SERVER["REMOTE_ADDR"], $_POST["email"]);</p><p> // Send the message to the user</p><p> $message = "";<br> $email = $_POST["email"];<br> $subject = "Your Login Link";</p><p>If(!User::exists($email)){<br> $subject = "Thank You For Registering!";<br> $message = "Thank you for registering at our site!\n\n";<br> }</p><p> // Attempt to login or register the person<br> $user = User::loginOrRegister($_POST["email"]);</p><p> $message.= "You can login from this URL:\n";<br> $message.= get_page_url()."?tkn=".$user->generateToken()."\n\n";</p><p> $message.= "The link is going expire automatically after 10 minutes.";</p><p> $result = send_email($fromEmail, $_POST["email"], $subject, $message);</p><p>If(!$result){<br> throw new Exception("There was an error sending your email. Please try again.");<br> }</p><p>Die(json_encode(array(<br> "message" => "Thank you! We\"ve sent a link to your inbox. Check your spam folder as well."<br>)));<br> }<br>}<br>catch(Exception $e){</p><p>Die(json_encode(array(<br> "error"=>1,<br> "message" => $e->getMessage()<br>)));<br>} <br>При успешной авторизации или регистрации, вышеприведенный код отсылает email человеку с ссылкой для авторизации. Token (лексема) становится доступной в качестве $_GET-переменной "tkn" ввиду сгенерированного URL.</p><p><b>index.php </b></p><p>If(isset($_GET["tkn"])){</p><p> // Is this a valid login token?<br> $user = User::findByToken($_GET["tkn"]);</p><p> // Yes! Login the user and redirect to the protected page.</p><p> $user->login();<br> redirect("protected.php");<br> }</p><p> // Invalid token. Redirect back to the login form.<br> redirect("index.php");<br>} <br>Запуск $user->login() создаст необходимые переменные для сессии, что позволит пользователю оставаться авторизованным при последующих входах.</p><p>Выход из системы реализуется примерно таким же образом:</p><p><b>Index.php </b></p><p>If(isset($_GET["logout"])){</p><p> $user = new User();</p><p>If($user->loggedIn()){<br> $user->logout();<br> }</p><p>Redirect("index.php");<br>} <br>В конце кода мы снова перенаправляем пользователя на index.php, поэтому параметр?logout=1 в URL исключается.</p><p>Нашему файлу index.php также потребуется защита – мы не хотим, чтобы уже авторизованные пользователи видели форму. Для этого мы используем метод $user->loggedIn():</p><p><b>Index.php </b></p><p> $user = new User();</p><p>if($user->loggedIn()){<br> redirect("protected.php");<br>} <br>Наконец, давайте посмотрим, как можно защитить страницу вашего сайта, и сделать ее доступной только после авторизации:</p><p><b>protected.php </b></p><p> // To protect any php page on your site, include main.php<br>// and create a new User object. It"s that simple!</p><p>require_once "includes/main.php";</p><p>$user = new User();</p><p>if(!$user->loggedIn()){<br> redirect("index.php");<br>} <br>После этой проверки вы можете быть уверены в том, что пользователь успешно авторизовался. У вас также будет доступ к данным, которые хранятся в базе данных в качестве свойств объекта $user. Чтобы вывести email пользователя и их ранг, воспользуйтесь следующим кодом:</p><p>Echo "Your email: ".$user->email;<br>echo "Your rank: ".$user->rank(); <br>Здесь rank() – это метод, так как колонка rank в базе данных обычно содержит числа (0 для обычных пользователей и 1 для администраторов), и нам нужно преобразовать это все в названия рангов, что реализуется при помощи данного метода. Чтобы преобразовать обычного пользователя в администратора, просто отредактируйте запись о пользователе в phpmyadmin (либо в любой другой программе по работе с базами данных). Будучи администратором, пользователь не будет наделен какими-то особыми возможностями. Вы сами в праве выбирать, каким правами наделять администраторов.</p><p><b>Готово! </b> </p><p>На этом наша простенькая система регистрации готова! Вы можете использовать ее на уже существующем PHP-сайте, либо модернизировать ее, придерживаясь собственных требований.</p> <p>Laravel requires Composer to manage the project dependencies. So before installing Laravel, make sure you have Composer installed on your system. In case you are hearing about Composer for the first time, it"s a dependency management tool for php similar to node"s npm.</p> <p>To install Composer on your machine, check this post:</p> <h2>Installing Laravel on Windows:</h2> <p>Follow the below steps to install laravel on windows machine. No matter you have xampp/wamp stack, it works for both. On WAMP, make sure to install laravel on "www" folder and on XAMPP, obviously the "htdocs".</p> <p>STEP-1) Open "htdocs" folder on XAMPP, hold SHIFT key and right click on the folder, and choose "open command window here". Alternatively, you can open command window and change directory to "xampp/htdocs".</p> <p>STEP-2) Enter the following command.</p><p>Composer create-project laravel/laravel my_laravel_site --prefer-dist </p><p>Here "my_laravel_site" is the folder name where laravel files will be installed. Change this to your liking.</p> <p>STEP-3) Now it"s time to be patient as laravel installation is going to take some time.</p> <p>STEP-4) Once installed, change directory to "my_laravel_site" (cd "my_laravel_site") on the command prompt and enter the below command.</p><p>Php artisan serve </p><p>STEP-5) This will show a message something like, "Laravel development server started:" along with an url.</p> <p>STEP-6) Copy and paste the url on the browser. If things go right, you"d see the laravel welcome screen.</p> <p><img src='https://i0.wp.com/1.bp.blogspot.com/-b3IghGnHfwk/WyWBUq3WQZI/AAAAAAAACLQ/ycT3SgKccbgEpQnr5h1rth5uExaeYA7iACLcBGAs/s1600/laravel-welcome-screen.jpg' width="100%" loading=lazy></p> <p>STEP-7) Done! You have successfully installed laravel on windows machine and ready to go with.</p> <h3>Setting Application Key:</h3> <p>Laravel requires little configuration after installation. It requires you to set the application key. This is a random string of 32 characters long used for encrypting session and other sensitive data. Usually this will be set automatically when you install laravel via composer or laravel installer.</p> <p>In case it"s not set, you have to do it manually. First make sure to rename the ".env.example" file to ".env" on your application root. Then open command prompt and change to the laravel project folder. Now run the below command to generate the key.</p><p>Php artisan key:generate </p><p>Copy this generated key to the APP_KEY variable on ".env" file. Save and you are done.</p> <h3>Installing Specific Laravel Version:</h3> <p>The above given method will make composer to download and install the latest version of laravel. If you want to install earlier versions of laravel on your machine, make sure to include the respective version number on create-project command.</p><p>Composer create-project laravel/laravel=5.4 your-project-name --prefer-dist <b>Read Also: </b> </p><p>Likewise you can <i>easily install laravel using composer on windows </i>. I hope you find this tutorial useful. Please share it on your social circle if you like it.</p> <p>Вполне вероятно, что Вы уже слышали про <b>директиву register_globals </b> и знаете, что она делает. Если кто-то этого не знает, то Вы узнаете об этом из данной статьи, однако, главная задача этой статьи доказать, что <b>директиву register_globals </b> лучше всегда держать отключённой в целях безопасности.</p> <p>Позволяет регистрировать переменные, полученные из <b>GET-запроса </b>. Допустим, был такой запрос: <b>index.php?a=15 </b>. Таким образом, безусловно, создаётся переменная <b>$_GET["a"] </b> и переменная <b>a </b>. Вот создание переменной <b>a </b> и произошло в результате <b>включённой директивы register_globals </b>.</p> <p>Теперь о том, почему данную директиву надо всегда держать отключённой. Предположим, что Вы делаете авторизацию пользователя, и Вы написали такой код:</p><p> <?php<br> if (($_POST["login"] == "Admin") && ($_POST["password"] == "123456")) $check_user = true;<br> if ($check_user) echo "Авторизация прошла успешно";<br> else echo "Ошибка авторизации";<br> ?> </p><p>Теперь если файл называется, например, <b>auth.php </b>, то, обратившись к нему следующим образом: <b>auth.php?check_user=1 </b>, то получится успешная авторизация, независимо от того, какие логин и пароль были отправлены и были ли отправлены вообще.</p> <p>Безусловно, данный пример является слегка мистическим, поскольку так никто не пишет (хотя бы из-за отсутствия <b>else $check_user = false; </b>), однако, данный пример наглядно показывает, к чему может привести <b>включённая директива register_globals </b>.</p> <p>Теперь о том, как же <b>отключить директиву register_globals </b>. Для этого надо добавить в файл <b>.htaccess </b> всего одну строчку:</p><p>Php_value register_globals 0 </p><p>Есть небольшая вероятность, что если директива была раньше включена, то у Вас может что-нибудь сломаться, поэтому всё внимательно проверьте и устраните все возникшие ошибки, поскольку безопасность того действительно стоит.</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy>");</script> <div style="font-size: 12px; color: #888888;"> просмотров</div> </div> <style> .share { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 10px; display: inline-block; padding: 10px 15px; margin: 5px; } .share.ok { background: #eb722e; color: #fff; } .share.vk { background: #6287ae; color: #fff; } .share.fb { background: #3b5998; color: #fff; } </style> <br> <div align="center"> <a class="share fb" href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fplupras.ru%2Fmicrosoft-office%2Fsozdanie-prostoi-sistemy-registracii-polzovatelei-na-php-i-mysql-sozdanie%2F" target="_blank">Сохранить в Facebook</a> <a class="share ok" href="http://www.odnoklassniki.ru/dk?st.cmd=addShare&st.s=1&st._surl=https%3A%2F%2Fplupras.ru%2Fmicrosoft-office%2Fsozdanie-prostoi-sistemy-registracii-polzovatelei-na-php-i-mysql-sozdanie%2F" target="_blank">Сохранить в Одноклассники</a> Сохранить ВКонтакте </div> <br> </div> </article> </div> <ul class="default-wp-page clearfix"> <li class="previous"><a href="/download-dll/kak-obmenyat-bonusy-za-dostizheniya-na-oki-gde-v-odnoklassnikah/" rel="prev"><span class="meta-nav">Где в "Одноклассниках" раздел "Награды"?</span> Пользоваться социальной сетью Одноклассники можно абсолютно бесплатно, однако некоторые...</a></li> <li class="next"><a href="/windows-7/top-10-programm-dlya-sozdaniya-igr-kak-sozdat-igru-na-android-s-nulya-osvaivaem/" rel="next">Как создать игру на Андроид с нуля — осваиваем азы гейм девелопмента <span class="meta-nav">→</span></a></li> </ul> <h4 class="related-posts-main-title"><i class="fa fa-thumbs-up"></i><span>Вам также может понравиться</span></h4> <div class="related-posts clearfix"> <div class="single-related-posts"> <div class="related-posts-thumbnail"> <a href="/android-and-ios/poteryannye-veshchi-prichiny-sposoby-poiska-runy-dlya-poiska-raboty-runy/" title="Руны для поиска работы Руны чтобы быстро документ найти пропавший"> <img width="390" height="205" src="/uploads/eeec6643acaef6b68fc71307abc7e947.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Руны для поиска работы Руны чтобы быстро документ найти пропавший" / loading=lazy> </a> </div> <div class="article-content"> <h3 class="entry-title"> <a href="/android-and-ios/poteryannye-veshchi-prichiny-sposoby-poiska-runy-dlya-poiska-raboty-runy/" rel="bookmark" title="Руны для поиска работы Руны чтобы быстро документ найти пропавший">Руны для поиска работы Руны чтобы быстро документ найти пропавший</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/android-and-ios/poteryannye-veshchi-prichiny-sposoby-poiska-runy-dlya-poiska-raboty-runy/" title="Руны для поиска работы Руны чтобы быстро документ найти пропавший" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="">2024-08-23 09:44:24</time></a></span> <span class="byline"><span class="author vcard"></span></span> <span class="comments"><i class="fa fa-comment"></i><a href="/android-and-ios/poteryannye-veshchi-prichiny-sposoby-poiska-runy-dlya-poiska-raboty-runy/">0</a></span> </div> </div> </div> <div class="single-related-posts"> <div class="related-posts-thumbnail"> <a href="/android-and-ios/obzor-onlain-servisov-po-buhgalterii-sravnenie-servisov/" title="Сравнение сервисов Моё дело и Контур"> <img width="390" height="205" src="/uploads/28a33a904017a0e36d65766aa47703b8.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Сравнение сервисов Моё дело и Контур" / loading=lazy> </a> </div> <div class="article-content"> <h3 class="entry-title"> <a href="/android-and-ios/obzor-onlain-servisov-po-buhgalterii-sravnenie-servisov/" rel="bookmark" title="Сравнение сервисов Моё дело и Контур">Сравнение сервисов Моё дело и Контур</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/android-and-ios/obzor-onlain-servisov-po-buhgalterii-sravnenie-servisov/" title="Сравнение сервисов Моё дело и Контур" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="">2024-08-22 09:41:38</time></a></span> <span class="byline"><span class="author vcard"></span></span> <span class="comments"><i class="fa fa-comment"></i><a href="/android-and-ios/obzor-onlain-servisov-po-buhgalterii-sravnenie-servisov/">0</a></span> </div> </div> </div> <div class="single-related-posts"> <div class="related-posts-thumbnail"> <a href="/download-dll/intel-9-pokolenie-novoe-devyatoe-pokolenie-processorov-core-ot-kompanii-intel/" title="Новое девятое поколение процессоров Core от компании Intel"> <img width="390" height="205" src="/uploads/8a115e3346dc46c976be35bf5b6acb28.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Новое девятое поколение процессоров Core от компании Intel" / loading=lazy> </a> </div> <div class="article-content"> <h3 class="entry-title"> <a href="/download-dll/intel-9-pokolenie-novoe-devyatoe-pokolenie-processorov-core-ot-kompanii-intel/" rel="bookmark" title="Новое девятое поколение процессоров Core от компании Intel">Новое девятое поколение процессоров Core от компании Intel</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/download-dll/intel-9-pokolenie-novoe-devyatoe-pokolenie-processorov-core-ot-kompanii-intel/" title="Новое девятое поколение процессоров Core от компании Intel" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="">2024-08-21 09:38:11</time></a></span> <span class="byline"><span class="author vcard"></span></span> <span class="comments"><i class="fa fa-comment"></i><a href="/download-dll/intel-9-pokolenie-novoe-devyatoe-pokolenie-processorov-core-ot-kompanii-intel/">0</a></span> </div> </div> </div> </div> </div> <div id="secondary"> <aside id="colormag_featured_posts_vertical_widget-2" class="widget widget_featured_posts widget_featured_posts_vertical widget_featured_meta clearfix"> <div class="first-post"> <div class="single-article clearfix"> <figure><a href="/windows-7/mod-na-karer-dlya-minecraft-1-12-novye-bloki-extra-utilities/" title="Мод на карьер для minecraft 1"><img width="390" height="205" src="/uploads/170b9e9dcc48c09c05607206e31cde15.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Мод на карьер для minecraft 1" title="Мод на карьер для minecraft 1" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/windows-7/" rel="category tag">Windows 7</a> </span></div> <h3 class="entry-title"> <a href="/windows-7/mod-na-karer-dlya-minecraft-1-12-novye-bloki-extra-utilities/" title="Мод на карьер для minecraft 1">Мод на карьер для minecraft 1</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/windows-7/mod-na-karer-dlya-minecraft-1-12-novye-bloki-extra-utilities/" title="Мод на карьер для minecraft 1" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published">2024-08-20 09:39:55</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/windows-7/mod-na-karer-dlya-minecraft-1-12-novye-bloki-extra-utilities/"></a></span> </div> <div class="entry-content"> <p>If you are a player of Minecraft a long time, then certainly already heard of BuildCraft Mod 1.12.2 . This mod adds...</p> </div> </div> </div> </div> <div class="following-post"> <div class="single-article clearfix"> <figure><a href="/windows-7/ubiraem-mercayushchii-ekran-v-rise-of-nations-ubiraem-mercayushchii-ekran-v-rise-of-nations-rise/" title="Убираем мерцающий экран в Rise of Nations Rise of Nations: Rise of Legends зависает"><img width="130" height="90" src="/uploads/945782b40fd83697ac3b2c204c04f7bb.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Убираем мерцающий экран в Rise of Nations Rise of Nations: Rise of Legends зависает" title="Убираем мерцающий экран в Rise of Nations Rise of Nations: Rise of Legends зависает" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/windows-7/" rel="category tag">Windows 7</a> </span></div> <h3 class="entry-title"> <a href="/windows-7/ubiraem-mercayushchii-ekran-v-rise-of-nations-ubiraem-mercayushchii-ekran-v-rise-of-nations-rise/" title="Убираем мерцающий экран в Rise of Nations Rise of Nations: Rise of Legends зависает">Убираем мерцающий экран в Rise of Nations Rise of Nations: Rise of Legends зависает</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/windows-7/ubiraem-mercayushchii-ekran-v-rise-of-nations-ubiraem-mercayushchii-ekran-v-rise-of-nations-rise/" title="Убираем мерцающий экран в Rise of Nations Rise of Nations: Rise of Legends зависает" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-19 09:38:02</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/windows-7/ubiraem-mercayushchii-ekran-v-rise-of-nations-ubiraem-mercayushchii-ekran-v-rise-of-nations-rise/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/games/kak-aktivirovat-kartu-kodov-internet-bankinga-belarusbanka/" title="Подключение услуги интернет банкинг ОАО «АСБ Беларусбанк» через интернет Услуга интернет банкинг беларусбанк платная"><img width="130" height="90" src="/uploads/a096232151c1d59d015e318a4d3ebcb1.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Подключение услуги интернет банкинг ОАО «АСБ Беларусбанк» через интернет Услуга интернет банкинг беларусбанк платная" title="Подключение услуги интернет банкинг ОАО «АСБ Беларусбанк» через интернет Услуга интернет банкинг беларусбанк платная" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/games/" rel="category tag">Игры</a> </span></div> <h3 class="entry-title"> <a href="/games/kak-aktivirovat-kartu-kodov-internet-bankinga-belarusbanka/" title="Подключение услуги интернет банкинг ОАО «АСБ Беларусбанк» через интернет Услуга интернет банкинг беларусбанк платная">Подключение услуги интернет банкинг ОАО «АСБ Беларусбанк» через интернет Услуга интернет банкинг беларусбанк платная</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/games/kak-aktivirovat-kartu-kodov-internet-bankinga-belarusbanka/" title="Подключение услуги интернет банкинг ОАО «АСБ Беларусбанк» через интернет Услуга интернет банкинг беларусбанк платная" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-18 09:37:13</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/games/kak-aktivirovat-kartu-kodov-internet-bankinga-belarusbanka/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/internet/chto-delat-esli-nashel-chuzhuyu-bankovskuyu-kartu-nashel-kartu-sberbanka-chto/" title="Нашел карту сбербанка что делать Что делать если нашел банковскую карточку"><img width="130" height="90" src="/uploads/83908067d37f29d1445a084c198e0631.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Нашел карту сбербанка что делать Что делать если нашел банковскую карточку" title="Нашел карту сбербанка что делать Что делать если нашел банковскую карточку" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/internet/" rel="category tag">Интернет</a> </span></div> <h3 class="entry-title"> <a href="/internet/chto-delat-esli-nashel-chuzhuyu-bankovskuyu-kartu-nashel-kartu-sberbanka-chto/" title="Нашел карту сбербанка что делать Что делать если нашел банковскую карточку">Нашел карту сбербанка что делать Что делать если нашел банковскую карточку</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/internet/chto-delat-esli-nashel-chuzhuyu-bankovskuyu-kartu-nashel-kartu-sberbanka-chto/" title="Нашел карту сбербанка что делать Что делать если нашел банковскую карточку" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-17 09:58:49</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/internet/chto-delat-esli-nashel-chuzhuyu-bankovskuyu-kartu-nashel-kartu-sberbanka-chto/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/internet/rostelekom-otpravka-telegrammy-kak-otpravit-telegrammu-po-telefonu/" title="Как отправить телеграмму по телефону ростелеком По какому номеру отправить телеграмму по телефону"><img width="130" height="90" src="/uploads/88fb6069be16646c28174a49a49def56.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Как отправить телеграмму по телефону ростелеком По какому номеру отправить телеграмму по телефону" title="Как отправить телеграмму по телефону ростелеком По какому номеру отправить телеграмму по телефону" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/internet/" rel="category tag">Интернет</a> </span></div> <h3 class="entry-title"> <a href="/internet/rostelekom-otpravka-telegrammy-kak-otpravit-telegrammu-po-telefonu/" title="Как отправить телеграмму по телефону ростелеком По какому номеру отправить телеграмму по телефону">Как отправить телеграмму по телефону ростелеком По какому номеру отправить телеграмму по телефону</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/internet/rostelekom-otpravka-telegrammy-kak-otpravit-telegrammu-po-telefonu/" title="Как отправить телеграмму по телефону ростелеком По какому номеру отправить телеграмму по телефону" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-16 10:00:40</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/internet/rostelekom-otpravka-telegrammy-kak-otpravit-telegrammu-po-telefonu/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/microsoft-office/chto-delat-esli-pri-zapuske-gta-5-vysokaya-zagruzhennost-processora/" title="Высокая загруженность процессора"><img width="130" height="90" src="/uploads/7e6161b512bb996255c9415fc36cda17.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Высокая загруженность процессора" title="Высокая загруженность процессора" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/microsoft-office/" rel="category tag">Microsoft Office</a> </span></div> <h3 class="entry-title"> <a href="/microsoft-office/chto-delat-esli-pri-zapuske-gta-5-vysokaya-zagruzhennost-processora/" title="Высокая загруженность процессора">Высокая загруженность процессора</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/microsoft-office/chto-delat-esli-pri-zapuske-gta-5-vysokaya-zagruzhennost-processora/" title="Высокая загруженность процессора" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-15 10:15:43</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/microsoft-office/chto-delat-esli-pri-zapuske-gta-5-vysokaya-zagruzhennost-processora/"></a></span> </div> </div> </div> </div> </aside> <aside id="text-2" class="widget widget_text clearfix"> <h3 class="widget-title"><span>Новости партнеров</span></h3> <div class="textwidget"> </div> </aside> <aside id="colormag_featured_posts_vertical_widget-3" class="widget widget_featured_posts widget_featured_posts_vertical widget_featured_meta clearfix"> <div class="first-post"> <div class="single-article clearfix"> <figure><a href="/windows-7/kak-razreshit-avtomaticheskoe-vypolnenie-podklyuchaemyh-modulei-podklyuchaemye/" title="Подключаемые модули Google Chrome и другие настройки"><img width="390" height="205" src="/uploads/1c45498f3213117f78b44d7836d63dd2.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Подключаемые модули Google Chrome и другие настройки" title="Подключаемые модули Google Chrome и другие настройки" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/windows-7/" rel="category tag">Windows 7</a> </span></div> <h3 class="entry-title"> <a href="/windows-7/kak-razreshit-avtomaticheskoe-vypolnenie-podklyuchaemyh-modulei-podklyuchaemye/" title="Подключаемые модули Google Chrome и другие настройки">Подключаемые модули Google Chrome и другие настройки</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/windows-7/kak-razreshit-avtomaticheskoe-vypolnenie-podklyuchaemyh-modulei-podklyuchaemye/" title="Подключаемые модули Google Chrome и другие настройки" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published">2024-08-14 10:04:49</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/windows-7/kak-razreshit-avtomaticheskoe-vypolnenie-podklyuchaemyh-modulei-podklyuchaemye/"></a></span> </div> <div class="entry-content"> <p>Adobe Flash Player непосредственно интегрирован в Google Chrome и включен по умолчанию. Обновления Adobe Flash Player...</p> </div> </div> </div> </div> <div class="following-post"> <div class="single-article clearfix"> <figure><a href="/games/about-plugins-podklyuchaemye-moduli-flash-kak-upravlyat-podklyuchaemymi-modulyami-v-yandeks/" title="Как управлять подключаемыми модулями в яндекс браузере"><img width="130" height="90" src="/uploads/bf3a4e1b08265e47304d04e580536a40.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Как управлять подключаемыми модулями в яндекс браузере" title="Как управлять подключаемыми модулями в яндекс браузере" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/games/" rel="category tag">Игры</a> </span></div> <h3 class="entry-title"> <a href="/games/about-plugins-podklyuchaemye-moduli-flash-kak-upravlyat-podklyuchaemymi-modulyami-v-yandeks/" title="Как управлять подключаемыми модулями в яндекс браузере">Как управлять подключаемыми модулями в яндекс браузере</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/games/about-plugins-podklyuchaemye-moduli-flash-kak-upravlyat-podklyuchaemymi-modulyami-v-yandeks/" title="Как управлять подключаемыми модулями в яндекс браузере" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-14 10:04:49</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/games/about-plugins-podklyuchaemye-moduli-flash-kak-upravlyat-podklyuchaemymi-modulyami-v-yandeks/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/windows-7/sekrety-v-wot-sekrety-strelby-v-world-of-tanks-chtoby-oderzhat-pobedu-nuzhno-imet/" title="Секреты стрельбы в World of Tanks"><img width="130" height="90" src="/uploads/af1671e82ef46c74e91e00a4ca073829.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Секреты стрельбы в World of Tanks" title="Секреты стрельбы в World of Tanks" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/windows-7/" rel="category tag">Windows 7</a> </span></div> <h3 class="entry-title"> <a href="/windows-7/sekrety-v-wot-sekrety-strelby-v-world-of-tanks-chtoby-oderzhat-pobedu-nuzhno-imet/" title="Секреты стрельбы в World of Tanks">Секреты стрельбы в World of Tanks</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/windows-7/sekrety-v-wot-sekrety-strelby-v-world-of-tanks-chtoby-oderzhat-pobedu-nuzhno-imet/" title="Секреты стрельбы в World of Tanks" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-30 09:16:34</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/windows-7/sekrety-v-wot-sekrety-strelby-v-world-of-tanks-chtoby-oderzhat-pobedu-nuzhno-imet/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/programs/vorld-of-tank-xvm-lichnyi-kabinet-kak-aktivirovat-statistiku-i-drugie-setevye/" title="Как активировать статистику и другие сетевые сервисы XVM?"><img width="130" height="90" src="/uploads/11ad58743a18c8a0116502032c76aea2.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Как активировать статистику и другие сетевые сервисы XVM?" title="Как активировать статистику и другие сетевые сервисы XVM?" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/programs/" rel="category tag">Программы</a> </span></div> <h3 class="entry-title"> <a href="/programs/vorld-of-tank-xvm-lichnyi-kabinet-kak-aktivirovat-statistiku-i-drugie-setevye/" title="Как активировать статистику и другие сетевые сервисы XVM?">Как активировать статистику и другие сетевые сервисы XVM?</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/programs/vorld-of-tank-xvm-lichnyi-kabinet-kak-aktivirovat-statistiku-i-drugie-setevye/" title="Как активировать статистику и другие сетевые сервисы XVM?" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-30 09:16:34</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/programs/vorld-of-tank-xvm-lichnyi-kabinet-kak-aktivirovat-statistiku-i-drugie-setevye/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/microsoft-office/praim-vorld-sistemnye-trebovaniya-na-pk-sistemnye-trebovaniya/" title="Системные требования Prime world Минимальные технические требования Prime World"><img width="130" height="90" src="/uploads/8f429a83398b02b60877ad13177efbb1.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Системные требования Prime world Минимальные технические требования Prime World" title="Системные требования Prime world Минимальные технические требования Prime World" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/microsoft-office/" rel="category tag">Microsoft Office</a> </span></div> <h3 class="entry-title"> <a href="/microsoft-office/praim-vorld-sistemnye-trebovaniya-na-pk-sistemnye-trebovaniya/" title="Системные требования Prime world Минимальные технические требования Prime World">Системные требования Prime world Минимальные технические требования Prime World</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/microsoft-office/praim-vorld-sistemnye-trebovaniya-na-pk-sistemnye-trebovaniya/" title="Системные требования Prime world Минимальные технические требования Prime World" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-29 09:27:08</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/microsoft-office/praim-vorld-sistemnye-trebovaniya-na-pk-sistemnye-trebovaniya/"></a></span> </div> </div> </div> </div> </aside> <aside id="colormag_featured_posts_vertical_widget-4" class="widget widget_featured_posts widget_featured_posts_vertical widget_featured_meta clearfix"> <div class="first-post"> <div class="single-article clearfix"> <figure><a href="/microsoft-office/oshibka-sozdaniya-otkrytiya-zhurnala-registracii-1s-8-2-mozhno-li/" title="Ошибка создания открытия журнала регистрации 1с 8"><img width="390" height="205" src="/uploads/832f3e46e830f57eee8e7e2bb593f3f5.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Ошибка создания открытия журнала регистрации 1с 8" title="Ошибка создания открытия журнала регистрации 1с 8" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/microsoft-office/" rel="category tag">Microsoft Office</a> </span></div> <h3 class="entry-title"> <a href="/microsoft-office/oshibka-sozdaniya-otkrytiya-zhurnala-registracii-1s-8-2-mozhno-li/" title="Ошибка создания открытия журнала регистрации 1с 8">Ошибка создания открытия журнала регистрации 1с 8</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/microsoft-office/oshibka-sozdaniya-otkrytiya-zhurnala-registracii-1s-8-2-mozhno-li/" title="Ошибка создания открытия журнала регистрации 1с 8" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published">2024-08-28 09:24:31</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/microsoft-office/oshibka-sozdaniya-otkrytiya-zhurnala-registracii-1s-8-2-mozhno-li/"></a></span> </div> <div class="entry-content"> <p>Журнал регистрации — вещь нужная и полезная, но, нередко очень и очень медленная. В версии 8.3.5.1068 были введены некоторые...</p> </div> </div> </div> </div> <div class="following-post"> <div class="single-article clearfix"> <figure><a href="/android-and-ios/otpravlen-v-tranzitnyi-gorod-chto-znachit-otsledit-posylku-sdek-po/" title="Отследить посылку сдэк по номеру отслеживания"><img width="130" height="90" src="/uploads/29d0c77d17982818c7f215fc17a66fdf.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Отследить посылку сдэк по номеру отслеживания" title="Отследить посылку сдэк по номеру отслеживания" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/android-and-ios/" rel="category tag">Android и iOS</a> </span></div> <h3 class="entry-title"> <a href="/android-and-ios/otpravlen-v-tranzitnyi-gorod-chto-znachit-otsledit-posylku-sdek-po/" title="Отследить посылку сдэк по номеру отслеживания">Отследить посылку сдэк по номеру отслеживания</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/android-and-ios/otpravlen-v-tranzitnyi-gorod-chto-znachit-otsledit-posylku-sdek-po/" title="Отследить посылку сдэк по номеру отслеживания" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-27 09:21:45</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/android-and-ios/otpravlen-v-tranzitnyi-gorod-chto-znachit-otsledit-posylku-sdek-po/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/microsoft-office/kak-ponyat-eksport-mezhdunarodnoi-pochty-rasshifrovka-statusov-mezhdunarodnyh-pochtovyh-otpravlenii-pos/" title="Расшифровка статусов международных почтовых отправлений"><img width="130" height="90" src="/uploads/54e6f6efc6ddff77376225dccbba45d4.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Расшифровка статусов международных почтовых отправлений" title="Расшифровка статусов международных почтовых отправлений" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/microsoft-office/" rel="category tag">Microsoft Office</a> </span></div> <h3 class="entry-title"> <a href="/microsoft-office/kak-ponyat-eksport-mezhdunarodnoi-pochty-rasshifrovka-statusov-mezhdunarodnyh-pochtovyh-otpravlenii-pos/" title="Расшифровка статусов международных почтовых отправлений">Расшифровка статусов международных почтовых отправлений</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/microsoft-office/kak-ponyat-eksport-mezhdunarodnoi-pochty-rasshifrovka-statusov-mezhdunarodnyh-pochtovyh-otpravlenii-pos/" title="Расшифровка статусов международных почтовых отправлений" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-27 09:21:45</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/microsoft-office/kak-ponyat-eksport-mezhdunarodnoi-pochty-rasshifrovka-statusov-mezhdunarodnyh-pochtovyh-otpravlenii-pos/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/download-dll/kak-obmenyat-bonusy-za-dostizheniya-na-oki-gde-v-odnoklassnikah/" title="Где в "Одноклассниках" раздел "Награды"?"><img width="130" height="90" src="/uploads/3b0d5919233a29ce86607da8fe2d3edf.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Где в "Одноклассниках" раздел "Награды"?" title="Где в "Одноклассниках" раздел "Награды"?" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/download-dll/" rel="category tag">Скачать DLL</a> </span></div> <h3 class="entry-title"> <a href="/download-dll/kak-obmenyat-bonusy-za-dostizheniya-na-oki-gde-v-odnoklassnikah/" title="Где в "Одноклассниках" раздел "Награды"?">Где в "Одноклассниках" раздел "Награды"?</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/download-dll/kak-obmenyat-bonusy-za-dostizheniya-na-oki-gde-v-odnoklassnikah/" title="Где в "Одноклассниках" раздел "Награды"?" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-08-26 09:15:50</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/download-dll/kak-obmenyat-bonusy-za-dostizheniya-na-oki-gde-v-odnoklassnikah/"></a></span> </div> </div> </div> </div> </aside> </div> </div> </div> <footer id="colophon" class="clearfix"> <div class="footer-socket-wrapper clearfix"> <div class="inner-wrap"> <div class="footer-socket-area"> <div class="footer-socket-right-section"> </div> <div class="footer-socket-left-sectoin"> <div id="site-info">© 2024<a href="/" title="Интернет. Windows. Комплектующие. Проблемы. Вопросы. Игры" rel="home"> Интернет. Windows. Комплектующие. Проблемы. Вопросы. Игры</a> Все права защищены. Копирование материалов сайта без согласования с администрацией запрещено.</div> </div> </div> </div> </div> </footer> </footer> <a href="#masthead" id="scroll-up"><i class="fa fa-chevron-up"></i></a> </div> <script type='text/javascript' src='/assets/comment-reply.min.js'></script> <script type='text/javascript' src='/assets/jquery.bxslider.min.js'></script> <script type='text/javascript' src='/assets/colormag-slider-setting.js'></script> <script type='text/javascript' src='/assets/navigation.js'></script> <script type='text/javascript' src='/assets/jquery.newsTicker.min.js'></script> <script type='text/javascript' src='/assets/ticker-setting.js'></script> <script type='text/javascript' src='/assets/jquery.fitvids.js'></script> <script type='text/javascript' src='/assets/fitvids-setting.js'></script> <script type='text/javascript' src='/assets/wp-embed.min.js'></script> <script type='text/javascript' src='/assets/jquery.smooth-scroll.min.js'></script> <script type='text/javascript' src='/assets/js.cookie.min.js'></script> <script type='text/javascript' src='/assets/jquery.sticky-kit.min.js'></script> <script type='text/javascript' src='/assets/jquery.waypoints.min.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var ezTOC = { "smooth_scroll":"1","visibility_hide_by_default":"","width":"auto","scroll_offset":"30"} ; /* ]]> */ </script> <script type='text/javascript' src='/assets/front.min.js'></script> </body> </html>