Цреате ан АЈА суппортед регистратион форм итх хизБасе

Nurazije / 16. март 2010

Тхис туториал илл дисцусс фанц сецуре регистратион формс, итх АЈА тецхнолог суппорт. Ин тхис артицле И ассуме оу алреад кно ХТМЛ анд соме ЈС. И илл рите тхе цоде усинг хизБасе Сервер Пагес, со оу неед то кно соме басицс ин БСП (оу мигхт лоок ат соме оф м отхер артицлес он хизБасе).

Тхе Струцтуре

И илл фирст еплаин тхе струцтуре оф оур регистратион форм, ас И ам усинг АЈА, И илл нот хаве ан рефресх фор оур паге, со И илл хаве оне маин паге итх тхе ХТМЛ анд ЈС цоде.

Фор тхе валидатион процесс И илл усе оне хизБасе филе, фор субмиттинг регистратион дата И илл усе анотхер хизБасе филе.

То сторе тхе регистратион информатион И илл неед а ДБ, анд фор тхис демонстратион И илл усе тхе симплест оне, Мицрософт Аццесс ДБ.

Евер регистратион процесс неедс а цонфирматион процесс то редуце спам регистратионс. Со И илл неед оне хизБасе филе фор цонфирматион, фор сендинг тхе емаил И илл усе то филес (И илл еплаин х латер ин тхис артицле).

Но лет гиве намес, И илл цреате дефаулт.бсп, валидате.бсп, субмит.бсп, маил.бсп, бланк.хтмл анд цонфирм.бсп. И илл цреате рег.мдб фор ДБ.

Регистратион Елементс

Тхе регистратион форм илл цонтаин а усер наме, фирст наме, ласт наме, емаил анд пассорд. Алл елементс аре реуиред, со но елемент муст бе емпт. Тхе усер наме муст бе аваилабле, тхе пассорд муст бе репеатед то цонфирм тхе пассорд анд тхе емаил муст бе реал.

<хтмл> <хеад> <титле>Регистратион Форм</титле> <сцрипт тпе="тет/јавасцрипт"> фунцтион лоадМЛДоц(урл,резулт) { иф (индо.МЛХттпРеуест) {// цоде фор ИЕ7+, Фирефо, Цхроме, Опера, Сафари млхттп=не МЛХттпРеуест(); } елсе {// цоде фор ИЕ6, ИЕ5 млхттп=не АцтивеОбјецт("Мицрософт.МЛХТТП"); } млхттп.опен("ГЕТ",урл,фалсе); млхттп.сенд(нулл); доцумент.гетЕлементБИд(резулт).иннерХТМЛ=млхттп.респонсеТет; } фунцтион Валидате() { лоадМЛДоц('валидате.бсп?усернаме='+доцумент.гетЕлементБИд("усернаме").валуе+'&фнаме='+доцумент.гетЕлементБИд("фнаме").валуе+'&лнаме='+доцумент.гетЕлементБИд("лнаме").валуе+'&пассорд='+доцумент.гетЕлементБИд("пассорд").валуе+'&пассорд2='+доцумент.гетЕлементБИд("пассорд2").валуе+'&емаил='+доцумент.гетЕлементБИд("емаил").валуе,'мсгс'); иф(доцумент.гетЕлементБИд('мсгс').иннерХТМЛ==""){ лоадМЛДоц('субмит.бсп?бф_усернаме='+доцумент.гетЕлементБИд("усернаме").валуе+'&бф_фнаме='+доцумент.гетЕлементБИд("фнаме").валуе+'&бф_лнаме='+доцумент.гетЕлементБИд("лнаме").валуе+'&бф_пассорд='+доцумент.гетЕлементБИд("пассорд").валуе+'&бф_емаил='+доцумент.гетЕлементБИд("емаил").валуе,'мсгс'); } } </сцрипт> </хеад> <бод> <див ид="мсгс"></див> <фиелдсет><легенд>Ентер оур информатион ин тхе форм бело.</легенд><бр /> Усернаме:<бр /> <инпут тпе="тет" наме="усернаме" ид="усернаме" сизе="40" маленгтх="60" /><бр /><бр /> Фирст Наме:<бр/> <инпут тпе="тет" наме="фнаме" ид="фнаме" сизе="40" маленгтх="60" /><бр /><бр /> Ласт Наме:<бр/> <инпут тпе="тет" наме="лнаме" ид="лнаме" сизе="40" маленгтх="60"/><бр /><бр /> Пассорд:<бр /> <инпут тпе="пассорд" наме="пассорд" ид="пассорд" сизе="40" маленгтх="60"/><бр /><бр /> Цонфирм оур Пассорд:<бр /> <инпут тпе="пассорд" наме="пассорд2" ид="пассорд2" сизе="40" маленгтх="60"/><бр /><бр /> Е-Маил:<бр /> <инпут тпе="тет" наме="емаил" ид="емаил" сизе="40" маленгтх="60"/><бр /><бр /> </фиелдсет> <див алигн="центер"> <инпут тпе="буттон" валуе="Субмит" онцлицк="Валидате();" /></див> </бод> </хтмл>

Лет ме но еплаин тхе ХТМЛ анд ЈС цоде. Тхе ХТМЛ цоде хаве тхе басиц елементс оф тхе регистратион, И хаве инпут тет фиелдс то инсерт дата неедед фор тхе регистратион итх то пассорд фиелдс (фор тхе пассорд, анд а сецонд фор цонфирматион). Финалл И хаве а субмит буттон анд а див фор виеинг сстем мессагес.

Тхе ЈС цоде хас то фунцтионс, тхе фирст ис тхе АЈА ЈС фунцтион, тхе отхер ис тхе валидате фунцтион тхат И цалл хен И субмит тхе форм.

оу илл нотице И цалл АЈА фор то реасонс, оне ис фор валидатинг тхе дата ин тхе форм, тхе сецонд ис фор савинг тхе дата ин тхе ДБ.

Валидатион процесс

И илл цреате а филе фор валидатинг форм дата анд илл наме ит ас "валидате.бсп". Ин тхис сцрипт И неед то валидате дата, иф тхере ис еррорс И муст диспла ан еррор мессаге, иф нот, кееп тхе оутпут емпт. Тхе оутпут илл бе ретурнед б АЈА анд дисплаед ин тхе мессагес див.

[ФормФиелдс] б_басенаме=рег.мдб б_рцдсет=профиле Б_Цомманд= б_уер=усернаме="$бв{усернаме}" б_марец=1 [МсгАндЛбл] БМ_НоМатцх=$бсетв{мсг|} <!--Б_БегинТемплате-->$биф["$бп[рц]"=1|$бсетв[мсг|Тхе усернаме ис нот аваилабле, пласе цхоосе анотхер!<бр />]|]$биф["$бв[усернаме]"=""|$бсетв[мсг|$бгетв[мсг]Плеасе рите оур усернаме!<бр />]|]$биф["$бв[фнаме]"=""|$бсетв[мсг|$бгетв[мсг]Плеасе рите оур фирст наме!<бр />]|]$биф["$бв[лнаме]"=""|$бсетв[мсг|$бгетв[мсг]Плеасе рите оур фирст наме!<бр />]|]$бсплит[$бв[емаил]|емаил_арра|@|Ф]$бсплит[$бгетв[емаил_арра(1)]|домаин|.|Ф]$биф["$бв[пассорд]"=""|$бсетв[мсг|$бгетв[мсг]Плеасе инсерт а пассорд!<бр />]|]$биф["$бв[пассорд]"<>"$бв[пассорд2]"|$бсетв[мсг|$бгетв[мсг]оур пассордс до нот матцх!<бр />]|]$биф[($бцстр[$бв[емаил]|@]=1) анд ($блен[$бгетв[емаил_арра(0)]]>0) анд ($блен[$бгетв[емаил_арра(1)]]>0) анд ($блен[$бгетв[домаин(0)]]>0) анд (($блен[$бгетв[домаин(1)]]>1) анд ($блен[$бгетв[домаин(1)]]<5))||$бсетв[мсг|$бгетв[мсг]Плеасе инсерт а валид емаил аддресс<бр />]]$бгетв[мсг]

хизБасе до нот рецогнизе линес, ит'с цоде ис дирецтл ембедед ин ХТМЛ, со ан етра хите спаце ор бреак илл схо ин тхе ХТМЛ, со И хаве ремовед алл хите спацес анд бреакс И до нот неед.

Лет ус го тхроугх тхе цоде степ б степ.

[ФормФиелдс] б_басенаме=рег.мдб б_рцдсет=профиле Б_Цомманд= б_уер=усернаме="$бв{усернаме}" б_марец=1 [МсгАндЛбл] БМ_НоМатцх=$бсетв{мсг|} <!--Б_БегинТемплате-->

Хере И ам цоннецтинг то м ДБ Аццесс филе итх тхе рецорд сет (табле) профиле, макинг а уер цомманд анд гивинг а хере цлаусе оптион усернаме="$бв{усернаме}", хере $бв{усернаме} илл схо тхе параметер И сент б АЈА б гет ор пост метход. Фор хизБасе гет анд пост аре тхе саме.

И ам лимитинг тхе рецордс итх 1 маимум, бецаусе И јуст ант то цхецк иф тхе усернаме алреад еистс ин тхе ДБ. Иф тхере ис но рецордс И илл сет тхе мсг вариабле емпт, И илл неед тхис вариабле латер ин тхе цоде. БМ_НоМатцх гивес "Но Матцхинг рецордс" мессаге б дефаулт, И до нот ант тхат, со И ам јуст сеттинг а вариабле.

$биф["$бп[рц]"=1|$бсетв[мсг|Тхе усернаме ис нот аваилабле, плеасе цхоосе анотхер!<бр />]|]

Иф тхе уер абове ретурнс дата И илл гиве ан еррор мессаге тхат тхе усернаме ис нот аваилабле, анд саве тхе мессаге ин тхе мсг вариабле. И'м усинг ан ИФ статемент анд цхецк иф $бп[рц] хицх ретурнс тхе нумбер оф рецордс аре еуал то оне.

$биф["$бв[усернаме]"=""|$бсетв[мсг|$бгетв[мсг]Плеасе рите оур усернаме!<бр />]|]

Ин цасе тхе усернаме ис емпт И гиве ан еррор мессаге то рите тхе усернаме. хен И ассигн тхе мессаге то тхе вариабле И муст нот форгет тхе мессагес е хаве фром бефоре, со И усе бгетв ин бсетв то адд тхе паст онес алсо.

$биф["$бв[фнаме]"=""|$бсетв[мсг|$бгетв[мсг]Плеасе рите оур фирст наме!<бр />]|] $биф["$бв[лнаме]"=""|$бсетв[мсг|$бгетв[мсг]Плеасе рите оур фирст наме!<бр />]|] $биф["$бв[пассорд]"=""|$бсетв[мсг|$бгетв[мсг]Плеасе инсерт а пассорд!<бр />]|]

Тхе саме процесс ас бефоре И до фор тхе фирст наме, тхе ласт наме анд тхе пассорд.

$биф["$бв[пассорд]"<>"$бв[пассорд2]"|$бсетв[мсг|$бгетв[мсг]оур пассордс до нот матцх!<бр />]|]

Иф тхе пассордс до нот матцх, ит ис алсо ан еррор. хизБасе усес <> фор нот еуал. Иф оу пут != ит илл провоке а снта еррор.

$бсплит[$бв[емаил]|емаил_арра|@|Ф] $бсплит[$бгетв[емаил_арра(1)]|домаин|.|Ф] $биф[($бцстр[$бв[емаил]|@]=1) анд ($блен[$бгетв[емаил_арра(0)]]>0) анд ($блен[$бгетв[емаил_арра(1)]]>0) анд ($блен[$бгетв[домаин(0)]]>0) анд (($блен[$бгетв[домаин(1)]]>1) анд ($блен[$бгетв[домаин(1)]]<5))||$бсетв[мсг|$бгетв[мсг]Плеасе инсерт а валид емаил аддресс<бр />]]

Цхецкинг тхе емаил иф ит ис валид ис а литтле море цомплицатед процесс: И неед то цхецк иф тхе емаил аддресс хас ан @ сигн, анд иф ит хас ат леаст оне цхарацтер бефоре анд афтер тхе @ сигн. И алсо цхецк иф тхе домаин наме парт бефоре тхе дот хас ат леаст оне цхарацтер, анд иф тхе ТЛД парт ис ат леаст 2 цхарацтерс бут нот море тхан фоур.

$бгетв[мсг]

Финалл И диспла тхе еррор мессагес И хаве цоллецтед, иф но еррор мессагес аре провокед И илл хаве ан емпт вариабле. Тхис дата ис дисплаед б АЈА ин м мессагес див.

Тхе Датабасе

Бефоре И го итх тхе субмиттинг дата процесс, И неед то схо оу тхе ДБ И хаве цреатед. Ит ис оне ДБ цонтаининг оне табле цаллед профиле. Профиле цонтаинс севен фиелдс. Тхе ид ис ан ауто-инцрементал фиелд. Тхе цонфирм фиелд ис а нумбер тпе фиелд итх зеро дефаулт валуе. Тхе рест фиелдс (усернаме, фнаме, лнаме, пассорд, емаил) аре тет тпе фиелдс. И ам савинг тхе ДБ ас "рег.мдб" аццесс филе.

Субмиттинг тхе дата

Тхе субмиттинг сецтион оф тхе цоде доесн'т јуст саве дата то тхе ДБ, ит алсо цаллс тхе емаил филе то сенд а цонфирматион реуест емаил.

Бефоре И гет то тхат, И пасс тхе параметерс ин тхе УРЛ усинг ЈС, а литтле бит дифферент тхан бефоре. И ам усе а бф_ префи фор евер параметер И ант то адд то тхе ДБ. хизБасе такес тхем аутоматицалл анд филтерс тхем, тхен аддс тхем ин тхе лоцатион е специф.

Тхис цоде илл саве тхе дата ин рег.мдб ДБ, ин профиле табле усинг Адд цомманд. И илл усе бгетурл фунцтион то цалл тхе емаил сендинг филе, И ам пассинг тхе ид анд тхе емаил оф тхе ласт инсертед дата. Б $бф И цан гет тхе дата инсертед б тхис оператион.

И ретурн виа АЈА тхе мессаге "оу илл рецеиве а цонфирматион емаил то финисх тхе регистратион процесс.".

Ат тхис тиме И хаве дата ин тхе ДБ, бут ит ис стилл нот цонфирмед. И хаве цреатед а цонфирм фиелд ин тхе ДБ хицх хас б дефаулт а зеро валуе.

Сендинг емаил

Сендинг ан емаил ин хизБасе ис вер еас, ит суппортс ХТМЛ б дефаулт, антхинг И рите ин тхис филе афтер тхе "<!--Б_БегинТемплате-->" цоде, илл бе схон ин тхе емаил. Со И муст бе царефул хат И рите.

[ФормФиелдс] Б_Цомманд=П Б_Фром=админ@оурдомаин.цом Б_Редирецт=бланк.хтмл Б_Субјецт=Плеасе цонфирм оур регистратион б_маилсервер=маил.оурдомаин.цом Б_То=$бв{емаил} <!--Б_БегинТемплате-->Плеасе цлицк <а хреф="хттп://.оурдомаин.цом/цонфирм.бсп?бф_ид=$бв[ид]">хере</а> то цонфирм оур регистратион.

Тхе цомманд П ис фор сендинг цустом емаил. И специф тхе емаил аддресс И ам сендинг фром, ас елл ас фром хицх маил сервер, тхе реципиент'с емаил аддресс, анд тхе субјецт оф тхе емаил. Афтер тхе "<!--Б_БегинТемплате-->" цоде И рите евертхинг И ант то схо ин тхе емаил, хицх ин тхис цасе ис а линк то тхе цонфирматион паге, итх тхе ид оф тхе профиле И савед.

И цалл тхис филе итх тхе бгетурл фунцтион, хицх илл схо ме тхе дата ретурнед фром тхе филе цаллед. Со И неед то ретурн нотхинг б редирецтинг тхе паге И ам цаллинг то бланк.хтмл (хицх ис а бланк филе). Тхе редирецт ин хизБасе ис маде он тхе сервер сиде, со И до нот гет тхе мессаге оф тхе емаил, бут тхе бланк паге.

Цонфирматион процесс

хен тхе гуест макес а регистратион хе илл рецеиве м емаил фор цонфирматион, тхе линк то тхе цонфирматион муст бе цлицкед, хицх илл цалл м филе фор цонфирматион.

[ФормФиелдс] б_басенаме=рег.мдб б_рцдсет=профиле Б_Цомманд=У Б_УИД=ид Б_ФОРЦЕД=бф_цонфирм=1 <!--Б_БегинТемплате-->Но оу цан логин то тхе сстем!

Тхе цонфирматион илл упдате тхе ДБ, анд пут валуе 1 ин тхе фиелд цонфирм фор тхе специфиед профиле. Упдатинг тхе ДБ ис симпле, И специф тхе ДБ наме, тхе рецордсет (табле) наме, тхе У цомманд фор упдате, И специф хицх фиелд ис тхе униуе идентифиер фор тхис процесс. Ин оур цасе ит ис ИД. Анд И илл форце оне параметер ас ит ис сент итх тхе УРЛ цалл, ит ис бф_цонфирм = 1.

Финалл И телл тхе гуест тхат хе хас бецоме а усер. Ин тхе нет артицле И илл схо оу хо то маке а Логин ин хизБасе цоде.

Фор море информатион емаил ме ат: НурАзије [ат] Гмаил [дот] цом Ор висит тхе хизБасе оффициал сите ат .хизбасе.цом


Од истог аутора

Најновије

Посматрајте догађаје изблиза.

Пријавите се на наш Newsletter.