Кульбаба inurl sign guestbook asp.

Recently I was working on my Website, and decided I wanted to implement a guestbook. I started to search the Web to find the best guestbook for my Website, but when none turned up, I thought ‘Hey I’m a developer, why not create my own?’

It was very easy to create a guestbook — you can do it too. In this tutorial, I’ll show you how. I’ll assume that you have already knowledge about the basics of ASP.NET programming, that you know the techniques involved in codebehind, and that you have some XML/XSL skills.

Overview

What do we need in order to create a guestbook? We need two Web forms: one in which the user can enter their name, email address, and comment, and another that’s used to display these comments as they’re signed into the guestbook. Of course we can build this functionality into one Web form, but to have a clean code, I’ll use two Web forms with several codebehind files (I’ll discuss these in more detail in a moment).

We’ll also need a database to hold the information entered via the form. I used a simple XML file (a database) to store the information entered by the user. For the visualisation of the XML we’ll use XSL.

So, in summary, we need the following:

  • Two Web forms
  • Codebehind
  • Database

In a guestbook, it’s usually sufficient to store a user’s name, location, email address, Website address, and comment. Of course, you can store more fields, but for our purposes, these are enough. We’ll store this data in the XML file, which will look something like this:




Sonu Kapoor
Germany
[email protected]
www.codefinger.de
This guestbook is written by Sonu Kapoor.
I hope you like it. To learn how to create such a guestbook,
read the whole story on my website.


Signing the Guestbook

We’ll allow the user to ‘sign’ our guestbook by entering some information into a simple Web form — in our example this is the guestbook.aspx file. I use the following fields in the Web form:

  • Location
  • Email
  • Website
  • Comment

Here’s the code:

<% @Page Language="C#" Debug="true" Src="Guestbook.cs"
Inherits="Guestbook" %>


...
...

ControlToValidate="name"
ErrorMessage="You must enter a value into textbox1"
Display="dynamic">Enter name

ControlToValidate="location" ErrorMessage="You must enter
a value into textbox1" Display="dynamic">
Enter location



columns="50" rows="10" wrap="true" runat="server"/>

ControlToValidate="comment" ErrorMessage="You must enter
a value into textbox1" Display="dynamic">
Enter comment

OnClick="Save_Comment"/>

...
...doing some visualisation stuff
...

To avoid confusing you with unnecessary code, I have removed the visualisation tags — including table, table header etc. — from this example (though, of course, these are all included in the downloadable code that’s provided at the end of this tutorial). As we only display a simple form with a few fields and buttons, you can’t see any real programming code in this file. This is because all the functionality is hidden in the codebehind.

In the first line of the code above, I set the SRC attribute to let the ASP.NET file know that we are using the codebehind file Guestbook.cs I’ve also set the attribute Inherits with the corresponding classname. This attribute lets the file know which class to inherit.

Next, I’ve implemented the required text fields. Remember that if you want to use the same variables in the codebehind, they need to have the same ID in both files, and they must be declared as public.

In the next section of the code, I used the ASP.NET validator controls. These controls check whether the user has entered a value into the text field, without doing a round-trip to the server. The code is executed on the client side.

Finally, I implemented a submit button with an OnClick event called Save_Comment . This event is used to store the information entered into the XML file by the user. The function of this event is available in Guestbook.cs. I also implemented a reset button — and that’s it! Nothing more has to be done to the Web form. Now, if you run the guestbook.aspx, you should see a Web form that looks like this:

Now we know how to display the Web form, but we haven’t seen the code that handles the event in guestbooks.cs. Let’s take a look at that now.

Using System;
using System.Web;
using System.Web.UI;
using System.Xml;

Public class Guestbook: Page
{
// Create the required webcontrols with the same name as
in the guestbook.aspx file
public TextBox name;
public TextBox location;
public TextBox email;
public TextBox website;
public TextBox comment;

Public void Save_Comment(object sender, EventArgs e)
{
// Everything is all right, so let us save the data
into the XML file
SaveXMLData();

// Remove the values of the textboxes
name.Text="";
location.Text="";
website.Text="";
email.Text="";
comment.Text="";
}
}

Private void SaveXMLData()
{
// Load the xml file
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("guestbook.xml"));

//Create a new guest element and add it to the root node
XmlElement parentNode = xmldoc.CreateElement("guest");
xmldoc.DocumentElement.PrependChild(parentNode);

// Create the required nodes
XmlElement nameNode = xmldoc.CreateElement("name");
XmlElement locationNode = xmldoc.CreateElement("location");
XmlElement emailNode = xmldoc.CreateElement("email");
XmlElement websiteNode = xmldoc.CreateElement("website");
XmlElement commentNode = xmldoc.CreateElement("comment");

// retrieve the text
XmlText nameText = xmldoc.CreateTextNode(name.Text);
XmlText locationText = xmldoc.CreateTextNode(location.Text);
XmlText emailText = xmldoc.CreateTextNode(email.Text);
XmlText websiteText = xmldoc.CreateTextNode(website.Text);
XmlText commentText = xmldoc.CreateTextNode(comment.Text);

// append the nodes to the parentNode without the value
parentNode.AppendChild(nameNode);
parentNode.AppendChild(locationNode);
parentNode.AppendChild(emailNode);
parentNode.AppendChild(websiteNode);
parentNode.AppendChild(commentNode);

// save the value of the fields into the nodes
nameNode.AppendChild(nameText);
locationNode.AppendChild(locationText);
emailNode.AppendChild(emailText);
websiteNode.AppendChild(websiteText);
commentNode.AppendChild(commentText);

// Save to the XML file
xmldoc.Save(Server.MapPath("guestbook.xml"));

// Display the user the signed guestbook
Response.Redirect("viewguestbook.aspx");
}
}

Wow! That’s our codebehind file… but what really happens here? You won’t believe it, but the answer is: "not much"!

First, we implement the minimal required namespaces which we need in order to access several important functions. Then I create a new class called Guestbook:

public class Guestbook: Page

Note that it’s this class that’s inherited by the guestbook.aspx file. Then we declare 5 public variables of type textbox. Remember that here, the names have to be identical to those we used when we created the text boxes in guestbook.aspx. Then, as you can see, we use the Save_Comment event, which is fired by the submit button we included in the guestbookpx file. This event is used to save the data.

The Saving Process

The function SaveXMLData() saves the information for us. As we’re using an XML database to store the information, we use the XmlDocument , XmlElement and XmlText classes, which provide all the functions we need.

Next, we create a new XMLDocument class object and load the guestbook.xml file. The required nodes are created with the function CreateElement , and the information entered by the user is retrieved and stored to an object of XmlText . Next, we store the created nodes without any values, using the function AppendChild in conjunction with the main XmlDocument object.

And finally, the values are stored in the nodes we just created, we save all changes to the guestbook.xml file, and we redirect the page to viewguestbook.aspx, where the stored comment is displayed.

Viewing the Guestbook

To view the guestbook, we must created an another Web form:

<% @Page Language="C#" Debug="true" Src="ViewGuestbook.cs"
Inherits="ViewGuestbook" %>

As you see, this Web form doesn’t really do all that much. It simply calls the codebehind file, ViewGuestbook.cs. Let’s take a look at this file.

Using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Xml.Xsl;
using System.IO;

Public class ViewGuestbook: Page
{
private void Page_Load(object sender, System.EventArgs e)
{
//Load the XML file
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("guestbook.xml"));

//Load the XSL file
XslTransform xslt = new XslTransform();
xslt.Load(Server.MapPath("guestbook.xsl"));

String xmlQuery="//guestbook";
XmlNodeList nodeList=doc.Document
Element.SelectNodes(xmlQuery);

MemoryStream ms=new MemoryStream();
xslt.Transform(doc, null, ms);
ms.Seek(0, SeekOrigin.Begin);

StreamReader sr = new StreamReader(ms);

//Print out the result
Response.Write(sr.ReadToEnd());
}
}

I’ve created this class to display all comments submitted through the guestbook to our users. Again, the first thing we do is implement the required namespaces, and, as we’re using XSL for the visualisation, we have to be sure to include the namespace System.Xml.Xsl .

Then we create a new class called ViewGuestbook , with a private inbuilt function called Page_Load . This function is always called when the page loads, or when the user performs a refresh. Here, the function loads the guestbook.xml file, and then the XslTranform class is used to transform the XML elements into HTML before we load the guestbook.xsl with the help of a XslTransform object.

Next, we create a new object of class XmlNodeList , which will allow us to select the required nodes. We then use the class MemoryStream , available via the namespace System.IO , to create a stream that has memory as a backing store, and use the Transform function to assign the xml data to this memory stream. The Seek function sets the current position to zero.

We then create an object of the class StreamReader , which reads the stream, and print the result with the help of the function ReadToEnd() . This function reads the stream from the current position to the end. If you run viewguestbook.aspx, you should see a Web form like this:

The XSL

As I’ve already mentioned, we use XSL for the transformation of the data from XML to HTML. I’ve assumed that you’re already experienced with XSLT, so I’ll only touch on the important aspects here. I have used an XSL for-each loop to iterate through all the guests in the book, which looks something like this:



And in the loop we call the XSL template name, which looks something like this:



Conclusion

As you see, it’s not very difficult to create a guestbook. Good luck! And don’t forget to .

Масштабное обновление программы XRumer, в котором значительно эволюционировала логика регистрации профилей на самых разных платформах, улучшена работа с платформами Bitrix, Joomla, WordPress Forum, MyBB, VBulletin, XenForo, добавлен механизм модификации отправляемого текста в зависимости от тематики сайта-реципиента (новый макрос #theme), обновлены и увеличены прилагаемые базы - общий объём превысил 8 миллионов сайтов, улучшена работа с HTTPS и Google ReCaptcha-2, и многое другое...

26 января 2019

XRumer 16.0.18 + SocPlugin 4.0.63

Прилагаемые базы проверены и обновлены, общий объём увеличен до 8 (!) миллионов поддерживаемых ресурсов — блогов, форумов, гостевых книг, досок, BBS, CMS, и прочих платформ. База известных тексткапч увеличена более чем на 2000 новых ответов на антибот-вопросы и теперь составляет 324000 тексткапч. Существенно повышена стабильность и скорость работы, оптимизирован расход ресурсов: потолок достигает до 500 и более потоков (в зависимости от режима работы). Улучшена работа с HTTPS. И основное, ключевое улучшение: многократно повышена эффективность рассылок личных сообщений — режим MassPM. Плюс, многие другие улучшения и исправления:)

14 сентября 2018

XRumer 16.0.17

Важное обновление XRumer, существенно оптимизирующее расход ресурсов. Повышена стабильность и скорость работы, увеличен потолок потоков. Теперь проход по многомиллионным базам более комфортен! Также улучшена работа с HTTPS, JavaScript, улучшена работа с платформой Joomla K2, и многое другое...

05 июля 2018

Необходимо включить JavaScript для того, чтобы сайт работал корректно

Нововведения и улучшения в XRumer и SocPlugin12 сентября 2014

Нововведения и улучшения в XRumer 12.0.7

Нововведения и улучшения в SocPlugin 4.0.10

  • в Автоответчике реализована поддержка Одноклассников
  • обновлена функция комментирования видео на ВКонтакте
  • скорректирована процедура сохранения базы анкет
  • обновлён User-agent
  • добавлена возможность копирования всех выделенных ссылок на анкеты в окне отображения списка анкет (а не только одной)
  • реализована рандомизация каждой задержки в пределах ± 20%
  • в окне списка групп добавлено выпадающее меню для управления списком: удаление, копирование, открытие в браузере
  • улучшена информативность сообщений о проблемах с авторизацией
  • скорректирована загрузка/сохранение списка пользователей из/в XML-файл
  • скорректирована работа некоторых опций автонаполнения аккаунтов
  • обновлено получение параметров анкет на Фэйсбуке

Here we start out with a simple "settings" file, named settings.asp. This file will be included on each page, and will contain the basic settings for this guestbook.

Since the password (logincode) is NOT in the database, you can leave the database in the webroot with a mappath statement to make the install easier. However, the best place for the database is outside of your webroot, in which case you would want to change the database_path string to your full path ("C:\inetpub\database\post.mdb" for example)

There is also an important settings to allow html, or not. Many times folks abuse a guestbook by filling it with links, and other junk. It would be a good idea to disallow html, unless you really need it.

The language setting is just a set of variables for text used within the system, for each language there is a different text that is used. Very easy to add a "new" language to the system.

Details

The login is a simple login check page, which checks the login code entered on the form
with the one stored in the settings.asp file.

" title of your guestbook. pagetitle = " Demo" " language " english = en, german = ger, french = fr lang = " en" " admin password logincode = " 1234" " number of entries to show. show_posts = " 25" " minimum length of post to be allowed. minimum_length = 4 " set to "no" for no html, set to "yes" to allow html (not recommended!) allow_html = " no" " leave as is, unless you want to move your database. database_path = Server .MapPath(" post.mdb" ) <%Option Explicit %> <% if Request .Form(" mynumber" ) = " " then response .redirect(" login.asp?l=password_blank" ) End If " set variables from form FormPwd = Request .Form(" mynumber" ) FormPwd = replace (FormPwd," "" ," """ ) " run login or return to login page if formpwd = logincode then Session(" LoginID" ) = formpwd else response .redirect(" login.asp?l=incorrect_login_or_password" ) End if " final redirect response .redirect(" post.asp" ) %>

The login uses session variables to store the login information, so to log off we simple abandon the session. The redirect appends the date to avoid seeing a "cached" login page after being logged out. This is not a security issue, but just for convenience.

<% session.abandon response .redirect(" post.asp?d=" & date ) %>

Now the main code is the post.asp page, this page is the same whether you are logged in as admin or just a guest visiting the page. If you are logeed in you see the same data as a guest, only you have more options available, you can delete posts, or restore deleted posts, or empty the "recycle bin" (where deleted posts are stored until you clear them out).

As you can see from the code below, we check for the loggedin session right from the start,
then we can use this throughout the rest of the script to display data based on your status as admin or guest.

<% option explicit %> <% LoggedIn = Session(" loginID" )

Once you are logged in you see more options available.

The file is split up into "parts" depending on what querystring is passed.

The section below checks to see if you are logged in and then check so see if
you have attempted to empty the "deleted" items from the database.

" ============Empty Deleted Items from the database============ If LoggedIn <> " " Then if request .querystring(" del" ) = 1 then Set dConn = Server .CreateObject (" ADODB.Connection" ) dConn.Open " & _ database_path mySQL = " DELETE FROM tblpost where active = 2;" dConn.execute(mySQL) dconn.close set dconn = nothing response .redirect(" post.asp" ) end if end if

As you can see from the rest of the main "post" code, different items are displayed or actions performed based on being logged in or not, and if so what querystring value you have passed to the page.

" ============set based on delete or undelete============ If LoggedIn <> " " Then showdeleted = request .querystring(" showdeleted" ) if showdeleted = 1 then active = 2 removetype = 1 delete_text = undelete_text delimage = " undelete.gif" else active = 1 removetype = 2 delete_text = delete_text delimage = " delete.gif" end if else active = 1 end if " ============Delete/Undelete Items from the guestbook display============ remove = request .querystring(" remove" ) if remove = 1 then Set dConn = Server .CreateObject (" ADODB.Connection" ) dConn.Open " PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & database_path removetype = request .querystring(" removetype" ) mySQL = " UPDATE tblPost SET Active = " & removetype & " WHERE ID = " & _ ID & " ;" response .write " updating" dConn.execute(mySQL) dConn.Close set dConn = Nothing response .redirect(" post.asp" ) end if " ============End Delete Section============ Set dataRS = Server .CreateObject (" ADODB.RecordSet" ) dataSQL = " Select TOP " & show_posts & " message, remote_addr, sysdate, " &_ " systime, id FROM tblPost WHERE active = " & active &_ " order by sysdate DESC, systime DESC;" " Response.Write dataSQL " response.end Set dConn = Server .CreateObject (" ADODB.Connection" ) dConn.Open " PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & database_path dataRS.Open dataSQL, dConn, 1 , 3 recordcount = dataRS.recordcount if recordcount > 0 then data = dataRS.GetRows() " Data is retrieved so close all connections dataRS.Close Set dataRS = Nothing dconn.close set dconn = nothing " Setup for array usage iRecFirst = LBound (data, 2 ) iRecLast = UBound (data, 2 ) end if " ============IF IS A POST BACK============ message = trim (request .form(" message" )) if request .form(" ispostback" ) = 1 AND (len (message) > minimum_length) then if allow_html = " no" then message = RemoveHTMLtags(message) else message = PreSubmit2(message) end if strSQL = " tblPost" " Open a recordset Set cRS2 = Server .CreateObject (" ADODB.recordset" ) Set dConn = Server .CreateObject (" ADODB.Connection" ) dConn.Open " PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" &_ database_path cRS2.Open strSQL, dConn, 1 ,3 cRS2.AddNew cRS2(" message" ) = message cRS2(" sysdate" ) = date () cRS2(" systime" ) = time () cRS2(" remote_addr" ) = request .ServerVariables(" remote_addr" ) cRS2(" Active" ) = 1 cRS2.Update cRS2.Close Set cRS2 = Nothing dConn.Close Set dConn = Nothing response .redirect(" post.asp" ) end if " ============End POSTBACK Section============ %> <%=pagetitle%> </ title > </ head > <P style=" FONT-WEIGHT: bold" ><%=pagetitle%> <table border=2 bordercolor=" silver" CELLSPACING=0 CELLPADDING=4> <form action=" post.asp" method=" post" name=" form1" id=" form1" > <tr class=" smalltext"> <td><textarea cols=" 50" rows=" 4" name=" message" style=" <span>font-family: Arial, Helvetica, sans-serif;" </span> class=" cssborder" title=" <%=add_text%>" ></ textarea > </ td > <td nowrap><input type=" submit" value=" <%=add_text%>" style=" height: 50px;" class=" cssborder" ></ td > </ tr > <input type=" hidden" name=" ispostback" value=" 1" > </ form > </ table > <% if recordcount > 0 then %> <table border=" 2" cellspacing=" 0" cellpadding=" 4" bordercolor=" silver" width=" 500" > <tr> <th><%= message_text %> </ th > <% If LoggedIn <> " " then %> <th><%= delete_text %> </ th > <% end if %> </ tr > <% " <span> Loop through the records (second dimension of the array) </span> For I = iRecFirst To iRecLast Response .Write " <tr class="smalltext">" & _ " <td colspan="top">" & data(0 , I) & " [" & data(3 ,I) & " | " & data(2 , I) & " | " & data(1 , I) & " ]</td>" if LoggedIn <> " " then response .write " <span><td nowrap valign="top" align="center">" </span> response .write " <img src='/public/" %20&%20delimage%20&%20' loading=lazy></td>" end if Next " I %> </ table > <% end if If LoggedIn <> " " Then response .write logoutlink else response .write loginlink end if " close db just in case on error resume next dConn.Close Set dConn = Nothing on error goto 0 %> <p>That is basically it, this is a very simple little guestbook, that should be easy to add to an site that supports ASP and MS Access database connections (No ODBC is necesary).</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:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div> <div class='yarpp-related'> <h3>Читайте также по теме:</h3> <ol> <li><a href="/faq/kak-udalit-zablokirovannyi-fail-kak-udalit-zablokirovannyi-process/" rel="bookmark" title="Как удалить заблокированный процесс, папку или программу — Unlocker">Как удалить заблокированный процесс, папку или программу — Unlocker </a></li> <li><a href="/ios/kak-sozdat-sobstvennyi-kanal-v-yandex-zen-stoit-li-sozdavat/" rel="bookmark" title="Стоит ли создавать блог в Яндекс-Дзен?">Стоит ли создавать блог в Яндекс-Дзен? </a></li> <li><a href="/windows-7/kak-vybrat-igrovoi-noutbuk-harakteristiki-igrovogo-noutbuka-kak-vybrat/" rel="bookmark" title="Характеристики игрового ноутбука">Характеристики игрового ноутбука </a></li> <li><a href="/windows-10/montazh-katushek-induktivnosti-na-prostyh-pechatnyh-platah-coil32--/" rel="bookmark" title="Coil32 - Тонкопленочная печатная катушка">Coil32 - Тонкопленочная печатная катушка </a></li> </ol> </div> <section class="clear"></section> </section> <section class="after-posts-widgets no-widgets"> </section> <section class="clear"></section> </article> <aside class="sidebar widgets"> <section id="primary-sidebar-search-2" class="widget primary-sidebar primary-sidebar-widget widget_search"> <form class="cf" role="search" method="get" id="searchform" action="/"> <section> <input type="text" value="" name="s" id="s" placeholder="Search..." /> <input type="submit" id="searchsubmit" class="submit" value="Search" /> </section> </form> <section class="clear"></section> </section> <section id="primary-sidebar-categories-2" class="widget primary-sidebar primary-sidebar-widget widget_categories"> <h3 class="widgettitle widget-title primary-sidebar-widget-title">Рубрики</h3> <ul> <li class="cat-item cat-item-38"><a href="/category/android/">Android</a> </li> <li class="cat-item cat-item-38"><a href="/category/program-reviews/">Обзоры программ</a> </li> <li class="cat-item cat-item-38"><a href="/category/faq/">Частые вопросы</a> </li> <li class="cat-item cat-item-38"><a href="/category/security/">Безопасность</a> </li> <li class="cat-item cat-item-38"><a href="/category/windows-10/">Windows 10</a> </li> <li class="cat-item cat-item-38"><a href="/category/ios/">IOS</a> </li> <li class="cat-item cat-item-38"><a href="/category/social-network/">Соцсети</a> </li> <li class="cat-item cat-item-38"><a href="/category/games/">Игры</a> </li> <li class="cat-item cat-item-38"><a href="/category/windows/">Windows</a> </li> <li class="cat-item cat-item-38"><a href="/category/windows-7/">Windows 7</a> </li> <li class="cat-item cat-item-38"><a href="/category/web/">Веб</a> </li> </ul> <section class="clear"></section> </section> <section id="primary-sidebar-recent-posts-2" class="widget primary-sidebar primary-sidebar-widget widget_recent_entries"> <h3 class="widgettitle widget-title primary-sidebar-widget-title">Свежие записи</h3> <ul> <li> <a href="/windows-7/bolshoi-zloi-smailik-smaily-iz-simvolov-znachenie-smailika/">Большой злой смайлик. Смайлы из символов. Значение смайлика написанного символами. Эмоциональные действия и жесты</a> </li> <li> <a href="/windows/skachat-programmu-apus-apus---chto-eto-takoe-prostoi-legkii-i/">Скачать программу apus. APUS - что это такое? Простой, легкий и минималистичный лаунчер для "Андроида". APUS: что это такое</a> </li> <li> <a href="/security/mobilnyi-klient-ustanovka-otladka-sborka-pod-android-primer/">Пример разработки мобильного приложения с помощью "Сборщика мобильных приложений" Описание параметров мобильного приложения</a> </li> <li> <a href="/web/proshivka-lineage-os-obzor-i-ustanovka-na-smartfon-desyat-luchshih-android-proshivok-dlya-samyh-privere/">Десять лучших Android-прошивок для самых привередливых пользователей Файловая система F2FS</a> </li> <li> <a href="/web/pereproshivka-smartfona-htc-wildfire-s-cherez-kompyuter-kak-proshit-smartfon-htc-wildfire/">Как прошить смартфон htc wildfire s, и где скачать прошивку?</a> </li> </ul> <section class="clear"></section> </section> <section id="primary-sidebar-text-2" class="widget primary-sidebar primary-sidebar-widget widget_text"> <div class="textwidget"> </div> <section class="clear"></section> </section> <section id="primary-sidebar-recent-comments-2" class="widget primary-sidebar primary-sidebar-widget widget_recent_comments"> <h3 class="widgettitle widget-title primary-sidebar-widget-title">Популярные записи</h3> <ul id="recentcomments"> <li class="recentcomments"><a href="/social-network/hot-spot-otklyuchaetsya-chto-takoe-mobilnyi-hotspot-hot-spot-ili-kak-razdat/">Что такое мобильный hotspot (хот спот) или как раздать интернет с телефона?</a></li> <li class="recentcomments"><a href="/windows-7/vindovs-7-ne-vklyuchaetsya-sluzhba-audio-kak-vklyuchit-sluzhbu-vindovs-audio-kak/">Как включить службу виндовс аудио</a></li> <li class="recentcomments"><a href="/web/kak-uznat-kakoi-paket-mobilnogo-banka-podklyuchen-kak-proverit/">Как проверить, подключен ли мобильный банк сбербанка</a></li> <li class="recentcomments"><a href="/social-network/plotnost-klyucha-chto-plotnost-klyuchevyh-slov-kosvennoe-vliyanie-plotnosti/">Плотность ключа что. Плотность ключевых слов. Косвенное влияние плотности и тошноты слов на позиции</a></li> <li class="recentcomments"><a href="/program-reviews/deshifrator-failov-posle-virusa-virus-shifrovalshchik-kak-vylechit-i/">Вирус-шифровальщик: как вылечить и расшифровать файлы?</a></li> </ul> <section class="clear"></section> </section> <section id="primary-sidebar-text-3" class="widget primary-sidebar primary-sidebar-widget widget_text"> <div class="textwidget"> </div> <section class="clear"></section> </section> </aside> </section> <section class="clear"></section> <footer id="footer"> <section class="footer-widgets-container"> <section class="footer-widgets no-widgets"> </section> </section> <nav> </nav> <section class="copyright-area no-widgets"> </section> <p class="copyright"> <span class="site-copyright"> Copyright © 2024 <a href="/">media-quant.ru</a>. Компьютерные хитрости. </span> </p> </footer> <script type="text/javascript">jQuery(function($) { $(document).on("click", ".pseudo-link", function(){ window.open($(this).data("uri")); } );} );</script> <script type="text/javascript"> // <![CDATA[ jQuery( function( $ ) { // Top Nav $( '.nav-button' ).on( 'click', function ( e ) { e.stopPropagation(); $( '.nav-button, .top-nav' ).toggleClass( 'open' ); } ); // Primary Nav $( '.primary-nav-button' ).on( 'click', function ( e ) { e.stopPropagation(); $( '.primary-nav-button, .primary-nav' ).toggleClass( 'open' ); } ); $( document ).on( 'click touch', function() { $( '.nav-button, .top-nav, .primary-nav-button, .primary-nav' ).removeClass( 'open' ); } ); } ); // ]]> </script> <link rel='stylesheet' id='yarppRelatedCss-css' href='/wp-content/plugins/yet-another-related-posts-plugin/style/related.css?ver=4.3.1' type='text/css' media='all' /> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js?ver=4.3.1'></script> </body> </html><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>