Контакти

Риба inurl guestbook php form. Гостьова книга на PHP

В даному уроці ми створимо гостьову книгу на мові програмування PHP з використанням AJAX. Записи будуть зберігатися в базі даних. Таблиця буде містити наступну інформацію: ім'я відправника, адреса email, IP адреса і дата-час останнього запису. Використовуватиметься jQuery (для реалізації AJAX). Також буде реалізована проста захист від спаму - можна розміщувати не більше одного запису кожні 10 хвилин.

Крок 1. SQL

Для роботи нашого додатки потрібно створити таблицю:

CREATE TABLE IF NOT EXISTS `s178_guestbook` (` id` int (10) unsigned NOT NULL auto_increment, `name` varchar (255) default" ",` email` varchar (255) default "", `description` varchar (255) default "", `when` int (11) NOT NULL default" 0 ",` ip` varchar (20) default NULL, PRIMARY KEY ( `id`)) ENGINE \u003d MyISAM DEFAULT CHARSET \u003d utf8;

Крок 2. PHP

Основний файл буде містити наступний код:

guestbook.php

\u003d ") \u003d\u003d 1) error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED); else error_reporting (E_ALL & ~ E_NOTICE); require_once (" classes / CMySQL.php "); // including service class to work with database // Отримуємо IP відвідувача function getVisitorIP () ($ ip \u003d "0.0.0.0"; if ((isset ($ _ SERVER [ "HTTP_X_FORWARDED_FOR"])) && (! empty ($ _ SERVER [ "HTTP_X_FORWARDED_FOR"]))) ($ ip \u003d $ _SERVER [ "HTTP_X_FORWARDED_FOR"];) elseif ((isset ($ _ SERVER [ "HTTP_CLIENT_IP"])) && (! empty ($ _ SERVER [ "HTTP_CLIENT_IP"]))) ($ ip \u003d explode ( ".", $ _ SERVER [ "HTTP_CLIENT_IP"]); $ ip \u003d $ ip. ".". $ ip. ".". $ ip. ".". $ ip;) elseif ((! isset ($ _ SERVER [ "HTTP_X_FORWARDED_FOR"])) | | (empty ($ _ SERVER [ "HTTP_X_FORWARDED_FOR"]))) (if ((! isset ($ _ SERVER [ "HTTP_CLIENT_IP"])) && (empty ($ _ SERVER [ "HTTP_CLIENT_IP"]))) ($ ip \u003d $ _SERVER [ "REMOTE_ADDR"];)) return $ ip;) // Отримуємо останні записи в гостьовій книзі function getLastRecords ($ iLimit \u003d 3) ($ sRecords \u003d ""; $ aRecords \u003d $ GLOBALS [ "MySQL"] -\u003e getAll ( "SELECT * FROM` s178_guestbook` ORDER BY `id` DESC L IMIT ($ iLimit) "); foreach ($ aRecords as $ i \u003d\u003e $ aInfo) ($ sWhen \u003d date ( "F j, Y H: i", $ aInfo [ "when"]); $ sRecords. \u003d<<

($ AInfo [ "description"])

EOF; ) Return $ sRecords; ) If ($ _POST) (// Приймаємо нові записи $ sIp \u003d getVisitorIP (); $ sName \u003d $ GLOBALS [ "MySQL"] -\u003e escape (strip_tags ($ _ POST [ "name"])); $ sEmail \u003d $ GLOBALS [ "MySQL"] -\u003e escape (strip_tags ($ _ POST [ "name"])); $ sDesc \u003d $ GLOBALS [ "MySQL"] -\u003e escape (strip_tags ($ _ POST [ "text"])); if ($ sName && $ sEmail && $ sDesc && $ sIp) (// Захист від спаму $ iOldId \u003d $ GLOBALS [ "MySQL"] -\u003e getOne ( "SELECT` id` FROM `s178_guestbook` WHERE` ip` \u003d "($ sIp) "AND` when`\u003e \u003d UNIX_TIMESTAMP () - 600 LIMIT 1 "); if (! $ iOldId) (// Можна додавати коментар $ GLOBALS [" MySQL "] -\u003e res (" INSERT INTO `s178_guestbook` SET` name` \u003d "($ sName)", `email` \u003d" ($ sEmail) ",` description` \u003d "($ sDesc)", `when` \u003d UNIX_TIMESTAMP (),` ip` \u003d "($ sIp)" ") ; // Виводимо останні 10 записів $ sOut \u003d getLastRecords (); echo $ sOut; exit;)) echo 1; exit;) // Виводимо останні 10 записів $ sRecords \u003d getLastRecords (); ob_start (); ?\u003e

Гостьова книга

Додайте ваш відгук тут

Гостьова книга на PHP



При відкритті сторінки ви побачите записну книжку. На лівій стороні виводиться останні три записи, а праворуч - форма для розміщення нового відкликання. Коли відправляється форма, скрипт посилає дані POST (тієї ж PHP сторінці), потім зберігає отримані дані в базі і повертає три останні записи. З використанням ефекту прояви записи виводяться на лівій стороні книги.

Також використовується файл PHP

classes / CMySQL.php

Даний файл містить код класу для роботи з базою даних. У ньому потрібно налаштувати три змінних для підключення до сервера.

$ This-\u003e sDbName \u003d "ІМЯ_БАЗИ_ДАННИХ"; $ This-\u003e sDbUser \u003d "ІМ'Я КОРИСТУВАЧА"; $ This-\u003e sDbPass \u003d "ПАРОЛЬ";

Крок 3. CSS

І тепер сформуємо зовнішній вигляд гостьової книги:

css / main.css

* (Margin: 0; padding: 0;) body (background-color: #fff; color: #fff; font: 14px / 1.3 Arial, sans-serif;) footer (background-color: # 212121; bottom: 0; box-shadow: 0 -1px 2px # 111111; display: block; height: 70px; left: 0; position: fixed; width: 100%; z-index: 100;) footer h2 (font-size: 22px; font- weight: normal; left: 50%; margin-left: -400px; padding: 22px 0; position: absolute; width: 540px;) footer a.stuts, a.stuts: visited (border: none; text-decoration: none ; color: #fcfcfc; font-size: 14px; left: 50%; line-height: 31px; margin: 23px 0 0 110px; position: absolute; top: 0;) footer .stuts span (font-size: 22px; font-weight: bold; margin-left: 5px;) .container (background: transparent url (../ images / book_open.jpg) no-repeat top center; color: # 000000; height: 600px; margin: 20px auto; overflow: hidden; padding: 35px 100px; position: relative; width: 600px;) # col1, # col2 (float: left; margin: 0 10px; overflow: hidden; text-align: center; width: 280px;) # col1 (-Webkit-transform: rotate (3deg); -moz-transform: rotate (3deg); -ms-transform: rotate (3deg); -o-transform: rotate (3deg); ) #Records form (margin: 10px 0; padding: 10px; text-align: left;) #records table td.label (color: # 000; font-size: 13px; padding-right: 3px; text-align: right ;) #records table label (font-size: 12px; vertical-align: middle;) #records table td.field input, #records table td.field textarea (background-color: rgba (255, 255, 255, 0.4) ; border: 0px solid # 96A6C5; font-family: Verdana, Arial, sans-serif; font-size: 13px; margin-top: 2px; padding: 6px; width: 190px;) #records table td.field input (background -color: rgba (200, 200, 200, 0.4); cursor: pointer; float: right; width: 100px;) #records table td.field input: hover (background-color: rgba (200, 200, 200, 0.8 );) #records_list (text-align: left;) #records_list .record (border-top: 1px solid # 000000; font-size: 13px; padding: 10px;) #records_list .record: first-child (border-top -width: 0px;) #records_list .record p: first-child (font-weight: bold; font-size: 11px;)

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

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

Далі хочу зауважити, що найбільш важливе в парсінгу це вміння правильно користуватися пошуковою системою. Тому потрібно знати синтаксис запитів. Я зупинюся на гуглі тому у нього найбільша база даних, щодо інших пошукових систем.
Синтаксис запитів гугла.
1) inurl: "xxx" - пошуковик видасть всі сайти у адресі яких знайде ххх, замість ххх ми можемо вставити будь-яке інше слово, наприклад guestbook, forum і т.д.
2) intitle: "xxx" - пошуковик видасть всі сайти в заголовку яких знайде ххх. Знову ж замість ххх може бути будь-яке слово.
3) site: .xxx.com - пошуковик видасть всі сторінки з домену xxx.com, замість ххх.соm може бути будь-який домен будь-якого рівня. Це може бути jopa.mail.ru або наприклад просто.ru, якщо ми просто оставім.ru, то пошуковик видасть нам все сайти з доменної зони.ru. Вместо.ru можуть бить.com, .org, .net і т.д.
4) intext: "xxx" - пошуковик видасть нам всі сайти в тексті у яких було знайдено слово ххх. Замість ххх - будь-яке слово.
5) "ххх" - пошуковик видасть нам сайти в яких було знайдено слово ххх (всього знайдено було всюди в урле або в тексті або в заголовку, неважливо).
6) - "ххх" - пошуковик видасть нам все сайтiв за винятком ті, в яких було знайдено слово ххх. Після мінуса також можуть стояти inurl: "xxx" intitle: "xxx" site: .xxx.com intext: "xxx" і ін.

*** Можна писати те ж саме і без лапок, але я настійно рекомендую завжди їх ставити, тому що лапки показує Гуглу строгість запиту, і тому він не буде видавати будь-яку гидоту, яка на його думку теж підходить під запит.

Дуже важливо не тільки знати синтаксис запитів, але і вміти правильно комбінувати їх. Цим ми зараз і займемося. Насправді все дуже і дуже просто.

Вступ.
У світі існує величезна кількість гостьових книг, але всі вони грубо кажучи діляться на два основних види однотипні і неоднотіпние. Однотипні гостьові - це гостьові які мають однакові закінчення і однакові обов'язкові поля для заповнення.
Ось приклади деяких однотипних гостьових.
http://www.saveus.org/guestbook/sign.asp?PagePosition\u003d1
http://www.caltrap.org/guestbook/sign.asp?PagePosition\u003d1
http://mail.bebat.be/guestbookf/sign.asp?PagePosition\u003d1
або
http://www.becquet.com/addguest.html
http://www.vetgen.com/guest/addguest.html
http://www.newcreations.net/webmaster/guestbook/addguest.html
Чим ці гостьові зручні:
1) Легко Парс
2) Легше аналізуються (якщо не спам 10 гостьових цього типу, значить все решта швидше за все теж не спам)

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

Займемося парсинга. Для початку ми повинні визначитися який тип гостьовий ми хочемо збирати і чим (всмисле руками багато не збереш Smile). Коли я починав, я користувався програмою AllSubmiter. У ньому є вбудований парсер. Програма як і всі інші платна, але без тріал терміну. А якщо не крякать цю програму то вона виконує тільки функції парсера, хех, а нам саме це і потрібно тому якщо ми скачемо його і не активуємо, то буде працювати тільки парсер, парсер збирає все урли зі сторінки виключаючи внутрішні посилання гугла, парсер відсіває на дублікати доменів і дублікати посилань.
AllSubmiter беремо тут
Для нового типу гостьових ми створюємо нову базу даних.

Задаємо їй ім'я.

Тепер приступимо, я покажу на конкретному прикладі як збирати базу за допомогою аллсубмітера. Давайте зберемо, ну скажімо тип гостьовий - gbook.php? A \u003d sign. Ці гостьові мають однакові закінчення При введенні в гуглі inurl: "gbook.php? A \u003d sign" в гуглі їх ~ 10,5К. Але гугл не видає понад 1000 результатів з запиту, що ж робити, як зібрати більше 1К? Для цього необхідно багато разів звузити запит, обов'язково щоб видача за запитом не перевищувала тисячу сайтів, таким чином ми можемо зібрати всі результати. Аналогією може бути те, що з дівчинки не знімеш весь одяг відразу одним махом, спочатку одне, потім інше, потім ліфчик і т.д. В результаті вона все одно стане голою, і трахатись буде той, який зняв весь одяг, а не той, який спробувавши зняти всі відразу одним махом, зняв тільки кепку і подумав що нічого іншого з неї не знімеш. Це я до того що не закінчується парсинг збором гостьових за запитом inurl: "gbook.php? A \u003d sign", але з нього починається. Бажано зробити запит навіть таким
inurl: "gbook.php? a \u003d sign" - "error" - "warning", таким чином ми прибираємо частина поганих неробочих сайтів.
Після того як ми створили нову базу даних а allsubmitere, вводимо в браузері програми google.com, і вводимо там запит. (Необхідно щоб в гуглі було поставленно - "видавати по 100 урлов на сторінці", це прискорить збір парсером аллсубмітера), ось що ми бачимо

Потім тиснемо ОК, потім в браузері програми "Назад" і те ж саме проробляємо з 2-ї сторінки видачі, потім з третьої і т.д.

Проробивши це складемо інший запит наприклад \u003e\u003e
inurl: "gbook.php? a \u003d sign" site: .com, тобто зберемо всі гест з доменної зони.com, знову виконаємо ту ж процедуру збору (див. картинки)
потім інший запит
inurl: "gbook.php? a \u003d sign" site: .net
inurl: "gbook.php? a \u003d sign" site: .biz
inurl: "gbook.php? a \u003d sign" site: .org
Взагалі можна пребрать всі типи доменів.
site: .com
site: .net
site: .biz
site: .org
site: .in
site: .name
site: .ru
site: .fr
site: .it
site: .edu
site: .gov
site: .mil
site: .info
site: .au
site: .at
site: .by
site: .be
site: .bg
site: .ca
site: .cn
site: .cz
site: .dk
site: .eg
site: .de
site: .gr
site: .hu
site: .ie
site: .il
site: .jp
site: .us
site: .uk
site: .ua
site: .ch
site: .se
site: .es
site: .pl
site: .nl
site: .ro
site: .to
site: .mx

Алсубмітер буде додавати базу тільки унікальні домени, тому не варто боятися робити будь-які запити, дублікатів НЕ буде J

Потім можна зробити такі запити
inurl: "guestbook / gbook.php? a \u003d sign"
inurl: "gbook / gbook.php? a \u003d sign"
inurl: "gb / gbook.php? a \u003d sign"
inurl: "guest / gbook.php? a \u003d sign"
А потім зробити таку фішку
inurl: "gbook.php? a \u003d sign" - inurl: "guestbook / gbook.php? a \u003d sign" -inurl: "gbook / gbook.php? a \u003d sign" -inurl: "gb / gbook.php? a \u003d sign "-inurl:" guest / gbook.php? a \u003d sign "
тобто отсеить то що вже Напарс

Можна комбінувати самі і самі різні запити разом, можна використовуючи "-"
відсіювати те, що ви вже Напарс, головне зробити якомога більше запитів.

Де шукати нові типи гестов? Зазвичай я використовував два методи:
1) В інтернеті часто поширюються готові гостьові книги, а раз вони поширюються значить вони масові, тобто для всіх, тобто багато їх собі встановлюють на різні сайти і т.д. Просто качаешь ці гести заливаєш на фрішників і дивишся на що вони закінчуються, а потім це закінчення дивишся в гуглі, якщо велика видача значить має місце її збирати, невелика - значить ці книги не користуються популярністю і збирати їх немає особливого сенсу.
2) Можна шукати нові типи гестов в беках у конкурентів, все може і говорять нібито некрасиво і т.д., але дуже і дуже багато так роблять, хоча імхо краще комбінувати перший і другий способи.

З нормальних автоматичних парсеров дуже рекомендую парсер Манго (253880089 - його ася), він недорогий, але дуже швидко і якісно збирає, фільтрує на дублікати і видаляє пхп сесії + розподіляє по ПР.

Впринципі все, всі питання та зауваження пишіть тут, спробую відповісти всім.

© vadiuha. Всі права защішени

PHP 5.2 і вище;
- mod_rewrite;
- База даних MySQL 4.1 і вище.

можливості

Вбудовується під будь-який сайт (для цього потрібно всього лише відредагувати файли top.php і bottom.php);
- антіфлуд;
- бан лист;
- посторінкова навігація виду<< < ...| 5 | 6 | 7 ... > >>;
- підтримка BBCode;
- відображення смайликів;
- повідомлення про нові доданих повідомлень;
- можливість додавання повідомлень на модерацію;
- Панель Адміністратора;
- простота в установці і настоянці.

установка

Розпакуйте архів і скопіювати вміст архіву в будь-яку папку на Вашому веб сервері (наприклад "guestbook"). Відкрийте файл config / config_db.php в текстовому редакторі і вкажіть настройки підключення (хост бази даних або IP, ім'я бази даних, логін і пароль). Додайте таблиці бази даних MySQL SQL-запиту з файлу guestbook.sql. зазвичай на більшість хостинг це робиться за допомогою web-інтерфейсу через phpMyAdmin. Зайдіть в панель адміністрування (http: // ваш_сайт / папка_с_скріптом / admin /) і введіть пароль 1111. Далі вкажіть необхідні настройки.

Комерційна версія

За бажанням замовника я можу адаптувати скрипт під конкретні умови. Можуть бути додані різні додаткові функції.

Примітка

СКРИПТ "PHP Guestbook", ДАЛІ ПРОСТО ПРОГРАМА Є ПОВНІСТЮ БЕЗКОШТОВНА. ВИ МОЖЕТЕ СВОБОДНО ПОШИРЮВАТИ, КОПІЮВАТИ, ВНОСИТИ СВОЇ ЗМІНИ В вихідному коді ПРОГРАМИ, ЛИШЕ ЗА УМОВИ ЗБЕРЕЖЕННЯ копірайт АВТОРА. ВИКОРИСТАННЯ ПРОГРАМИ "PHP Guestbook" В КОМЕРЦІЙНИХ МЕТОЮ ЗАБОРОНЕНО. ВИКОРИСТАННЯ У ПРОГРАМІ ДВ НА СВІЙ ВЛАСНИЙ РИЗИК. АВТОР НЕ НЕСЕ ВІДПОВІДАЛЬНОСТІ ЗА ПРАЦЕЗДАТНІСТЬ ПРОГРАМИ, А ТАКОЖ ЗА ВТРАТИ, ПОШКОДЖЕННЯ ДАНИХ АБО ЧОГО АБО ІНШОГО, ПОВ'ЯЗАНІ З ВИКОРИСТАННЯМ ТА РОБОТОЮ ЦІЄЇ ПРОГРАМИ.

Якщо Вам сподобався мій скрипт і у Вас є бажання віддячити мене рублем, то ось мої реквізити:

WebMoney
U237811811298
R198597198920
Z917380288657

Яндекс гроші
41001635943434

PayPal

Якщо у Вас виникнуть питання або є пропозиції, будь ласка, пишіть мені на адресу: Ця електронна адреса захищена від спам-ботів. У вас повинен бути включений JavaScript для перегляду.



Сподобалася стаття? поділіться їй