Paliestas profilio naudotojas php. Vaizdo rengyklės, spalvų schemos pasirinkimo ir kitos informacijos pašalinimas „WordPress“ administravimo srityje

Šią pamoką norėčiau skirti kūrybai Asmeninis profilis registruotiems vartotojams (priedas prie pamokos Vartotojo registracijos sukūrimas svetainėje). Dabar vartotojai galės pridėti savo avatarą, pakeisti vardą ir pavardę, pridėti savo gyvenamąją vietą ir gimimo datą. Norėdami tai padaryti, lentelėje vartotojų pridėkime kelis laukus:

Dabar sukurkime profilio puslapį profilis.php ir pridėkite jį prie puslapio index.php nuoroda į jį

Aidas"
Mano profilis“; Dabar paties puslapio kodas profile.php

Profilis<?php echo $login; ?>

Profilis



"; aidas" ".$array["vardas_vartotojas"]." ".$array["pavardė"]."
"; switch ($masyvas["gimimo_mėnesis"])(//Konvertuokite mėnesio skaičių į vardo didžiąją ir mažąją raidę "1" : $month = "Sausio"; pertrauka; atvejis "2" : $month = "vasaris"; pertrauka; atvejis " 3" : $mėnuo "pertrauka" : $mėnuo "5" : $mėnuo "pertrauka"; "June" atvejis "7" : $ pertrauka "8" : $mėnuo 10" : $month = "spalis"; pertrauka; atvejis "11" : $month = "lapkritis"; pertrauka; $month = "gruodis"; echo "Registracijos data: ".$array[" reg_date"]."
"; echo "Lytis: ".$array["seksas"]."
"; echo "Gimtadienis: ".$array["gimimo_data"]." ".$mėnuo." ".$array["gimimo_metai"]."
"; echo "Šalis: ".$masyvas["šalis"]."
"; echo "Miestas: ".$array["miestas"]."
"; if($_GET["id"] == $id_user)(//Tik savininkas gali redaguoti profilį echo "Redaguoti profilį"; ) )else( print<<Įėjimas:
Prisijungti: Slaptažodis:
RegistracijaSlaptažodžio atkūrimas ČIA; ) ?>

Natūralu, kad eidami į šį puslapį pamatysime standartinį avatarą noAvatar.jpg ir galbūt vardą ir pavardę, jei vartotojas juos nurodė registracijos metu, likę elementai bus tušti. Pačioje šio puslapio pabaigoje yra nuoroda į profilio redagavimo puslapį edit.php. Šio puslapio kodas yra labai lengvas ir susideda iš duomenų įvedimo formų. Dėl gana didelės apimties nepateiksiu čia viso, o pateiksiu tik dalį šaltinio failuose bus galima gauti visą;

Visos kitos formos yra panašios ir nurodo vieną tvarkytoją save_edit.php, kuris atliks duomenų bazės pakeitimus. Jis taip pat turi gana didelį kodą, ir aš jo čia taip pat nepateiksiu, o tik šiek tiek papasakosiu apie tai, kas jame vyksta (visą kodą taip pat galite rasti šaltinio failuose). Pirmiausia sukuriame avatarą, jei vartotojas, žinoma, jį įkėlė, kitu atveju paliekame standartinį. Jei taip yra, pirmiausia atsisiunčiame jį į aplanką avatarai(beje, sukurkite šį aplanką ir suteikite jam rašymo leidimus 755) patikrinę leidžiamus plėtinius. Tada sukuriamas naujas vaizdas, kurio formatas priklauso nuo pasirinkto režimo: $ rezim = 1 sukuriamas kvadratinis vaizdas, $ rezim = 2 paveikslėlis proporcingas originalui. Taip pat reikia nustatyti sukurto vaizdo plotį $w ir kokybė $ kokybė. Sukurtą vaizdą išsaugome jpg formatu naudodami funkciją imagejpeg ir sugeneruokite jam atsitiktinį pavadinimą. Dabar reikia ištrinti seną vaizdą ir atnaujinti jį duomenų bazėje nauju. Tai viskas dėl vaizdų.

Visi kiti šio failo elementai yra skirti atnaujinti asmeninius duomenis apie vartotoją ir yra paprastos užklausos į duomenų bazę atnaujinti laukus. Prieš atnaujinant, naudojant patikrinama gaunamų kintamųjų buvimas ir jų saugumas brūkšniai Ir htmlspecialieji simboliai. Jei atnaujinimas sėkmingas, vartotoją nedelsiant nukreipiame į profilio puslapį.
Dabar įsitikinkime, kad prisijungęs vartotojas gali matyti visus kitus registruotus vartotojus. Norėdami tai padaryti, sukurkime puslapį user.php, kuriame visi vartotojai bus rodomi cikle.

Jau rašiau apie WordPress vartotojus (žr. nuorodą). Tačiau kaip ir bet kuris įrankis (išskyrus plaktuką), „Adminimize“ nėra idealus ir negali visiškai pašalinti visko, nors tai yra tik „WordPress“ programuotojų dėka.

Šis įrašas gimė spontaniškai, galima padėkoti svečiui Blow. Jo klausimo esmė buvo tokia (labiau kaip klausimų serija):

1. Kaip paslėpti „Pasirinkimą“ spalvų schema“ vartotojui?

2. Kaip WordPress skydelyje paslėpti "Hot Keys" ir "Visual Editor"?

Aš eisiu tiesiai prie reikalo. Naudodami šį metodą galite paslėpti bet kokius naudotojo elementus jo profilyje ir kituose puslapiuose. Lengviausias būdas yra redaguoti ekrano failą!

„Profiliui“ tai yra failas user-edit.php, kuris yra aplanke wp-admin. Redaguoti reikia labai atsargiai, kitaip už eksperimentus galite gerai „susimokėti“.

Sprendimas (vieningas):

1. Atsisiųskite failą į savo kompiuterį ir padarykite jo kopiją (saugu...)

2. Ieškome HTML kodo, atsakingo už mums reikalingos informacijos atvaizdavimą.

3. Atidžiai pakomentuokite jį ir „užpildykite“ jį pakaitalu.

Dabar praktikuokite (redaguokite User-edit.php):

Sąžiningai, nepamenu, kokią WP versiją turiu bandymų aikštelėje, bet ji tikrai ne žemesnė nei 2.8.2.

Pirmiausia atsisiunčiau failą į savo kompiuterį ir pažiūrėjau kodą naudodamas „Chrome Code Viewer“ ir radau reikiamą kodą „Notepad++“.

(du brūkšneliai kiekvienoje pusėje „-“)

1. Paslėpkite „vaizdinį redaktorių“

Keisti į kodą:

—>

ps: nekopijuokite šio kodo, o pasikeiskite patys - didelė klaidų tikimybė!!!

2. Paslėpti „Pasirinkti spalvų schemą“.

Jūs, tikiuosi, pastebėjote skirtumą tarp kodų – iš viso buvo pridėti 7 simboliai. Norėdami paslėpti šį elementą, kurio ieškome if (count($_wp_admin_css_colors) > 1) ir pakomentuokite po eilutės visą kodą tarp prieš

3. Slėpti „Karštuosius klavišus“.

Antroje pamokoje parašysime dar dvi klases ir visiškai užbaigsime vidinę scenarijaus dalį.

Planuoti

Šios pamokų serijos tikslas – sukurti paprastą programą, kuri leistų vartotojams užsiregistruoti, prisijungti, atsijungti ir keisti nustatymus. Klasė, kurioje bus visa informacija apie vartotoją, bus pavadinta User ir ji bus apibrėžta faile User.class.php. Klasė, kuri bus atsakinga už įvestį/išvestį, vadinsis UserTools (UserTools.class.php).

Šiek tiek apie klasės įvardijimą

Tinkamas etiketas yra pavadinti failus, apibūdinančius klasę tokiu pačiu pavadinimu kaip ir pati klasė. Tai leidžia lengvai nustatyti kiekvieno failo paskirtį klasių aplanke.

Taip pat įprasta klasės failo pavadinimo pabaigoje pridėti .class arba .inc. Tokiu būdu aiškiai apibrėžiame failo paskirtį ir galime naudoti .htaccess, kad apribotume prieigą prie šių failų.

Vartotojo klasė (User.class.php)

Ši klasė apibrėžs kiekvieną vartotoją. Su augimu šią programą„Vartotojo“ apibrėžimas gali labai pasikeisti. Laimei, OOP programavimas leidžia lengvai pridėti papildomų vartotojo atributų.

Konstruktorius

Šioje klasėje naudosime konstruktorių – tai funkcija, kuri automatiškai iškviečiama kuriant kitą klasės kopiją. Tai leidžia automatiškai paskelbti kai kuriuos atributus sukūrus projektą. Šioje klasėje konstruktorius paims vieną argumentą: asociatyvų masyvą, kuriame yra viena eilutė iš mūsų duomenų bazės vartotojų lentelės.

request_once "DB.klasė.php"; klasės vartotojas (viešas $id; viešas $naudotojo vardas; viešas $hashedPassword; viešas $el. paštas;
viešas $joinDate;
//Konstruktorius iškviečiamas, kai sukuriamas naujas objektas//Priima asociatyvų masyvą su DB eilute kaip argumentą. funkcija __construct($duomenys) ( $this->id = (isset($data["id"])) ? $data["id"] : ""; $this->username = (isset($data[" vartotojo vardas"])) ? $duomenys["naudotojo vardas"] : ""; $this->hashedPassword = (isset($data["slaptažodis"])) ? $data["slaptažodis"] : ""; $this- >email = (isset($duomenys["el. paštas"])) $duomenys["el. paštas"] : ""; $this->joinDate = (isset($data["prisijungimo_data"])) $duomenys[" prisijungimo_data "] : "";)
viešoji funkcija save($isNewUser = false) ( //sukurti naują duomenų bazės objektą. $db = new DB(); //jei vartotojas jau užsiregistravęs ir mes" //tik atnaujiname jo informaciją. if(!$isNewUser ) ( //nustatyti duomenų masyvą $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"",
"email" => ""$this->elmail"");
//atnaujinti eilutę duomenų bazėje $db->update($data, "users", "id = ".$this->id); )else ( //jei vartotojas registruojamas pirmą kartą. $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"" , "email" => "$this->email"", "join_date" => """.data("Y-m-d H:i:s",time())."""); ->insert($duomenys, "naudotojai" $this->joinDate = laikas(); ) ) ?>

Paaiškinimas

Pirmoji kodo dalis, esanti už klasės zonos, užtikrina, kad klasė būtų prijungta prie duomenų bazės (nes Vartotojo klasė turi funkciją, kuriai reikalinga ši klasė).

Vietoj „apsaugotos“ klasės kintamųjų (vartojamų 1-oje pamokoje) mes juos apibrėžiame kaip „viešą“. Tai reiškia, kad bet koks kodas, esantis už klasės ribų, turi prieigą prie šių kintamųjų dirbdamas su vartotojo objektu.

Konstruktorius paima masyvą, kuriame lentelės stulpeliai yra raktai. Klasės kintamąjį apibrėžiame naudodami $this->kintamojo pavadinimas. Šios klasės pavyzdyje pirmiausia patikriname, ar egzistuoja tam tikro rakto reikšmė. Jei taip, tada klasės kintamąjį nustatome į tą reikšmę. Priešingu atveju tuščia eilutė. Kode naudojama trumpoji žymėjimo forma, jei:

$reikšmė = (3 == 4) ? "A": "B";

IN šiame pavyzdyje patikriname, ar 3 lygu keturi! Jei taip, tada $ vertė = "A", ne - $ vertė = "B". Mūsų pavyzdyje rezultatas yra $ vertė = "B".

Informaciją apie Vartotojus išsaugome duomenų bazėje

Išsaugojimo funkcija naudojama duomenų bazės lentelės pakeitimams atlikti su esamomis vartotojo objekto reikšmėmis. Ši funkcija naudoja DB klasę, kurią sukūrėme pirmoje pamokoje. Naudojant klasės kintamuosius, nustatomas $data masyvas. Jei vartotojo duomenys išsaugomi pirmą kartą, $isNewUser perduodamas kaip $true (pagal numatytuosius nustatymus false). Jei $isNewUser = $true, tada iškviečiama DB klasės funkcija insert(). Kitu atveju iškviečiama funkcija update(). Abiem atvejais informacija iš vartotojo objekto bus saugoma duomenų bazėje.

Klasė UserTools.class.php

Šioje klasėje bus funkcijos, kurios yra susijusios su vartotojais: login(), logoout(), checkUsernameExists() ir get(). Tačiau išplėtę šią programą galite pridėti daug daugiau.

//UserTools.class.php request_once "User.class.php"; request_once "DB.class.php";
klasė UserTools(
//Prisijunkite vartotoją. Pirmiausia patikrinama, ar // vartotojo vardas ir slaptažodis atitinka duomenų bazės eilutę. //Jei tai sėkminga, nustatykite seanso kintamuosius //ir išsaugokite vartotojo objektą.
viešosios funkcijos prisijungimas ($naudotojo vardas, $slaptažodis)
{
$hashedPassword = md5($slaptažodis); $result = mysql_query("SELECT * FROM vartotojų WHERE vartotojo vardas = "$naudotojo vardas" AND slaptažodis = "$hashedPassword""); if(mysql_num_rows($result) == 1) ( $_SESSION["naudotojas"] = serialize(new User(mysql_fetch_assoc($result))); $_SESSION["prisijungimo laikas"] = laikas(); $_SESSION["prisijungęs "] = 1; return true; )else( return false; ) )
//Atjunkite vartotoją. Sunaikinti seanso kintamuosius. viešoji funkcija logout() ( unset($_SESSION["vartotojas"]); unset($_SESSION["prisijungimo_laikas"]); unset($_SESSION["prisijungęs_in"]); session_destroy(); ) //Patikrinkite, ar vartotojo vardas yra. //Tai iškviečiama registruojantis, siekiant įsitikinti, kad visi vartotojų vardai yra unikalūs. viešoji funkcija checkUsernameExists($username) ( $result = mysql_query("pasirinkite ID iš vartotojų, kur vartotojo vardas="$naudotojo vardas""); if(mysql_num_rows($result) == 0) ( return false; )else( return true; )
}
//gauti vartotoją //pateikia vartotojo objektą. Naudoja vartotojų ID kaip įvesties viešąją funkciją get($id) ( $db = new DB(); $result = $db->select("users", "id = $id"); return new User($result ) ) )
?>

login() funkcija

Login() funkcija yra aiški pagal pavadinimą. Jis paima vartotojo argumentus $username ir $password ir patikrina, ar jie atitinka. Jei viskas atitinka, sukuriamas vartotojo objektas su visa informacija ir išsaugomas seanso metu. Atminkite, kad naudojame tik PHP serialize() funkciją. Sukuriama saugoma objekto versija, kurią galima lengvai išjungti naudojant unserialize(). Taip pat bus išsaugotas prisijungimo laikas. Tai vėliau gali būti panaudota norint suteikti vartotojams informaciją apie buvimo svetainėje trukmę.

Taip pat galite pastebėti, kad $_SESSION["logged_in"] nustatėme į 1. Tai leidžia kiekviename puslapyje lengvai patikrinti, ar vartotojas yra prisijungęs. Pakanka patikrinti tik šį kintamąjį.

atsijungti() funkcija

Taip pat paprasta funkcija. PHP funkcija unset() išvalo kintamuosius atmintyje, o session_destroy() ištrins sesiją.

CheckUsernameExists() funkcija

Kiekvienas, kuris moka anglų kalbą, lengvai supras šią funkciją. Ji tiesiog klausia duomenų bazės, ar buvo naudojamas panašus prisijungimas, ar ne.

get() funkcija

Ši funkcija paima unikalų vartotojo ID ir pateikia duomenų bazės užklausą naudodama DB klasę, būtent funkciją select(). Tai paims asociatyvų masyvą su daugybe vartotojo informacijos ir sukurs naują vartotojo objektą, perduodantį masyvą konstruktoriui.

Kur galiu tai panaudoti? Pavyzdžiui, jei kuriate puslapį, kuriame turi būti pateikti konkretūs vartotojų profiliai, turėsite dinamiškai gauti šią informaciją. Tai galite padaryti taip: (tarkime, URL yra http://www.website.com/profile.php?userID=3)

//pastaba: pirmiausia turėsite atidaryti duomenų bazės ryšį. // Daugiau informacijos apie tai rasite 1 dalyje. //Taip pat turėsite įsitikinti, kad įtraukėte klasės failus.
$įrankiai = new UserTools(); $vartotojas = $įrankiai->gauti($_REQUEST["naudotojo ID"]); echo "Vartotojo vardas: ".$user->naudotojo vardas.""; echo "Prisijungta: ".$user->joinDate."";

Lengvai! Ar tai tiesa?

Paskutinis prisilietimas prie serverio pusės: global.inc.php

global.inc.php reikalingas kiekvienam svetainės puslapiui. Kodėl? Taip puslapyje patalpinsime visas įprastas operacijas, kurių mums prireiks. Pavyzdžiui, pradėsime session_start(). Taip pat atsidarys duomenų bazės ryšys.

request_once "classes/UserTools.class.php";
request_once "classes/DB.class.php";
//prisijungti prie duomenų bazės $db = new DB(); $db->prisijungti();
//inicijuoti UserTools objektą $userTools = new UserTools(); //pradėti sesiją
session_start();
//atnaujinkite seanso kintamuosius, jei esate prisijungę if(isset($_SESSION["prisijungęs"])) ( $user = unserialize($_SESSION["naudotojas"]); $_SESSION["naudotojas"] = serialize($userTools-> gauti($user->id) ) ?>

Ką jis daro?

Čia vyksta keli dalykai. Pirmiausia atidarome ryšį su duomenų baze.

Prisijungę paleidžiame funkciją session_start(). Funkcija sukuria seansą arba tęsia esamą, jei vartotojas jau yra prisijungęs. Kadangi mūsų programa skirta vartotojams prisijungti/atsijungti, ši funkcija reikalinga kiekviename puslapyje.

Tada patikriname, ar vartotojas yra prisijungęs. Jei taip, mes atnaujinsime $_SESSION["vartotojas"], kad atspindėtų labiausiai naujausia informacija apie vartotoją. Pavyzdžiui, jei vartotojas pakeičia savo el. pašto adresą, sesijoje bus išsaugotas senasis. Tačiau su automatiniu atnaujinimu tai neįvyks.

Tai baigia antrąją dalį! Rytoj laukite paskutinės pamokos šia tema.

Viskas kas geriausia!

Dalintis