Нещадний signup php rid. Як створити власну сторінку реєстрації WordPress Multisite. Бонус. Захист від спамерів

Створюємо власну сторінку реєстрації для мультисайту замість стандартної wp-signup.php.

У звичайному встановленні WordPress сторінку реєстрації (авторизації, скидання пароля) виводить файл wp-login.php .

  • /wp-login.php - авторизація
  • /wp-login.php?action=register - реєстрація
  • /wp-login.php?action=lostpassword - скидання пароля

Для мультисайту у wp-login.php є окремі умови. Так, при переході за посиланням /wp-login.php?action=register на мультисайті WordPress зробить редирект на сторінку /wp-signup.php . У багатьох темах сторінка виглядає не дуже привабливо, тому ми зробимо власну.

Основний сайт мережі

За промовчанням WordPress відкриває сторінку реєстрації (wp-signup.php) на основному домені (сайті) мережі. Проте, можна зробити окрему сторінку реєстрації для кожного сайту мережі, навіть якщо вони мають різні теми. Ми розглядатимемо випадок, коли на всіх сайтах мережі є своя власна сторінка реєстрації, але використовується однакова тема і сайти відрізняються лише мовою. Якщо використовуються різні теми, потрібно написати більше коду.

functions.php?

Ні. Ім'я цього файлу, здається, згадується у будь-якій статті про WordPress. У нашому випадку, з урахуванням того, що функціонал реєстрації розрахований на кілька сайтів, є сенс винести його в MU-плагіни, які завантажуються при відкритті будь-якого сайту.

Ліричний відступ

Варто зазначити, що MU-плагіни завантажуються раніше за звичайні плагіни і до повного завантаження ядра WordPress, тому виклик деяких функцій може призвести до фатальних помилок у PHP. Подібне «раннє» завантаження має свої плюси. Скажімо, всередині будь-якої теми не можна чіплятися до деяких екшенів, які спрацьовують ще до завантаження файлу functions.php з теми. Прикладом цього можуть бути екшени з плагіну Jetpack виду jetpack_module_loaded_related-posts (related-posts - назва модуля) за допомогою яких можна відстежувати активність модулів в Jetpack. До цього екшену неможливо "причепитися" з файлу теми, тому що екшен вже спрацював до завантаження теми - плагіни завантажуються раніше. Подивитися на загальну картинку порядку завантаження WordPress можна на сторінці Action Reference у кодексі.

Порядок у файлах

MU-плагіни можуть містити будь-яку кількість файлів та будь-яку структуру, яка здасться вам логічною. Я дотримуюсь приблизно такої ієрархії:

|-mu-plugins |-|-load.php |-|-|-selena-network |-|-|-|-signup |-|-|-|-|-plugin.php |-|-|-| -|-... |-|-|-|-jetpack |-|-|-|-|-plugin.php

У файлі load.php підключаються всі необхідні плагіни для нашої мережі:

// Load Traslates for all addons load_muplugin_textdomain ("selena_network", "/selena-network/languages/"); // Network Signup require WPMU_PLUGIN_DIR . "/selena-network/signup/plugin.php"; // Інші plugins // require WPMU_PLUGIN_DIR ...

Усередині папки selena-network зберігаються папки плагінів, у кожній є свій plugin.php , які ми підключаємо в load.php . Це дає гнучкість та можливість швидко відключати та включати деякі речі.

Адреса сторінки реєстрації

Щоб вказати адресу сторінки реєстрації, використовується фільтр wp_signup_location . Його можна знайти всередині файлу wp-login.php і саме він відповідає за редирект на wp-signup.php.

Case "register" : if (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php"))));

Додамо свою функцію до mu-plugins/selena-network/signup/plugin.php , яка буде віддавати адресу сторінки реєстрації на поточному сайті:

Function selena_network_signup_page ($url) ( return home_url () . "/signup/"; ) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

selena_network - префікс, який я використовую в іменах всіх функцій усередині MU-плагінів на своєму сайті для запобігання колізії, його слід замінити на свій власний унікальний префікс. Пріоритет додавання фільтра 99, тому що деякі плагіни, наприклад bbPress і BuddyPress можуть перезаписати цю адресу на свою власну (MU-плагіни завантажуються раніше, ніж звичайні плагіни, див вище). Зверніть увагу, що використовується home_url() замість network_site_url() , щоб залишити відвідувача на тому ж домені. Як адресу можна використовувати будь-яку URL-адресу.

Створення сторінки

Тепер створимо сторінку з адресою site.com/signup/ через звичайний інтерфейс, а в папці дочірньої теми шаблон нашої нової сторінки - page-signup.php . Замість слова signup можна використовувати унікальний ID.

Всередині нового шаблону необхідно виконати функцію selena_network_signup_main() , яка виводитиме форму реєстрації.

Варто зауважити, що весь процес із шаблонами не є обов'язковим і замість цього можна створити свій шорткод, який також викликатиме функцію selena_network_signup_main() .

wp-signup.php та wp-activate.php

Тепер займемося створенням функції, яка виводитиме форму реєстрації. Для цього скопіюємо файли wp-signup.php та wp-activate.php з кореня WordPress у mu-plugings/selena-network/signup/ (і не забуваємо їх підключити всередині mu-plugins/selena-network/signup/plugin.php) . Подальші маніпуляції з файлами дуже складно і довго описувати, тому доведеться зробити їх самостійно. Я лише опишу, що саме треба зробити і опублікую вихідні файли свого проекту:

  1. На початку файлу видалити всі require , виклик функцій та інший код поза функціями.
  2. Перейменувати всі функції, додавши унікальні префікси до імен.
  3. Нижню частину коду wp-signup.php обернути в функцію selena_network_signup_main і на початку написати global $active_signup; .
  4. Замінити верстку на власну в потрібних місцях.

Всередині wp-activate.php необхідно зробити приблизно те саме:

  1. Видалити весь код поза функціями, обернути верстку на окрему функцію.
  2. Змінити верстку у місцях, де це необхідно.

Файл wp-activate.php відповідає за сторінку активації облікового запису. Як і зі сторінкою реєстрації, для неї необхідно створити окремий шаблон, усередині якого викликати функцію з файлу wp-activate.php .

Надсилаємо листи активації

Сторінка реєстрації надсилає відвідувачу листа з посиланням на активацію облікового запису. За замовчуванням цим займається функція wpmu_signup_user_notification() із файлу ms-functions.php . Її функціонал можна запозичувати для своєї функції. Причина, через яку необхідно відмовитися від використання цієї функції - вона відправляє посилання активації облікового запису з wp-activate.php . "Вимкнути" ж цю функцію можна за допомогою фільтра wpmu_signup_user_notification віддаючи по ньому false (якщо цього не зробити, лист активації буде відправлятися двічі, окей, насправді два різні листи).

Function armyofselenagomez_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // ... // Код з функції wpmu_signup_user_notification() wp_mail($user_email, wp_specialchars_decode($subject), ; return false; ) add_filter("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

В результаті сторінка реєстрації в темі Селена стала виглядати набагато чистіше та акуратніше.

Висновок

В інтернеті безліч інших не дуже правильних способів того, як зробити те саме - редиректи Apache, AJAX-форми, які не працюватимуть без Java Script і т.п. Все це мені не дуже сподобалося, тому я постарався зробити це максимально правильно на своєму власний сайт.

Зауважу, що правити файли слід обережно і намагатися не сильно відходити від вихідних, щоб у подальшому, якщо WordPress змінить файли wp-signup.php і wp-activate.php, їх простіше було порівнювати між собою для пошуку змін.

Не забувайте дивитися вихідний код всіх описаних вище функцій, щоб повністю розібратися з тим, що і як відбувається всередині коду.

Бонус. Захист від спамерів

Навіть найменші сайти на WordPress часто зазнають нальоту спам-реєстрацій. Можна писати нескінченні умови для фільтрації ботів, часто більше схожі на спробу створити штучний інтелект. (я не експерт з налаштування Apache, тому мої правила можуть бути не дуже правильними).

RewriteEngine On RewriteBase / RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # BEGIN WordPress # Правила від WordPress за замовчуванням не чіпаємо:) # ... # END WordPress

PS Я намагаюся максимально детально описувати деякі сторонні речі, тому що коли починав я, часом не було кому підказати і пояснити багато речей. Також я вважаю, що подібні невеликі наведення на інші матеріали когось підштовхнуть до вивчення чогось нового та розширення своєї галузі знань. У записах RewriteRule використовуються регулярні вирази, вони зовсім не складні, наприклад, символ означає початок рядка.

Дозволяє використовувати одну установку WordPress для кількох сайтів одночасно. При цьому кожен сайт отримує власні таблиці в базі даних з унікальним префіксом.

Таблиці з даними зареєстрованих користувачів є спільними для всіх сайтів мережі. Це безперечний плюс і зареєструвавшись одного разу можна отримати доступ до кількох сайтів. Причому на кожному сайті один і той же обліковий запис може мати різні права. Наприклад, на одному сайті користувач може бути редактором, а на іншому адміністратором.

У звичайному встановленні WordPress сторінку реєстрації, авторизації та скидання пароля виводить файл wp-login.php .

  • wp-login.php - авторизація
  • wp-login.php?action=register - реєстрація
  • wp-login.php?action=lostpassword - скидання пароля

У режимі Multisite ядро ​​WordPress починає поводитися дещо інакше і при переході за посиланням wp-login.php?action=register відбудеться редирект на wp-signup.php. Це сторінка реєстрації вашої мережі, яка за промовчанням є у WordPress.

Крім реєстрації звичайних облікових користувачів на ній можна створити і новий сайт, якщо суперадміністратор включив таку можливість в налаштуваннях мережі (Network Admin → Settings → Network Settings).

Здебільшого сторінка реєстрації виглядає не зовсім добре. Багато тем оформлення використовують CSS-фреймворки, наприклад Bootstrap, і власні специфічні класи для стилізації різних елементів на сторінках, тому важко написати єдиний HTML, який підійде всім.

Але не варто впадати у відчай, якщо сторінка виглядає неохайно. Файл wp-signup.php чудова річ спочатку, коли немає часу опрацьовувати кожну деталь сайту — можна зосередитися на інших більш важливих сторінках і контенті.

Коли ви будете готові зробити свою власну сторінку реєстрації, wp-signup.php буде гарним зразком та прикладом, за яким легко розібратися у спектрі функцій, які надає WordPress для обробки та перевірки введених користувачами даних та створення нових облікових записів.

Основний сайт мережі

За промовчанням WordPress відкриває сторінку реєстрації (wp-signup.php) на основному домені (сайті) мережі. Тим не менш, можна створювати сторінки реєстрації для кожного сайту мережі, навіть якщо вони мають теми.

Ми розглядатимемо випадок, коли на всіх сайтах мережі використовується одна тема, але на кожному з них є сторінка реєстрації. Сайти розрізняються мовою (англійською та російською), тому сторінка реєстрації буде виводитися «рідною» мовою сайту. Якщо сайти використовують різні теми, все буде залежати від того, які саме це теми, чи підійде їм однакова верстка (відмінна ситуація, яка може підштовхнути вас до уніфікації всіх своїх тем) або варто опрацьовувати сторінки індивідуально.

Альтернатива functions.php

Порядок у файлах

MU-плагіни можуть містити будь-яку кількість файлів та структуру, яка здасться вам логічною. Я дотримуюсь приблизно такої ієрархії:

| mu-plugins | | load.php | | selena-network | | | signup | | | | plugin.php | | | ... | | | Jetpack | | | | plugin.php

У файлі load.php підключаються переклади та всі необхідні «плагіни»:

// Завантаження перекладів для MU-плагінів load_muplugin_textdomain("selena_network", "/selena-network/languages/"); // Функціонал для сторінки реєстрації require WPMU_PLUGIN_DIR . "/selena-network/signup/plugin.php"; // Ще один плагін // require WPMU_PLUGIN_DIR ...

Усередині директорії selena-network зберігаються папки плагінів. У кожній є свій plugin.php, які ми і підключаємо до load.php. Це дає гнучкість та можливість миттєво відключати та включати окремі компоненти на робочому проекті у разі екстреної необхідності.

Сторінка реєстрації

Розібравшись з тим, де і як ми писатимемо код, можна переходити до створення сторінки реєстрації.

Створимо сторінку за адресою example.org/signup/ через звичайний інтерфейс. Як адресу можна використовувати будь-яку URL-адресу, яка здасться відповідною для вашого проекту.

Редирект на потрібну сторінку реєстрації

Щоб WordPress дізнався про нашу нову сторінку реєстрації та проводив редирект саме на неї, при натисканні на посилання «Зареєструватися», використовується фільтр wp_signup_location . Його можна знайти всередині wp-login.php і саме він відповідає за редирект на wp-signup.php за умовчанням.

Case "register" : if (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php"))); exit; // ...

Як ви пам'ятаєте, за замовчуванням сторінка реєстрації відкривається на основному домені мережі. Саме тому використовується network_site_url() .

Додамо свій обробник до фільтра в mu-plugins/selena-network/signup/plugin.php , який буде віддавати адресу сторінки реєстрації на поточному сайті:

Function selena_network_signup_page($url) ( return home_url("signup"); ) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

selena_network - префікс, який я використовую в іменах всіх функцій усередині MU-плагінів на своєму сайті для уникнення колізій, його слід замінити на свій власний унікальний префікс. Пріоритет додавання фільтра 99, тому що деякі плагіни, наприклад, bbPress і BuddyPress можуть перезаписати цю адресу на власну (MU-плагіни завантажуються раніше, ніж звичайні плагіни, див. вище).

Зверніть увагу, що використовується home_url() , яка на відміну від network_site_url() віддає адресу поточного сайту, а не головного сайту мережі.

Функціонал wp-signup.php

Файл wp-signup.php містить велику кількість функцій та коду. Щоб побачити картину в цілому, можна скористатися згортанням коду. Як правило, по-англійськи це називається code folding.

На самому початку файлу з 1 по 80 рядок (у версії 4.1.1) проводяться різні перевірки та виведення «старту» сторінки за допомогою get_header() .

Далі оголошуються безліч методів і перед тим, як ми почнемо працювати з ними, варто розібратися, що робить кожна функція. Всередині багатьох часто використовуються інші функції з префіксом wpmu_ , всі вони оголошуються у файлі wp-includes/ms-functions.php . Цей розділ важко зрозуміти, не бачачи код самостійно. Нижче опис основних функцій на випадок, якщо у вас виникнуть труднощі.

  • wpmu_signup_stylesheet() – виведення додаткового CSS на сторінці реєстрації.
  • show_blog_form() — поля для реєстрації сайту (адреса, назва видимість для пошукових систем).
  • validate_blog_form() — перевірка введеної адреси сайту та назви за допомогою wpmu_validate_blog_signup().
  • show_user_form() — поля для реєстрації користувача (логін та адреса ел. пошти).
  • validate_user_form() - перевірка введеного логіну та адреси ел. пошти за допомогою wpmu_validate_user_signup() .
  • signup_another_blog() — поля для реєстрації нових сайтів за допомогою show_blog_form() для користувачів, які вже зареєстровані на сайті.
  • validate_another_blog_signup() — перевіряє адресу сайту та назву за допомогою validate_blog_form().
  • signup_user() — основна функція виведення полів сторінки реєстрації.
  • validate_user_signup() — перевіряє логін та адресу ел. пошти за допомогою validate_user_form().
  • signup_blog() — поля для введення адреси, назви та видимості сайту (другий крок реєстрації) за допомогою show_blog_form().
  • validate_blog_signup() - перевіряє логін, адресу ел. пошти, адресу та назву сайту.

У самому низу файлу wp-signup.php (з рядка 646 у версії 4.1.1) основна логіка роботи сторінки реєстрації, яка використовує всі описані вище методи. Ця частина коду не винесена на функцію. Наприкінці викликається get_footer().

Копіюємо функціонал wp-signup.php

Далі буде описано процедуру копіювання wp-signup.php в MU-плагіни та внесення змін до «форку». Можливо, це може здатися не правильним шляхом. Натомість можна з нуля написати свої функції для перевірки та виведення форм використовуючи класи, а не звичайні функції. На мій погляд, у wp-signup.php вже є вся необхідна логіка для нашої сторінки, залишається лише внести невеликі зміни.

При оновленні WordPress іноді змінюється і wp-signup.php , але це не означає що при кожному релізі доведеться синхронізувати свій «форк». Функції всередині wp-signup.php по суті займаються лише виведенням HTML, перевіркою даних, створенням облікових записів та сайтів займаються методи з префіксом wpmu_, оголошені в ms-functions.php.

Займемося створенням функції, яка виводитиме форму реєстрації на сторінці. Для цього скопіюємо wp-signup.php з кореня WordPress у mu-plugings/selena-network/signup/. Підключимо його всередині mu-plugins/selena-network/signup/plugin.php).

Require WPMU_PLUGIN_DIR . "/selena-network/signup/wp-signup.php";

Видалимо з самого початку скопійованого файлу всі потреби та непотрібні перевірки. У версії 4.1.1 це весь код з 1 по 80 рядок.

Тепер ми готові створити основну функцію для виведення форми реєстрації. Для цього всю логіку з рядка 646 і до кінця файлу перенесемо в функцію з назвою selena_network_signup_main . Наприкінці видалимо два зайві закриваючі

(Рядки 722 і 723), а також виклик get_footer() .

У щойно створеній selena_network_signup_main() на самому початку оголосимо глобальну змінну active_signup , яку використовують всі інші методи цього файлу. І додамо виклик події before_signup_form, яку ми видалили із самого початку файлу.

Function selena_network_signup_main() ( global $active_signup; do_action("before_signup_form"); // ... )

Тепер залишається лише змінити верстку у всіх місцях, де це необхідно, і сторінка реєстрації готова.

Висновок форми реєстрації

Тут є як мінімум два варіанти. Більш зручний спосіб створити шорткод і розмістити його на сторінці через звичайний редактор.

// Створюємо шорткод network_signup add_shortcode("network_signup", "selena_network_signup_main");

Другий варіант – створити в папці дочірньої теми шаблон сторінки page-signup.php. Замість слова "signup" можна використовувати унікальний ID, наданий сторінці. Всередині шаблону додати необхідну верстку та зробити виклик selena_network_signup_main() у потрібному місці.

В результаті моя сторінка реєстрації стала виглядати набагато краще та чистіше.

Сторінка активації

За умовчанням WordPress умовно ділить процес реєстрації в Multisite на два кроки - заповнення форми на сайті та активація облікового запису при переході за посиланням, надісланим в електронному листі. Після того, як ви заповните форму, створену в попередньому розділі, WordPress надсилає листа з невеликою інструкцією та посиланням для активації облікового запису.

За виведення сторінки активації відповідає файл wp-activate.php, розташований у кореневій директорії WordPress. wp-activate.php можна також повністю змінити. Процес подібний до того, що ми вже робили для wp-signup.php .

Створимо сторінку example.org/activate/ через стандартний інтерфейс. В якості адреси використовуйте будь-яку URL, яка здасться вам підходящим.

Скопіюємо файл wp-activate.php до себе в MU-плагіни та підключимо його до mu-plugins/selena-network/signup/plugin.php .

Require WPMU_PLUGIN_DIR . "/selena-network/signup/wp-activate.php";

Усередині не так багато вмісту, на відміну wp-signup.php . Файл виконує єдину операцію - активує обліковий запис, якщо отримано правильний ключ і виводить повідомлення про помилку або успішне виконання операції.

Видалимо всі непотрібні перевірки і require - з 1 по 69 рядок у WordPress 4.1.1. Наприкінці приберемо виклик get_footer() . Вміст, що залишився, перенесемо в функцію selena_network_activate_main() .

Цікаво зауважити, що тут перед завантаженням WordPress (wp-load.php) оголошувалась константа WP_INSTALLING. Її наявність змушує WordPress не завантажувати плагіни.

Як і у випадку зі сторінкою реєстрації, залишається лише виправити верстку там, де це необхідно. Також можна змінити текст повідомлень, що виводяться (у цьому випадку не забудьте додати текстовий домен своїх MU-плагінів у всі функції-перекладачі, за замовчуванням він ніде не встановлений).

Готову функцію можна використовувати на заздалегідь створеній сторінці через шорткод або окремий шаблон у дочірній темі.

Листи активації з правильними посиланнями

Сторінка активації готова до роботи, але WordPress не знає про неї і, як і раніше, надсилатиме листи активації з посиланням на wp-activate.php . На відміну від wp-signup.php тут немає фільтра, який дозволив би змінити адресу. Натомість потрібно написати свою функцію, яка надсилатиме листи з правильними посиланнями.

У момент заповнення та надсилання форми на сторінці реєстрації WordPress викликає wpmu_signup_ user() або wpmu_signup_ blog() залежно від типу реєстрації. Обидві функції створюють новий запис у таблиці wp_signups, заповнюючи її необхідним вмістом, серед якого є і ключ активації облікового запису.

Після цього, залежно від функції, викликається wpmu_signup_ user _notification() або wpmu_signup_ blog _notification(). Обидві функції мають схожий функціонал - генерують і надсилають листа з посиланням на активацію, але приймають різні аргументи. В обох є фільтри для перехоплення події.

If (! apply_filters("wpmu_signup_user_notification", $user, $user_email, $key, $meta)) return false;

Для активації облікових записів зі створенням блогу:

If (! apply_filters("wpmu_signup_blog_notification", $domain, $path, $title, $user, $user_email, $key, $meta)) ( return false; )

Залишається лише написати свої обробники, всередині яких надсилати листи через wp_mail() , а наприкінці обов'язково віддавати false , щоб WordPress не відправив лист активації двічі - один ваш, інше - лист за замовчуванням з посиланням на wp-activate.php.

Function selena_network_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // Генеруємо заголовок, текст і заголовки листа // ... // Відправляємо листа або додаємо Cron-завдання для надсилання листа wp_mail($user_email , wp_specialchars_decode($subject), $message, $message_headers);// Віддаємо false, щоб WordPress не відправив лист активації двічі return false; ) add_filter("wpmu_signup_user_notification", "selena_network_wpmu_signup

Якщо ви надсилаєте листи через SMTP-сервер або кількість реєстрацій дуже велика, слід замислитися над тим, щоб не надсилати листи миттєво. Натомість можна додавати Cron-завдання за допомогою WordPress Cron .

Закриваємо доступ до wp-signup.php та wp-activate.php

Створивши власні сторінки реєстрації та активації, може знадобитися закрити «оригінали». Наприклад, якщо на сторінці реєстрації є додаткові поля, які потрібно заповнити. Також багато WordPress сайтів піддаються спам-реєстраціям.

Вирішити дві проблеми однією дією можна, попросивши Apache віддавати 404 у разі спроби відкриття цих сторінок. Для цього потрібно лише прописати пару додаткових RewriteRule у файл-конфігурацію або .htaccess .

RewriteEngine On RewriteBase / # Знання регулярних виразів ніколи не буде зайвим :) RewriteRule END WordPress

Висновок

Для цієї та багатьох інших проблем пов'язаних з WordPress в інтернеті є безліч рішень. Наприклад, для створення сторінок реєстрації та активації деякі пропонують переписувати оригінальні wp-signup.php та wp-activate.php . Цього не варто робити, тому що у разі оновлення WordPress ви втратите всі зміни, внесені до файлів, а також не зможете перевірити цілісність ядра за допомогою .

При розробці будь-якого доповнення, теми або рішення слід витратити трохи часу на те, щоб розібратися з тим, що відбувається в WordPress. Для цього є безліч корисних інструментів.

P.S.

Для автоматичного призначення різних ролей новим користувачам можна використовувати плагін Multisite User Management.

Якщо у вас виникли питання або труднощі під час створення сторінок реєстрації та активації після прочитання статті, залиште коментар і ми обов'язково відповімо.

27.03.2015 27.03.2015

WordPress розробник. Любить порядок у всьому і розуміється на нових інструментах. Натхненний архітектурою компонентів Symfony.

  • Над pastю кілька років, web hosting має undergone a dramatic change. Web hosting services має changed way websites perform. Там є кілька видів послуг, але завжди будуть розмовляти про можливості, які є доступні для реселлерів hosting providers. Вони є Linux Reseller Hosting і Windows Reseller Hosting. Before we understand the fundamental differences between the two, let's find out what is reseller hosting.

    Reseller Hosting

    У прямих термінах, реселер hosting є формою web hosting, де власником аккаунт може використовувати його dedicated hard drive space і розрахований bandwidth для purpose reselling до веб-сайтів 3d parties. Одночасно, реселлер може зайняти dedicated server з hosting company (Linux або Windows) на оренду і чотири роки це від трьох партій.

    Більшість веб-сторінок either є Linux або Windows. Це має бути готове до uptime. Both platforms ensure that your website is up 99% of the time.

    1. Customization

    Один з основних аспектів між Linux Reseller Hostingplan і один забезпечений Windows є про customization. Коли ви можете випробувати з одними гравцями в декількох разах, Linux є тільки більш надійними, ніж Windows. Останнім часом має багато нюансів, що його counterpart and that is why many developers and administrators find Linux very customer- friendly.

    2. Applications

    Різні reseller hosting services мають різні applications. Linux і Windows маю їхню свою array of applications, але короткий час, коли він буде містити в номерах і versatility. Це буде йти до з відкритим джерелом природи Linux. Будь-який розробник може upload його app на Linux платформі і це робить це attractive hosting провідник до мільйонів веб-сайтів власників.

    However, мабуть, що, якщо ви використовуєте Linux для web hosting, але в той же час, використовуючи Windows OS, деякі apps не можуть працювати.

    3. Stability

    У той час як платформи є стабільними, Linux Reseller Hosting is more stable of the two. Це буде відкритий джерело платформи, може працювати в багатьох умовах.

    4. .NET compatibility

    It isn’t that Linux is superior to Windows in every possible way. Якщо це використовується в .NET compatibility, Windows steals the limelight. Web applications може бути добре розроблений на Windows hosting platform.

    5. Cost advantages

    Both the hosting platforms є affordable. Але якщо ви збираєтеся казати, ти можеш звернутися до Linux. Це є безкоштовним і те, що це було зроблено з багатьма розробниками і системами адміністраторів на всьому світі.

    6. Ease of setup

    Windows є easier, щоб встановити, що його counterpart. Всі ці сідниці і долі, Windows залишаються залишками його user-friendliness all these years.

    7. Security

    Opt for Linux reseller hosting because it is more secure than Windows. Це слугує true особливо для людей, які керують своїми E-commerce businesses.

    Conclusion

    Choosing between the twowill depend on your requirement and the cost flexibility. Під час hosting services має unique advantages. While Windows є easy to set up, Linux is cost effective, secure and is more versatile.



    Назад у березні цього року, я мав дуже недосвідчений досвід з медіа компанією, щоб заплатити за мною і повідомити мої e-mailи. Вони залишаються для мене тисячі доларів і листи з ярлика. З'їжджають звідси я не маю жодної думки, і багато інших веб-сайтів власників є в тому ж самому будинку. Це sort of par for the course with digital advertising.

    У всій honestity, I've had this blog для тривалого часу і I have bounced по різних мережах in the past. Я не знаю, що потрібні Google AdSense продукт, тільки тому, що він висить як "завдяки barrel" відтворення повідомлень.

    Від того, що я підтримую, ви збираєтеся Google переглянути на вашому сайті, але ви також маєте інші великі компанії і агенції, що це добре. Те, що ви maximize the demand and revenue.

    Після моїх negative experience I got recomend 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 will say that they are SUPER helpful. Every network I have ever worked with has been pretty short with me in times of answers and getting going.

    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. is a point that I дійсно 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:

    Вони підняли перший платеж до мене на час з Paypal. Але я не можу в США (і це здавалося б для всіх, що я думаю), я можу попросити від Paypal.

    They said that they couldn"t avoid the fee, but that they would REIMBURSE ALL FEES.... INCLUDING THE MOST RECENT PAYMENT! Не тільки, що, але погашення заборгованості було отримано зв 10 хвилин!Якщо ви повинні бути здатні до використання як потрібно, щоб без того, щоб бути спрямованим на "finance department", щоб невідповідати йому.

    Назад line is that I love this company. Я можу бути можливим для того, щоб дещо впасти, я не маю на увазі, але вони мають публікувати для життя з ним. дуже важливий клієнт, коли я говорю до них. Це genuinely breathe of fresh air in industry that is ripe with fraud and non-responsiveness.

    Мікрокомп'ютери, що мають бути створені на Raspberry Pi Foundation в 2012 році, повинні бути hugely успішні в паркування рівнів творчості в молодих хлопчиків і цей UK заснований company began, щоб отримати літературу-код-коду startup programs як pi-top an Kano. Там є новий startup, що використовується для використання Pi електронів, і пристрій є відомий як Pip, handheld console, що offers touchscreen, multi ports, control buttons and speakers. Ідея підприємство є керування людиною з гравцем приладу, що є retro, але буде за допомогою коду навчання досвіду через веб-сайт платформи.

    Мастильний платформа платформи з'являється з Pip, щоб змінити те, що йде в Python, HTML/CSS, JavaScript, Lua і 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 industry and will engage children who have an interest in coding and will provide them education and resources needed to begin coding at young age.

    Future of Coding

    Coding має велику перспективу, і навіть якщо вони не будуть використовувати обмеження, вони можуть скористатися з вивчення того, як говорити про цей код з цими новими пристроями, які роблять це, як тільки. With Pip, навіть молоді coding enthusiasts будуть вивчати різні мови і будуть бути добре на їхньому шляху до створення їх своїх кодів, своїх гравців, своїх apps і більше. Це є майбутня електронна ера і Pip дозволяє basic building blocks coding to be mastered.
    Computer science has become important part of education and with devices that new Pip , children can start to enhance their education at home while having fun. Coding goes far beyond simple creating websites або software. Це може бути використано для покращення сфери життя, допомогти з розробкою в медичному полі і більше. Безсумнівно ми живемо в світі, що є влаштованим за допомогою software, coding is future and it important for all children to at least have a basic understanding of how it works, even if they never make use these skills as career. У термінах майбутньої, що буде бути критичною частиною денного життя. Це буде бути англійською мовою і не знає комп'ютерів або як ця робота може оцінювати, що є тільки як difficult до overcome як illiteracy.
    Coding буде також здійснювати значні зміни в геймінговому світі, особливо коли він ведеться до online геймінгу, включно з використанням online casinos. Для того, щоб побачити, як говорити, має бути сприятливо зростаючий гаміняючий світ, припустити, що при цьому на кілька найвищих варіованих касино сайтів, які проходять на coding. Виконати швидкий перелік, щоб виконати це і дати вам якнайшвидше говорити про реальні realistic environments online.

    How Pip Engages Children

    Коли це ведеться до можливості, щоб дізнатися, що дитина має багато можливостей. Там є номери пристроїв і hardware gizmos, які можуть бути прикрашені, але Pip має різні пристосунки з їх пристроєм. Портативність пристрою і Touchscreen offer advantage до інших coding devices, що є на ринку. Pip буде повністю надійно з'єднувати електронні компоненти в доповнення до Raspberry Pi HAT системи. Пристрій використовує стандартні мови і має основні інструменти і є ідеальним пристроєм для будь-якого початку кодера. Принцип полягає в виконанні будь-яких barriers між ідеями і створенням і макетом інструментів, автентичними для використання. Один з інших великих відзнак Pip є те, що він використовує SD-карту, так що може бути використаний як робочий комп'ютер як добре, коли він підключений до monitor and mouse.
    The Pip device would help kids and interested coder novice with entusiasm in learning and practicing coding. За допомогою комбінації завдання збору і статевої дії на вирішення проблем, компанія буде певно налагоджувати молодого покоління. Пристрої, щоб дозволити цим молодим кодерам, щоб перейти до більш рівних рівнів зв'язку в різних мовах, як JavaScript і HTML/CSS. Since device replicates a gaming console, це буде immediate capture the attention of children and will engage them to learn about coding at young age. Це також комаси з деякими завантаженими грами до повернення до уваги, так само як Pac-Man і Minecraft.

    Innovations to Come

    Future innovation largely depends on child's current ability to code and their overall understanding of the process. Як діти вивчають code at the early age by using such devices as new Pip, they will gain the skills and knowledge to create amazing things in the future. Це може бути введення нових грі або додатків або навіть думок, які можуть допомогти в житті з медицинськими дослідженнями і дослідами. Існують довгі можливості. Безсумнівно, наша майбутня буде контролюватись за допомогою програмного забезпечення та комп'ютерів, керування молодою є кращою мірою до ходу, яка є, коли новий Піп є спрямованою до молодих вкрадених. Будучи пристосованим пристроєм, що можуть грати в гру, коли вивчають тренування шкіл, молоді члени громадськості є добре на їхньому шляху до того, як розробники програмного забезпечення в майбутньому, що будуть змінювати всі наші життя. Це є тільки початком, але це деякий час, що мільйони дітей всі над світом, щоб перейти до освіти і майстра. З використанням пристроїв як Pip, coding basics є covered і children will quickly learn different coding languages ​​that can leaddown amazing paths as they enter adulthood.