Cum să vă creați propria pagină de înregistrare în WordPress Multisite. Trimiteți formularul fără reîncărcare folosind jQuery AJAX Silent signup php lang

Multe dintre site-uri web au un formular de înregistrare pentru ca utilizatorii dvs. să se înscrie și, astfel, pot beneficia de un fel de privilegii în cadrul site-ului. În acest articol vom vedea cum să creați un formular de înregistrare în PHP și MySQL.

Vom folosi etichete simple și, de asemenea, vom folosi eticheta table pentru a proiecta pagina web Sign-Up.html. Să începem:

Lista 1: sign-up.html

Formular de înregistrare pentru înscriere

Nume
E-mail
Nume de utilizator
Parola
Confirmă parola


Figura 1:

Descrierea paginii web sing-in.html:

După cum puteți vedea în Figura 1, există un formular de înregistrare și solicită puține date despre utilizator. Acestea sunt datele comune pe care orice site le solicită utilizatorilor sau vizitatorilor săi să creeze un ID și o parolă. Am folosit eticheta tabel pentru că pentru a afișa câmpurile formularului de pe pagina web într-un formular de aranjare, așa cum le puteți vedea în Figura 1. Pare atât de simplu, deoarece încă nu am folosit stilul CSS pe el, acum haideți să folosim stiluri CSS și să legăm Fișier în stil CSS cu pagina web sing-up.html.

Lista 2: style.css

/*Fișier CSS pentru pagina web de înscriere*/ #body-color( background-color:#6699CC; ) #Sign-Up( background-image:url("sign-up.png"); background-size:500px 500px ; background-repeat:no-repeat; background-attachment:fix; background-position:center; margin-top:150px; margin-bottom:150px; margin-right:150px; margin-left:450px; padding:9px 35px; ) #button( chenar-rază:10px; lățime:100px; înălțime:40px; fundal:#FF00FF; font-weight:bold; font-size:20px; )

Lista 3: Conectați style.css cu pagina web sign-up.html



Figura 2:

Descrierea fișierului style.css:

În fișierul CSS extern am folosit câteva stiluri care ar putea arăta noi pentru tine. Cum am folosit o imagine în fundal și am pus-o în centrul paginii web. Care a devenit ușor de utilizat cu ajutorul etichetei html div. Deoarece am folosit trei ID-uri de etichete div. #button, #sing-up și #body-color și le-am aplicat toate stilurile CSS și acum puteți vedea Figura 2, cât de frumos și atractiv arată. Puteți utiliza multe alte stiluri CSS, cum ar fi stilurile CSS 2D și 3D pe el. Va arata mai frumos decat pare acum.

După toate aceste lucrări simple, acum vom crea o bază de date și un tabel pentru a stoca toate datele în baza de date a noilor utilizatori. Înainte de a crea un tabel, ar trebui să știm ce cerem de la utilizator. Pe măsură ce am conceput formularul, vom crea tabelul conform formularului de înregistrare, pe care îl puteți vedea în Figura 1 și 2.

Lista 3: Interogare pentru tabel în MySQL

CREATE TABLE WebsiteUsers (userID int(9) NOT NULL auto_increment, fullname VARCHAR(50) NOT NULL, userName VARCHAR(40) NOT NULL, email VARCHAR(40) NOT NULL, trece VARCHAR(40) NOT NULL, PRIMARY KEY(userID) );

Descrierea listei 3:

Un lucru ar trebui să știți că, dacă nu aveți facilitate MySQL pentru a utiliza această interogare, ar trebui să urmați articolul meu anterior despre . din acest link veți putea înțelege instalarea și cerințele. Și cum îl putem folosi.

În interogarea listare 3 am folosit toate acele lucruri de care avem nevoie pentru formularul de înregistrare. Deoarece există variabile de e-mail, nume complet, parolă și nume de utilizator. Aceste variabile vor stoca date ale utilizatorului, pe care el/ea le va introduce în formularul de înregistrare din Figura 2 pentru înscriere.

După toate aceste lucrări, vom lucra cu programarea PHP, care este un limbaj de programare pe partea de server. De aceea trebuie să creați o conexiune cu baza de date.

Lista 4: Conexiune la baza de date

Descrierea listei 4:

Am creat o conexiune între baza de date și paginile noastre web. Dar dacă nu știți dacă funcționează sau nu, atunci mai folosiți un lucru în ultima lista de verificare 5 pentru el.

Lista 5: verificarea conexiunii conectivității bazei de date

Lista de descriere 5:

În Lista 5 am încercat doar să vă arăt că puteți verifica și confirma conexiunea dintre baza de date și PHP. Și încă un lucru, nu vom folosi codul Listing 5 în pagina noastră web de inscriere. Pentru că este doar pentru a vă face să înțelegeți cum puteți verifica conexiunea MySQL.

Acum vom scrie o aplicație de programare PHP pentru a verifica mai întâi disponibilitatea utilizatorului și apoi a stoca utilizatorul dacă acesta este un utilizator nou pe pagina web.

Lista 6: connectivity-sign-up.php

Descrierea connectivity-sign-up.php

În această aplicație PHP am folosit cel mai simplu mod de a crea o aplicație de înscriere pentru paginile web. După cum puteți vedea, mai întâi creăm o conexiune ca lista 4. Și apoi am folosit două funcții, prima funcție este SignUP(), care este apelată de instrucțiunea if din ultima aplicație, unde prima confirmă apăsarea butonului de înregistrare. buton. Dacă este apăsat, va apela funcția SingUp și această funcție va folosi o interogare de SELECT pentru a prelua datele și a le compara cu userName și e-mailul introdus în prezent de la utilizator. Dacă numele de utilizator și adresa de e-mail sunt deja prezente în baza de date, se va spune scuze, sunteți deja înregistrat

Dacă utilizatorul este nou, deoarece numele său de utilizator actual și ID-ul de e-mail nu sunt prezente în baza de date, astfel încât instrucțiunea If va apela NewUser() unde va stoca toate informațiile noului utilizator. Și utilizatorul va deveni parte a paginii web.



Figura 3

În figura 3, utilizatorul introduce date pentru a se înscrie dacă utilizatorul este un utilizator vechi al acestei pagini web conform înregistrărilor bazei de date. Astfel, pagina web va afișa un mesaj că utilizatorul este deja înregistrat dacă utilizatorul este nou, astfel încât pagina web va afișa un mesaj că înregistrarea utilizatorului este finalizată.



Figura 4:

Pe măsură ce am introdus date în formularul de înregistrare (Figura 4), conform bazei de date, numele de utilizator și e-mailul pe care l-am introdus în formularul de înregistrare pentru înregistrare, este deja prezent în baza de date. Așa că ar trebui să încercăm un nou nume de utilizator și o adresă de e-mail pentru a vă înscrie cu un nou ID și o nouă parolă.



Figura 5

În figura 5, ne confirmă ce nume de utilizator și ID-ul de e-mail a introdus utilizatorul. Ambele nu sunt prezente în înregistrările bazei de date. Așadar, acum este creat un nou ID și o parolă, iar utilizatorul poate să-și folosească noul ID și parola pentru a se autentifica data viitoare.

Concluzie:

În acest articol am învățat cel mai simplu mod de a crea o pagină web de înscriere. De asemenea, am învățat cum se ocupă cu baza de date dacă folosim PHP și MySQL. Am încercat să vă ofer cunoștințe de bază despre funcționalitatea de înscriere a paginii web. Cum funcționează la partea din spate și cum îi putem schimba aspectul pe partea din față. Pentru orice întrebare nu ezitați și comentați.

Creăm propria noastră pagină de înregistrare pentru un multisite în locul standardului wp-signup.php.

Într-o instalare tipică WordPress, pagina de înregistrare (autentificare, resetare parolă) este scoasă din fișierul wp-login.php.

  • /wp-login.php - autorizare
  • /wp-login.php?action=register - înregistrare
  • /wp-login.php?action=lostpassword - resetarea parolei

Există condiții separate pentru un multisite în wp-login.php. Deci, atunci când urmați linkul /wp-login.php?action=register pe un multisite, WordPress va redirecționa către pagina /wp-signup.php. Multe teme nu fac pagina să arate foarte atractivă, așa că o vom crea pe a noastră.

Site-ul principal al rețelei

Implicit, WordPress deschide pagina de înregistrare (wp-signup.php) pe domeniul (site-ul) principal al rețelei. Cu toate acestea, puteți face o pagină de înregistrare separată pentru fiecare site din rețeaua dvs., chiar dacă acestea au teme diferite. Vom lua în considerare cazul în care toate site-urile din rețea au propria lor pagină de înregistrare, dar se folosește aceeași temă și site-urile diferă doar prin limbă. Dacă utilizați teme diferite, va trebui să scrieți mai mult cod.

functions.php?

Nu. Acest nume de fișier pare să fie menționat în fiecare articol despre WordPress. În cazul nostru, având în vedere că funcționalitatea de înregistrare este concepută pentru mai multe site-uri, are sens să o includem în plugin-urile MU, care se încarcă atunci când se deschide orice site.

Digresiune lirică

Este de remarcat faptul că pluginurile MU sunt încărcate înaintea pluginurilor obișnuite și înainte ca nucleul WordPress să fie complet încărcat, astfel încât apelarea unor funcții poate duce la erori fatale în PHP. O astfel de încărcare „devreme” are și avantajele sale. Să presupunem că în interiorul oricărei teme nu puteți atașa la unele acțiuni care sunt declanșate chiar înainte ca fișierul functions.php să fie încărcat din temă. Un exemplu în acest sens sunt acțiunile din pluginul Jetpack de forma jetpack_module_loaded_related-posts (related-posts este numele modulului), cu ajutorul cărora este posibilă monitorizarea activității modulelor din Jetpack. Este imposibil să „atașați” la această acțiune din fișierul temă, deoarece acțiunea s-a declanșat deja înainte ca tema să fie încărcată - pluginurile sunt încărcate înaintea temelor. Puteți arunca o privire la imaginea generală a ordinii de încărcare WordPress pe pagina Action Reference din codex.

Ordinea fișierelor

Pluginurile MU pot conține orice număr de fișiere și orice structură care vi se pare logică. Mă țin de ceva ca această ierarhie:

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

Fișierul load.php conține toate „pluginurile” necesare pentru rețeaua noastră:

// Încărcați traducerile pentru toate suplimentele load_muplugin_textdomain ("selena_network", "/selena-network/languages/"); // Înregistrarea în rețea necesită WPMU_PLUGIN_DIR . „/selena-network/signup/plugin.php”; // Alte pluginuri // necesită WPMU_PLUGIN_DIR ...

În interiorul folderului selena-network sunt stocate foldere cu pluginuri, fiecare cu propriul plugin.php, pe care îl includem în load.php. Acest lucru vă oferă flexibilitate și capacitatea de a opri și a porni rapid lucrurile.

Adresa paginii de înregistrare

Pentru a specifica adresa paginii de înregistrare, utilizați filtrul wp_signup_location. Acesta poate fi găsit în interiorul fișierului wp-login.php și este responsabil pentru redirecționarea către wp-signup.php.

Caz „înregistrare”: if (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php"))); ieșire;

Să adăugăm funcția noastră la mu-plugins/selena-network/signup/plugin.php, care va returna adresa paginii de înregistrare pe site-ul curent:

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

selena_network este prefixul pe care îl folosesc în numele tuturor funcțiilor din interiorul pluginurilor MU de pe site-ul meu pentru a evita coliziunile, ar trebui să fie înlocuit cu propriul prefix unic. Prioritatea de adăugare a unui filtru este 99, deoarece unele plugin-uri, de exemplu bbPress și BuddyPress, pot suprascrie această adresă cu propria lor (plugin-urile MU se încarcă mai devreme decât pluginurile obișnuite, vezi mai sus). Rețineți că home_url() este folosit în loc de network_site_url() pentru a menține vizitatorul pe același domeniu. Orice adresă URL poate fi folosită ca adresă.

Crearea unei pagini

Acum haideți să creăm o pagină cu adresa site.com/signup/ prin interfața normală, iar în folderul cu tema copil șablonul pentru noua noastră pagină este page-signup.php. În loc de cuvântul „înregistrare”, puteți utiliza un ID unic.

În noul șablon, trebuie să apelați funcția selena_network_signup_main(), care va afișa formularul de înregistrare.

Merită remarcat faptul că întregul proces de șablon este opțional și, în schimb, puteți crea propriul cod scurt care va apela și funcția selena_network_signup_main().

wp-signup.php și wp-activate.php

Acum să creăm o funcție care va afișa formularul de înregistrare. Pentru a face acest lucru, copiați fișierele wp-signup.php și wp-activate.php din rădăcina WordPress în mu-plugings/selena-network/signup/ (și nu uitați să le conectați în mu-plugins/selena-network /signup/plugin.php) . Manipulările ulterioare cu fișierele sunt extrem de dificile și lungi de descris, așa că va trebui să le faceți singur. Voi descrie exact ce trebuie făcut și voi publica fișierele sursă ale proiectului meu:

  • La începutul fișierului, eliminați toate apelurile require , funcții și alt cod din afara funcțiilor.
  • Redenumiți toate funcțiile adăugând prefixe unice la nume.
  • Înfășurați partea inferioară a codului wp-signup.php în funcția selena_network_signup_main și la început scrieți global $active_signup; .
  • Înlocuiți aspectul cu al dvs. în locurile potrivite.
  • În interiorul wp-activate.php trebuie să faceți aproximativ același lucru:

  • Eliminați tot codul din afara funcțiilor, înglobați aspectul într-o funcție separată.
  • Schimbați aspectul în locurile unde este necesar.
  • Fișierul wp-activate.php este responsabil pentru pagina de activare a contului. Ca și în cazul paginii de înregistrare, trebuie să creați un șablon separat pentru aceasta, în interiorul căruia trebuie să apelați funcția din fișierul wp-activate.php.

    Trimiterea scrisorilor de activare

    Pagina de înregistrare trimite vizitatorului un e-mail cu un link pentru a-și activa contul. În mod implicit, acest lucru este realizat de funcția wpmu_signup_user_notification() din fișierul ms-functions.php. Puteți împrumuta funcționalitatea acestuia pentru propria dvs. funcție. Motivul pentru a evita utilizarea acestei funcții este că trimite linkul de activare a contului de la wp-activate.php. Puteți „dezactiva” această funcție folosind filtrul wpmu_signup_user_notification, returnându-l fals (dacă nu se face acest lucru, scrisoarea de activare va fi trimisă de două ori, bine, de fapt două litere diferite).

    Funcția armyofselenagomez_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // ... // Cod din funcția wpmu_signup_user_notification() wp_mail($user_email, wp_specialchars_decode($subject), $message_headers) ; return false; ) add_filter("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

    Drept urmare, pagina de înregistrare în tema Selena a început să arate mult mai curată și mai îngrijită.

    Concluzie

    Există multe alte modalități nu tocmai corecte pe Internet de a face același lucru - redirecționări Apache, formulare AJAX care nu vor funcționa fără Java Script etc. Nu mi-au plăcut foarte mult toate acestea, așa că am încercat să o fac la fel de corect ca posibil pe propriul meu site.

    Remarc că ar trebui să editați fișierele cu atenție și să încercați să nu vă abateți prea mult de la cele originale, astfel încât pe viitor, dacă WordPress va modifica fișierele wp-signup.php și wp-activate.php, să fie mai ușor de comparat ei unul cu celălalt pentru a găsi schimbări.

    Nu uitați să vă uitați la codul sursă al tuturor funcțiilor descrise mai sus pentru a înțelege pe deplin ce și cum se întâmplă în interiorul codului.

    Primă. Protecție împotriva spammerilor

    Chiar și cele mai mici site-uri WordPress sunt adesea afectate de înregistrări spam. Poți scrie condiții nesfârșite pentru filtrarea boților, de multe ori mai degrabă ca o încercare de a crea inteligență artificială :) În cazul unui multisite, m-a ajutat foarte mult o redirecționare obișnuită în Apache, cu ajutorul căreia am cerut un 404 la deschidere / wp-signup.php și /wp-acitvate.php (nu sunt un expert în configurarea Apache, așa că regulile mele pot să nu fie foarte corecte).

    RewriteEngine On RewriteBase / RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # BEGIN WordPress # Nu atingem regulile de la WordPress în mod implicit :) # ... # END WordPress

    P.S. Încerc să descriu cât mai detaliat unele lucruri de la terți, pentru că când am început, uneori nu era nimeni care să sugereze și să explice multe lucruri. De asemenea, cred că astfel de sfaturi mici despre alte materiale vor încuraja pe cineva să învețe ceva nou și să-și extindă aria de cunoștințe. Intrările RewriteRule folosesc expresii regulate, nu sunt deloc complicate, de exemplu, simbolul ^ înseamnă începutul unei linii.

    Reclame

    Salutare tuturor cititorilor!

    Astăzi ne vom uita la un subiect destul de important, care este prezentat de mulți angajatori, și anume multilingvismul.

    Ce am vrut să spun când am vorbit despre multilingvism? Ei bine, probabil că fiecare dintre stimații mei cititori a văzut portaluri interesante de mai multe ori și printre toată mulțimea de informații au găsit două pictograme mici, în principal cu binecunoscutele stele și dungi și steaguri familiare alb-albastru-roșu. Desigur, după ce am dat clic pe una dintre ele, vorbirea rusă cu care suntem obișnuiți s-a transformat în limbaj burghez (), sau invers. Dar te-ai întrebat vreodată cum se face toate acestea? Ei bine, exact despre asta voi vorbi.

    Voi spune imediat că pentru a lucra cu materialul care va fi prezentat aici, veți avea nevoie de suport PHP de cel puțin 4.39.

    Deci, după cum știți, conținutul site-ului nostru este împărțit în dinamic și static. Considerăm conținutul static ca fiind ceva care nu își va schimba sensul în timpul funcționării (cuvinte cheie, text de eroare și alte prostii). De aici vom începe. Dar haideți să analizăm exact cum vom schimba limba unei anumite valori de text. Sper că nimeni nu a sugerat să folosească excepții, deoarece acest lucru este atât de irațional încât nu ar putea fi mai irațional. În schimb, vă sugerez să utilizați constante (citiți despre tipurile de date pe php.net). Vom declara pur și simplu un cuvânt funcțional, care, în funcție de sensul limbii, își va schimba în consecință sensul. Cum facem asta? Da, ca toți ceilalți, să creăm două (de exemplu) fișiere diferite, ale căror nume vor avea următorul model:

    Language_map.php;

    După cum ați înțeles deja, în locul cuvântului „limbă” vom înlocui o valoare care caracterizează această limbă. În cazul nostru, vom folosi un cod de limbă cu două caractere (ru, en, ua, pl etc.).

    Ei bine, ne-am dat seama de teoria, acum să ne punem cunoștințele în practică. Creăm două fișiere. Am creat fișiere cu traducere în engleză și rusă, iar modul în care le creați este după gustul dvs.

    Fișier: en_map.php Fișier: ru_map.php

    Deci, după părerea mea, nu este nimic complicat, iar tot ce este scris este supus celor mai banale legi ale RHP. În primul rând, verificăm dacă constantele au fost deja declarate; dacă au fost, atunci nu le declarăm; în caz contrar, le declarăm.

    Aceasta a fost partea ușoară, acum să trecem la un subiect mai dificil - traducerea părții dinamice.

    Să presupunem că ai un sistem de portal mare sau un simplu site web, dar tu, un programator talentat care cunoaște toate aspectele PHP, nu ești proprietarul acestuia, ci l-ai făcut la comandă. Proprietarul este un designer cu normă întreagă (), care habar n-are, habar nu are despre orice subtilități de programare, dar are o singură dorință ca totul să funcționeze și poate schimba totul. În ceea ce privește totul, aceasta este o altă poveste, dar îi vom permite totuși să schimbe parametrii de limbă ai site-ului (indiferent cu ce se distrează copilul).

    Dar, revenind din nou la dilema despre „Designeri și programatori”, este necesar să menționăm din nou că un astfel de site trebuie să fie complet, ca să spunem așa, „Ceea ce vezi este ceea ce primești”, altfel este imposibil. Prin urmare, voi încerca să fac totul astfel încât să nu provoace ticuri nervoase la programatori și să poată satisface designerii (adică uzabilitate).

    Deci, departe cu cuvintele goale și înainte spre Berlin. Vom începe cu teorie. Deci, cum vom face distincția între limbile de conținut dinamic, care, în cel mai bun caz, sunt eliminate, schimbate sau chiar mai rău? Nu există nicio modalitate de a folosi constantele aici, așa că ce ar trebui să facem?

    Deja aud gândurile plutind în jurul tău.

    Personal, când am încercat să dau viață acestui lucru, la început am făcut-o în cel mai irațional mod, și anume, pentru a traduce articole, am împărțit câmpurile din tabel care erau supuse traducerii în două (adică am creat field_eng și field_ru) în acest fel, mesele deja mari s-au transformat în pur și simplu obscen de uriașe. Așa că am început să caut o alternativă și, să crezi sau nu, am găsit-o. Te simți deja mai cald, da, în curând vom ajunge la cea mai tare parte. Am găsit o cale de ieșire din această situație, iar acum intenționez să ți-o explic și dacă o înțelegi sau nu va depinde de tine. În primul rând, să cădem de acord asupra tuturor detaliilor.

    În primul rând, avem nevoie de un tabel în care vor fi plasate datele pentru traducere. Să presupunem că avem un tabel „articole” în care vor fi plasate unele articole și ar trebui să aibă, să zicem, două traduceri, dar una este necesară. Ne vor interesa doar două câmpuri cheie, în cazul nostru: titlu, descriere. Vom structura textul astfel:

    Versiunea în engleză a articolului Versiunea în limba rusă a articolului

    Apoi linia, ca o combinație a acestor două structuri, va fi adăugată la câmpurile `titlu` și `descriere` din tabelul `articole`.

    Această metodă va consta în căutarea primei apariții a cuvântului cheie de deschidere (să zicem ), după care vom găsi prima apariție a cuvântului cheie de închidere. Dar nu trebuie să uităm că avem nevoie nu doar de intrare, ci de lungimea structurii. În primul caz, vom adăuga lungimea structurii la prima apariție a structurii de deschidere; al doilea pas va fi găsirea lungimii structurii de închidere. Dar te intrebi: .

    Folosind funcția substr(). Primul parametru va fi textul în sine, al doilea va fi lungimea structurii de deschidere, iar al treilea (cel mai interesant) va fi diferența dintre prima apariție a structurii de închidere și lungimea textului. Da, înțeleg că nu este atât de ușor, dar trebuie înțeles. Prin urmare, acum vom face acest lucru în practică. Am creat o funcție care va evidenția textul dintre etichetele cheie. Va fi nevoie de trei parametri: textul care urmează să fie analizat, limba care va fi folosită pentru parsare și o serie de structuri.

    După cum vezi, este destul de lung și poți să te încurci, dar dacă nu înțelegi asta, atunci nu este o mare problemă, pentru că funcția de enumerare există deja și puțin mai departe mă voi uita la o altă metodă pentru acelasi scop. Da, și nu uitați să declarați undeva constanta de limbă NOT_ENTERED, care va fi atribuită rezultatului funcției dacă lungimea textului este zero.

    Deci, ne-am dat seama prin forță brută, dar acum ne confruntăm cu o nouă sarcină, compilarea textului simplu într-un șir special formatat. Acest lucru este deja mult mai simplu, iar dacă știți suficient de bine PHP, atunci puteți scrie cu ușurință o astfel de funcție, iar dacă încă înoți, atunci vă rugăm să mergeți la birou.

    Algoritmul nu este complicat și constă în înlocuirea tuturor constructelor de limbaj într-o singură linie. La început, într-o criză de lene, am vrut să limitez scriptul la un anumit număr de limbi (acest lucru îl face mai ușor de implementat), dar apoi m-am răzgândit și am primit asta:

    Ei bine, aici am să explic puțin. Funcția ia ca parametru o matrice. Structura matricei ar trebui să fie astfel:

    „identificator de limbă” => „text”;

    Apoi verificăm că dacă parametrul primit nu este un tablou, atunci .

    Dacă este totuși o matrice, atunci bineînțeles că o enumerăm, iar în locul limbajului din construcție punem cheia acestui element al tabloului asociativ, iar în locul textului, desigur, textul însuși, că este valoarea variabilei $v. Apoi îmbinăm toate datele într-o singură linie. Dar am uitat să menționez un detaliu important, cu alte cuvinte, o bucată destul de mare de text. Mai întâi, înainte de buclă, am declarat trei variabile: data, temp, count;

    Variabila de numărare este numărul de iterații ale buclei, iar cu fiecare rundă ulterioară a buclei contorul crește. Variabila de date este șirul rezultat viitor în care vor fi îmbinate toate constructele limbajului. Dar variabilele număr și temp sunt mai interesante. Pentru ce sunt necesare? Ei bine, probabil că majoritatea oamenilor l-au ghicit deja după ce au citit sursa, dar le voi explica celor care nu au făcut-o încă. Acest lucru se face pentru a verifica dacă constructul limbajului nu a fost repetat de mai multe ori. Acesta este motivul pentru care am declarat variabila count. Deoarece valoarea sa implicită este zero, verificăm dacă bucla a fost executată măcar o dată, pentru că dacă nu facem asta, va ieși ceva de genul 2=2 sau 0=0, pentru că valoarea lui $k nu a fost încă schimbat . Deoarece verificarea va fi ignorată prima dată, atribuim valoarea variabilei $temp după verificare. Acest lucru se face și cu un motiv. În timpul primei iterații, totul va merge bine, dar dacă totuși am atribuit o valoare înainte de verificare, atunci verificarea ar face verificarea care a fost deja menționată (2=2, 3=3 etc.). De aceea o facem astfel.

    Acum, ca o concluzie logică, vom crea un mic site web unde vor fi aplicate toate cele de mai sus:

    Ei bine, asta este. Cu toate acestea, există un „dar” în scenariu; autorul nu poate adăuga mai mult de două opțiuni de traducere prin formular. Nu voi spune, ca ceilalți autori, că am făcut asta pentru pregătirea dumneavoastră, pentru că sincer să fiu, când am ajuns în acest punct, aproape că nu m-a mai deranjat capul, așa că o las pe umerii voștri. . Crede-mă, există o mulțime de soluții posibile și sper cu adevărat să le găsești. În ceea ce privește funcțiile, nu pot spune 100% că nu vor provoca o defecțiune, dar nu ar trebui să existe erori fatale, deși se poate întâmpla orice. Dar sunt mai mult de 60% sigur că sintaxa este ruptă, deoarece nu am testat exemplele. Dar iată un antrenament foarte bun pentru tine, pentru că prinderea „puricilor” este o activitate foarte utilă!

    Ei bine, cred că acest articol se poate încheia aici. Dacă nu reușiți, nu vă îndreptați furia către computerul sărac, spre tastatura și mai ales către dezvoltatorii unui limbaj atât de minunat precum PHP, nu ezitați să vă îndreptați toate eșecurile în direcția mea. Nu cred că acest lucru mă va înrăutăți, dar vei avea pe cineva împotriva căruia să-ți scape furia.

    Am o pagină de înregistrare de bază care postează date într-o bază de date SQL. Cu toate acestea, aș dori să împiedic redirecționarea paginii atunci când este trimisă (fie cu succes, fie nu).

    Asta am acum si nu merge. Nu afișează mesaje de eroare.

    HTML – signup.html

    Inscrie-te

    JavaScript – signup.js

    Funcția submit() ( $("formular").submit(funcție(e) ( e.preventDefault(); $. (( tip: "POST", url: "înscriere. ", date: $("form") .serialize(), succes: function() ( console.log("Înscrierea a avut succes"); ) eroare: function() ( console.log("Înscrierea nu a avut succes"); ) )); ) $(document). gata(funcție() (submit(); ));

    PHP – signup.php

    Iată un JSFiddle.

    Sper că puteți ajuta. Mulţumesc anticipat :)

    Dacă utilizați ajax, nu trebuie să utilizați tipul de intrare ca butonul de trimitere.

    $(document).ready(function() ( $("#signup").click(function(e) ( e.preventDefault();); $.ajax(( tip: "POST", url: "signup.php" , date: $(„form”).serialize() succes: function() ( console.log(„Înscrierea a avut succes”); ) eroare: function() ( console.log(„Înscrierea nu a avut succes”); ) ) ); ));

    Schimbați-vă și aici

    $post_FirstName = $_POST["primul"]; // numele este `primul` nu `prenume`

    Aveți mai multe frâne și suporturi închise incorect

    Funcția submit() ( $("form").submit(function(e) ( e.preventDefault(); $.ajax(( tip: "POST", url: "signup.php", date: $("form") ").serialize(), succes: function() ( console.log("Înscrierea a avut succes"); ),//aici eroare: function() ( console.log("Înscrierea nu a avut succes"); ) )); ));//aici ) $(document).ready(function() ( submit(); ));

    Nu este nevoie să apelați funcția de trimitere. Doar asta va face (ai omis virgula și eticheta de închidere):

    $("form").submit(funcție(e) ( e.preventDefault(); $.ajax(( tip: "POST", url: "signup.php", date: $("form").serialize( ), succes: function() ( console.log("Înscrierea a avut succes"); ), //Ați ratat această eroare: function() ( console.log("Înscrierea a fost nereușită"); ) )); )); //Ai ratat asta