sql >> Database teknologi >  >> RDS >> Mysql

Sådan opretter du en blog i PHP og MySQL database - Backend

Dette er del 3 af en 4-delt serie om, hvordan man bygger en blog med PHP og MySQL. Du kan se de to foregående dele her:del 1, del 2.

I de sidste to dele af denne øvelse færdiggjorde vi oprettelsen af ​​det offentlige område. Vi har endda konfigureret vores database, indsat nogle data i databasetabellerne og var i stand til at forespørge på dette og vise det på siden. Men vi ønsker ikke altid at oprette brugere, indlæg, emner ved hjælp af en databaseklient som PHPMyAdmin, gør vi? Vi ønsker en grænseflade på hjemmesiden og en logget ind bruger med administratorrettigheder til at gøre det.

Når en bruger med administratorrettigheder logger på, bliver de automatisk omdirigeret til administratorens dashboard. Men vi har endnu ikke oprettet en admin-bruger i vores system. Det gør vi snart.

I din complete-blog-php/admin-mappe skal du oprette en fil med navnet dashboard.php.

dashboard.php:

   Admin | Dashboard 
 
 

Besøg http://localhost/complete-blog-php/admin/dashboard.php i din browser, og du vil se, at der ikke er nogen styling, og der er fejlmeddelelser om manglende medtagelse af to filer. Det er fordi vi endnu ikke har oprettet disse filer. Det gør vi snart.

Opret en mappe i din administratormappe med navnet includes.

Grunden til, at vi har oprettet en separat mappe til administrationsområdet, er for at sikre, at alle admin-filer er i én mappe (admin). Senere kan vi styrke sikkerheden i admin-mappen ved hjælp af htaccess-godkendelse. Det vil vi dog ikke gøre i denne tutorial.

I denne nyoprettede inkluderer-mappe skal du oprette en fil med navnet  head_section.php. Åbn head_section.php og tilføj denne kode til den:

> 

Genindlæs dashboard.php-siden i browseren. Nu er den tilbageværende fejlmeddelelse kun for én fil (admin_functions.php). Det kommer vi snart til.

Når brugeren er i backend, kan han oprette, læse, opdatere og slette brugere, indlæg og emner. Lad os starte med brugerne. I din admin-mappe skal du oprette en fil med navnet users.php

Åbn nu users.php og tilføj denne kode til den:

users.php:

 Admin | Administrer brugere   

Opret/rediger administratorbruger

Ingen administratorer i databasen.

$admin):?>
N Admin Rolle Handling
,  

Dette er alt, hvad vi skal gøre i filen users.php. Oprettelse, redigering og sletning af en bruger vil blive udført i denne ene fil.

Øverst i users.php-filen kalder vi en funktion getAdminUsers() som returnerer en matrix af alle admin-brugere fra databasen. Denne funktion skal defineres i admin_functions.php-filen, som vi endnu ikke har oprettet, men du kan se den inkluderet i vores users.php-fil lige før funktionskaldet.

I din admin-mappe skal du oprette admin_functions.php og tilføje denne kode til den:

admin_functions.php:

 

Genindlæs dashboard.php-siden i din browser, og fejlmeddelelsen er væk.

Det næste er at inkludere navbar.php-siden og menu.php-siden. Disse er gentagne segmenter af admin-sider, ligesom det var tilfældet med det offentlige område.

Så opret disse 2 filer i admin/includes mappen:navbar.php og menu.php.

navbar.php:


 

menu.php:


 

Lad os nu skabe styling til admin-sektionen. Inde i mappen complete-blog-php/static/css/ skal du oprette en fil med navnet admin_styling.css og tilføje denne kode til den:

/* * * * * * * * * ** STILSTILLINGER* * * * * * * * * */* { margin:0px; polstring:0px; }a { tekst-dekoration:ingen; }h1, h2, h3, h4, h5, h6 { font-family:'Noto Serif', serif; }/* former */form { width:60%; margin:5px auto; polstring-bund:50px; }formularinput[type=fil], input[type=e-mail], input[type=adgangskode], input[type=tekst], formularvalg, form tekstområde { width:100%; display:blok; polstring:13px 13px; skriftstørrelse:1em; margen:5px auto 10px; border-radius:3px; kassestørrelse :border-box; baggrund:gennemsigtig; border:1px solid #3E606F;}input[type="checkbox"] { height:20px; flyde:venstre; }form knap { float:højre; margin-venstre:24%; }form input:focus { disposition:ingen; }label { margin-top:20px; flyde:venstre; }/* tabeller */table { border-collapse:collapse; bredde:70%; margin:20px auto; }th, td { padding:8px; tekst-align:venstre; kant:1px fast #ddd; }th { text-align:center;}/* knapper */.btn { color:white; baggrund:#4E6166; tekst-align:center; grænse:ingen; kant-radius:5px; display:blok; bogstavmellemrum:.1em; polstring:13px 20px; tekst-dekoration:ingen;}/* * * * * * * * * ** HEADER* * * * * * * * * */.header { padding:15px 45px; font-family:'Noto Serif', serif; farve:hvid; baggrund:sort;}.header .logo { width:50%; flyde:venstre; }.header .logo h1 { farve:hvid; }.header .user-info { width:10%; margin-top:10px; float:højre;}.header .logout-btn { farve:rød; tekst-dekoration:ingen; }.header:after{ content:""; display:blok; klar:begge; }/* * * * * * * * * ** DASHBOARD* * * * * * * * * */.container { width:95%; margen:5px auto 50px; kant:1px fast #BFBCB3; polstring:10px 0px 50px;}.container:after { content:""; display:blok; klar:begge; }.container.dashboard h1 { text-align:center; margen:25px; }.container.dashboard .stats a { display:inline-block; polstring:30px; margen:5px; bredde:25%; tekst-align:center; border-radius:3px; border:1px solid #BFBCB3;}.container.dashboard .stats a.first { margin-left:25px; }.container.dashboard .stats a:hover { cursor:pointer; baggrundsfarve:#E1E1E1; }.container.dashboard .buttons { margin-left:15px; }.container.dashboard .buttons a { display:inline-block; margin:10px; tekst-dekoration:ingen; farve:#444; polstring:10px 25px; grænse:ingen; baggrundsfarve:#0E7D92; farve:hvid;}/* * * * * * * * * ** SIDEINDHOLD* * * * * * * * * */.container.content .menu { width:16%; flyde:venstre; polstring:40px 10px; }/* Menukort */.container.content .menu .card .card-header { padding:10px; tekst-align:center; kant-radius:3px 3px 0px 0px; baggrund:#3E606F;}.container.content .menu .card .card-header h2 { farve:hvid; }.container.content .menu .card .card-content a { display:blok; box-sizing:border-box; polstring:8px 10px; border-bottom:1px solid #e4e1e1; farve:#444;}.container.content .menu .card .card-content a:hover { padding-left:20px; baggrund:#F9F9F9; overgang:0.1s;}/* Handlinger div (i midten) */.container.content .action { width:35%; flyde:venstre; tekst-align:center; }.container.content .action form { width:90%; }.container.content .action .page-title { margin:25px; }.container.content .action.create-post-div { width:80%; }/* Tabel div (Viser poster fra DB) */.table-div { float:venstre; bredde:47%; }.table-div .message { width:90%; margin-top:20px; }.table-div tabel { width:90%; }.table-div a.fa { farve:hvid; polstring:3px; }.table-div .edit {baggrund:#004220; }.table-div .delete {baggrund:#F70E1A; }.table-div .publish {baggrund:rød; }.table-div .unpublish {baggrund:grøn; }/* * * * * * * * * ** VALIDERINGSFEJL* * * * * * * * * */.message { width:100%; margin:0px auto; polstring:10px 0px; farve:#3c763d; baggrund:#dff0d8; kant:1px fast #3c763d; kant-radius:5px; text-align:center;}.fejl {farve:#a94442; baggrund:#f2dede; kant:1px fast #a94442; margin-bund:20px; }.validation_errors p {text-align:left;margin-left:10px;}

I din browser skal du gå til http://localhost/complete-blog-php/admin/users.php du vil se en fejl, der siger, at filen messages.php ikke findes. Opret en fil med navnet messages.php i mappen complete-blog-ph/includes, og tilføj denne kode i den:

 

Dette viser meddelelser for at give brugeren feedback på deres handlinger.

Opret, læs, opdater og slet administratorbrugere

Siden users.php præsenterer allerede en formular til både oprettelse og opdatering af en administratorbruger samt en tabel til at angive og slette brugere. Det eneste, der er tilbage, er at tilføje PHP-funktionerne, der udfører disse handlinger. Så åbn filen admin_functions.php og tilføj denne kode direkte efter Admin-brugerhandlingerne (if-sætningerne) øverst på siden og før funktionen getAdminUsers() :

admin_functions.php:

/* - - - - - - - - - - - -- Admin brugerfunktioner- - - - - - - - - - - -*//* * * * * * * * * * * * * * * * * * * * * ** - Modtager nye admin-data fra formularen* - Opret ny admin-bruger* - Returnerer alle admin-brugere med deres roller * * * * * * * * * * * * * * * * * * * * * * */function createAdmin($request_values){ global $conn, $errors, $role, $username, $email; $brugernavn =esc($request_values['brugernavn']); $email =esc($request_values['email']); $password =esc($request_values['adgangskode']); $passwordConfirmation =esc($request_values['adgangskodebekræftelse']); if(isset($request_values['rolle'])){ $role =esc($request_values['rolle']); } // formularvalidering:sørg for at formularen er korrekt udfyldt if (empty($username)) { array_push($errors, "Uhmm...We gonna need the username"); } if (empty($email)) { array_push($errors, "Ups.. E-mail mangler"); } if (empty($role)) { array_push($errors, "Rolle er påkrævet for admin-brugere");} if (empty($password)) { array_push($errors, "uh-åh, du har glemt adgangskoden"); } if ($password !=$passwordConfirmation) { array_push($errors, "De to adgangskoder matcher ikke"); } // Sørg for, at ingen bruger er registreret to gange. // e-mailen og brugernavnene skal være unikke $user_check_query ="VÆLG * FRA brugere WHERE username='$brugernavn' ELLER email='$email' LIMIT 1"; $result =mysqli_query($conn, $user_check_query); $bruger =mysqli_fetch_assoc($result); if ($user) { // if user exists if ($user['brugernavn'] ===$brugernavn) { array_push($errors, "Brugernavn findes allerede"); } if ($bruger['email'] ===$email) { array_push($errors, "E-mail findes allerede"); } } // registrer bruger, hvis der ikke er nogen fejl i formularen if (count($errors) ==0) { $password =md5($password);//krypter adgangskoden før lagring i databasen $query ="INSERT INTO brugere (brugernavn, e-mail, rolle, adgangskode, create_at, updated_at) VALUES('$brugernavn', '$email', '$role', '$password', nu(), nu())"; mysqli_query($conn, $query); $_SESSION['message'] ="Administratorbruger oprettet med succes"; header('location:users.php'); exit(0); }}/* * * * * * * * * * * * * * * * * * ** - Tager admin id som parameter* - Henter admin fra databasen* - sætter admin felter på formularen til redigering* * * * * * * * * * * * * * * * * * * */function editAdmin($admin_id){ global $conn, $username, $role, $isEditingUser, $admin_id, $email; $sql ="VÆLG * FRA brugere WHERE id=$admin_id LIMIT 1"; $result =mysqli_query($conn, $sql); $admin =mysqli_fetch_assoc($result); // sæt formularværdier ($username og $email) på formularen, der skal opdateres $username =$admin['brugernavn']; $email =$admin['email'];}/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - Modtager admin anmodning fra formularen og opdateringer i databasen* * * * * * * * * * * * * * * * * * * * * * * * * * * */function updateAdmin($request_values){ global $conn, $errors, $role, $brugernavn, $isEditingUser, $admin_id, $email; // få id for den admin, der skal opdateres $admin_id =$request_values['admin_id']; // sæt edit state til false $isEditingUser =false; $brugernavn =esc($request_values['brugernavn']); $email =esc($request_values['email']); $password =esc($request_values['adgangskode']); $passwordConfirmation =esc($request_values['adgangskodebekræftelse']); if(isset($request_values['rolle'])){ $role =$request_values['rolle']; } // registrer bruger, hvis der ikke er nogen fejl i formularen if (count($errors) ==0) { //krypter adgangskoden (sikkerhedsformål) $password =md5($password); $query ="OPDATERING brugere SET brugernavn='$brugernavn', email='$email', role='$role', password='$password' WHERE id=$admin_id"; mysqli_query($conn, $query); $_SESSION['message'] ="Administratorbruger blev opdateret"; header('location:users.php'); exit(0); }}// delete admin user function deleteAdmin($admin_id) { global $conn; $sql ="SLET FRA brugere WHERE id=$admin_id"; if (mysqli_query($conn, $sql)) { $_SESSION['message'] ="Brugeren blev slettet"; header("placering:brugere.php"); exit(0); }}

Den kode, vi lige har tilføjet, har 3 hoveddele:initialisering af admin-brugervariabler, Admin-brugerhandlinger og Admin-brugerfunktioner i nævnte rækkefølge. Dette er det samme format, som vi tilføjer kode til emner, der kommer næste gang. Indtil videre kan du allerede oprette, læse, opdatere og slette en bruger.

Gå nu til http://localhost/complete/admin/users.php. Opret en bruger, og tildel denne brugeradministratorrolle. Sørg for at huske brugernavnet og adgangskoden for denne admin-bruger, for i fremtiden vil vi logge ind med denne bruger. For eksempel:

brugernavn:John, e-mail:[email protected], adgangskode:johndoe.

Opret, læs, opdater og slet emner

For emner vil vi kun oprette én fil, topics.php inde i mappen complete-blog-php/admin/.

complete-blog-php/admin/topics.php:

 Admin | Administrer emner   

Opret/Rediger emner

Ingen emner i databasen.

$topic):?>
N Emnenavn Handling

Dernæst skriver vi PHP-koden til inde i admin_functions.php for at udføre disse handlinger om emnet.

Følgende kode har tre sektioner. Hvert afsnit er blevet mærket øverst ved hjælp af en kommentar, og de tre er variabler, handlinger og funktioner. Så i din admin_functions.php-fil skal du tilføje følgende kode til den, men sørg for at opdele den i overensstemmelse hermed som angivet nedenfor ved hjælp af kommentarerne.

admin_functions.php:

 0) { // hvis emne eksisterer array_push($errors, "Emnet eksisterer allerede"); } // registrer emne, hvis der ikke er nogen fejl i formularen if (count($errors) ==0) { $query ="INSERT INTO topics (name, slug) VALUES('$topic_name', '$topic_slug')"; mysqli_query($conn, $query); $_SESSION['message'] ="Emne oprettet med succes"; header('location:topics.php'); exit(0); }}/* * * * * * * * * * * * * * * * * * ** - Tager emne-id som parameter* - Henter emnet fra databasen* - sætter emnefelter på formularen til redigering* * * * * * * * * * * * * * * * * * * */function editTopic($topic_id) { global $conn, $topic_name, $isEditingTopic, $topic_id; $sql ="VÆLG * FRA emner WHERE id=$topic_id LIMIT 1"; $result =mysqli_query($conn, $sql); $emne =mysqli_fetch_assoc($result); // sæt formularværdier ($topic_name) på formularen, der skal opdateres $topic_name =$topic['name'];}function updateTopic($request_values) { global $conn, $errors, $topic_name, $topic_id; $emnenavn =esc($request_values['emnenavn']); $topic_id =esc($request_values['topic_id']); // create slug:hvis emnet er "Life Advice", returner "life-advice" som slug $topic_slug =makeSlug($topic_name); // valider form if (empty($topic_name)) { array_push($errors, "Emnenavn påkrævet"); } // registrer emne, hvis der ikke er nogen fejl i formularen if (count($errors) ==0) { $query ="OPDATERING af emner SET name='$topic_name', slug='$topic_slug' WHERE id=$topic_id "; mysqli_query($conn, $query); $_SESSION['message'] ="Emnet blev opdateret"; header('location:topics.php'); exit(0); }}// slet emnefunktion deleteTopic($topic_id) { global $conn; $sql ="SLET FRA emner WHERE id=$emne_id"; if (mysqli_query($conn, $sql)) { $_SESSION['message'] ="Emnet blev slettet"; header("placering:topics.php"); exit(0); }} 

Hermed kan vi oprette, læse, opdatere og slette emner.

Tak for din tålmodighed. I næste del tilføjer vi en formular til oprettelse af indlæg. Vi bruger ckeditor til at give en bruger mulighed for at tilføje styling til tekster, billeder og lister.

Vi ses der!


  1. 6 måder at vælge dublerede rækker i Oracle

  2. Sådan droppes fremmednøglebegrænsning i SQL Server-databasen - SQL Server / TSQL vejledning del 75

  3. Sådan fungerer DATE_ADD() i MariaDB

  4. Datotid lig med eller større end i dag i MySQL