{"id":240,"date":"2026-01-28T16:25:12","date_gmt":"2026-01-28T15:25:12","guid":{"rendered":"https:\/\/wp.als070414ps.hemsida.eu\/?p=240"},"modified":"2026-01-28T17:10:00","modified_gmt":"2026-01-28T16:10:00","slug":"slutprojekt-bloggsida","status":"publish","type":"post","link":"https:\/\/wp.als070414ps.hemsida.eu\/?p=240","title":{"rendered":"Slutprojekt Bloggsida"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">L\u00e4nkar<\/h2>\n\n\n\n<p>Bloggsida:<\/p>\n\n\n\n<p><a href=\"https:\/\/als070414ps.hemsida.eu\/webbserver\/projekt\/p02\/index.php\">https:\/\/als070414ps.hemsida.eu\/webbserver\/projekt\/p02\/index.php<\/a><\/p>\n\n\n\n<p>cSource:<\/p>\n\n\n\n<p><a href=\"https:\/\/als070414ps.hemsida.eu\/webbserver\/source.php?path=projekt\/p02\">https:\/\/als070414ps.hemsida.eu\/webbserver\/source.php?path=projekt\/p02<\/a><\/p>\n\n\n\n<p>Uppgifter till testanv\u00e4ndare p\u00e5 sidan (om du inte skapar egen):<br>email: email@mail.com | l\u00f6senord: l\u00f6senord<\/p>\n\n\n\n<p>Id till testanv\u00e4ndare2 som har n\u00e5gra inl\u00e4gg och bloggar: 7<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Id\u00e9 och syfte<\/h2>\n\n\n\n<p>Id\u00e9n \u00e4r att jag ska skapa en hemsida d\u00e4r anv\u00e4ndare kan skapa konton och l\u00e4gga ut inl\u00e4gg som andra anv\u00e4ndare kan se.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00e5l<\/h2>\n\n\n\n<p>M\u00e5let med projektet \u00e4r att vem som helst ska kunna skapa en profil, en blogg med n\u00e5gra inl\u00e4gg i, som sedan g\u00e5r att dela till andra anv\u00e4ndare. Dessa andra anv\u00e4ndare ska \u00e4ven ha m\u00f6jligheten att kommentera p\u00e5 alla olika inl\u00e4gg.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Planering<\/h2>\n\n\n\n<p>Under projektets g\u00e5ng planerar jag att testa allt och g\u00f6ra \u00e4ndringar vid behov.<\/p>\n\n\n\n<p>Under projektets g\u00e5ng ska jag:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Skriva en kravspecifikation<\/li>\n\n\n\n<li>G\u00f6ra en f\u00f6rsta ER-modell p\u00e5 min databas<\/li>\n\n\n\n<li>Skapa databasen i Redgate data modeller<\/li>\n\n\n\n<li>Importera databasen till phpMyAdmin (lokalt)<\/li>\n\n\n\n<li>P\u00e5b\u00f6rja programmering av hemsidan och uppdatera ER-modell samt databas eftersom, utifr\u00e5n kraven<\/li>\n\n\n\n<li>Slutf\u00f6ra hemsidan<\/li>\n\n\n\n<li>Ladda upp kod via fileZilla och skapa databas i oderland via cPanel<\/li>\n\n\n\n<li>G\u00f6ra en slutgiltig testning utav hemsidan<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Kravspecificering:<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Ska:<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Anv\u00e4ndare ska kunna skapa konton med e-post och l\u00f6senord<\/li>\n\n\n\n<li>Anv\u00e4ndare ska kunna logga in med sina konton<\/li>\n\n\n\n<li>Inloggade anv\u00e4ndare ska kunna skapa bloggar<\/li>\n\n\n\n<li>I sina bloggar ska anv\u00e4ndare kunna skapa inl\u00e4gg<\/li>\n\n\n\n<li>Inl\u00e4gg ska kunna ses utav andra anv\u00e4ndare<\/li>\n\n\n\n<li>All information ska lagras i en databas<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">B\u00f6r:<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Inl\u00e4gg ska kunna inneh\u00e5lla olika typer av &#8221;block&#8221;. (Text, Bild, Rubrik, L\u00e4nk)<\/li>\n\n\n\n<li>Inloggade anv\u00e4ndare ska kunna kommentera p\u00e5 inl\u00e4gg<\/li>\n\n\n\n<li>Flera Anv\u00e4ndare ska kunna vara delaktiga i en blogg<\/li>\n\n\n\n<li>Alla en anv\u00e4ndares bloggar och inl\u00e4gg ska vara tillg\u00e4ngliga utifr\u00e5n anv\u00e4ndares profil.<\/li>\n\n\n\n<li>L\u00f6senord i databasen ska vara krypterade<\/li>\n\n\n\n<li>Grundl\u00e4ggande s\u00e4kerhet, inget anv\u00e4ndarinmatat ska kunna f\u00f6ra dig till en annan sida<\/li>\n\n\n\n<li>Anv\u00e4ndare ska kunna ta bort sina inl\u00e4gg, kommentarer, bloggar och sin profil.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Kan:<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>S\u00f6kfunktion &#8211; Anv\u00e4ndare ska kunna s\u00f6ka upp andra anv\u00e4ndares profiler<\/li>\n\n\n\n<li>F\u00f6lj-funktion &#8211; De senaste inl\u00e4ggen utav anv\u00e4ndare man f\u00f6ljer ska synas p\u00e5 din &#8221;Hem&#8221;- sida.<\/li>\n\n\n\n<li>Funktion f\u00f6r att byta l\u00f6senord<\/li>\n\n\n\n<li>&#8221;Kom ih\u00e5g mig&#8221; -funktion<\/li>\n\n\n\n<li>M\u00f6jlighet att redigera inl\u00e4gg<\/li>\n\n\n\n<li>Roller med olika tillst\u00e5nd<\/li>\n\n\n\n<li>Beskrivningar p\u00e5 bloggar och profiler<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">ER-Modeller<\/h2>\n\n\n\n<p>F\u00f6rsta ER_modell:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"395\" src=\"https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/C6425672-6686-4892-AFD4-E5D78149C9C1-1024x395.webp\" alt=\"\" class=\"wp-image-241\" srcset=\"https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/C6425672-6686-4892-AFD4-E5D78149C9C1-1024x395.webp 1024w, https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/C6425672-6686-4892-AFD4-E5D78149C9C1-300x116.webp 300w, https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/C6425672-6686-4892-AFD4-E5D78149C9C1-768x296.webp 768w, https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/C6425672-6686-4892-AFD4-E5D78149C9C1.webp 1132w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>F\u00f6rsta databasmodellen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"381\" src=\"https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/2C01EAAF-A7DB-457B-BE19-B0DA73CA3490-1024x381.png\" alt=\"\" class=\"wp-image-242\" srcset=\"https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/2C01EAAF-A7DB-457B-BE19-B0DA73CA3490-1024x381.png 1024w, https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/2C01EAAF-A7DB-457B-BE19-B0DA73CA3490-300x112.png 300w, https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/2C01EAAF-A7DB-457B-BE19-B0DA73CA3490-768x286.png 768w, https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/2C01EAAF-A7DB-457B-BE19-B0DA73CA3490.png 1223w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">F\u00f6r\u00e4ndringar<\/h4>\n\n\n\n<p>Medans jag jobbade med projektet ins\u00e5g jag att massvis med kolumner i mina tabeller beh\u00f6vdes, tydligast var n\u00e4r jag jobbade med kommentarer och ins\u00e5g att sj\u00e4lva kommentaren inte lagrades n\u00e5gonstans. I post la jag till bl.a `<code>author` och <\/code>`authorId`, som egentligen \u00e4r detsamma som `displayName` och `userId` i user. Jag borde kanske egentligen dragit en koppling mellan user och post ist\u00e4llet men detta var den enklaste och b\u00e4sta l\u00f6sningen f\u00f6r mig n\u00e4r jag kodade.<\/p>\n\n\n\n<p>Slutgiltig ER-modell:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"564\" src=\"https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/9AE8324D-C473-471E-BE59-B4EA3EE7A87A-1024x564.png\" alt=\"\" class=\"wp-image-243\" srcset=\"https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/9AE8324D-C473-471E-BE59-B4EA3EE7A87A-1024x564.png 1024w, https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/9AE8324D-C473-471E-BE59-B4EA3EE7A87A-300x165.png 300w, https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/9AE8324D-C473-471E-BE59-B4EA3EE7A87A-768x423.png 768w, https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/9AE8324D-C473-471E-BE59-B4EA3EE7A87A.png 1159w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Slutgiltiga databasmodellen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"668\" src=\"https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/3A749DF9-E617-4DB7-A86C-236A44E22DD0.png\" alt=\"\" class=\"wp-image-244\" srcset=\"https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/3A749DF9-E617-4DB7-A86C-236A44E22DD0.png 735w, https:\/\/wp.als070414ps.hemsida.eu\/wp-content\/uploads\/2026\/01\/3A749DF9-E617-4DB7-A86C-236A44E22DD0-300x273.png 300w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">S\u00e4kerhet<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">SQL-injektion<\/h4>\n\n\n\n<p>Jag har ett grundl\u00e4ggande skydd mot SQL-injektion eftersom jag anv\u00e4nder mig utav PDO (PHP Data Objects), vilket inneb\u00e4r att SQL-fr\u00e5gan byggs upp f\u00f6re informationen anv\u00e4ndaren uppger skickas in.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">XSS-attack<\/h4>\n\n\n\n<p>Jag har \u00e4ven ett skydd mot XSS-attacker. All data som lagras i databasen \u00e4r exakt det som anv\u00e4ndaren skrev in, d\u00e4rmed <em>kan <\/em>anv\u00e4ndaren skriva farlig javaskript i ett inl\u00e4gg, men f\u00f6re n\u00e5gonting skrivs ut s\u00e5 konverteras det till vanlig text, s\u00e5 hela javaskriptet skrivs ut, det exekveras inte. konverteringen sker via php-funktionen htmlspecialcharacters.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Kryptering av l\u00f6senord<\/h4>\n\n\n\n<p>F\u00f6r extra s\u00e4kerhet krypteras alla l\u00f6senord f\u00f6re de l\u00e4ggs in i databasen, detta g\u00f6rs via php-funktionen password_hash. (krypteringen ser ut p\u00e5 f\u00f6ljande s\u00e4tt: <br>$password = $_POST[&#8221;password&#8221;] $enc_password=password_hash($password, PASSWORD_DEAFULT);), som just nu anv\u00e4nder bcrypt-algoritmen f\u00f6r att hasha l\u00f6senordet, men algoritmen kan \u00e4ndras till starkare i framtiden.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Otill\u00e5ten \u00e5tkomst<\/h4>\n\n\n\n<p>Varje g\u00e5ng en sida laddas i projektet s\u00e5 kollar den om sessionen \u00e4r satt eller inte. Sessionen d\u00f6r efter 24 minuter (standardv\u00e4rde) eller efter man loggar ut. D\u00e4rmed g\u00e5r det inte att logga ut och sedan trycka &#8221;tillbaka&#8221; och komma in igen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">S\u00e4kerhetsrisk<\/h4>\n\n\n\n<p>det finns en s\u00e4kerhetsrisk som jag \u00e4r medveten om. Vid filuppladdning s\u00e5 har jag ingen check att det faktiskt \u00e4r en bild som laddas upp. detta \u00e4r helt och h\u00e5llet mitt fel och inte alls bra. Det \u00e4r p\u00e5 detta vis d\u00e5 filuppladdning \u00e4r sv\u00e5rt. riktigt sv\u00e5rt faktiskt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Utv\u00e4rdering och reflektion<\/h2>\n\n\n\n<p>Jag borde b\u00f6rjat jobba med projektet mycket b\u00e4ttre i tid. Allt jag ville ha gjort blev inte gjort, ex. beskrivningar och funktion att ta bort inl\u00e4gg. Det \u00e4r egentligen inte j\u00e4tteviktiga saker men jag hade varit mer n\u00f6jd om jag hade f\u00e5tt gjort det. Med det sagt \u00e4r jag \u00e4nd\u00e5 n\u00f6jd med projektet, jag fick l\u00e4ra mig mycket nytt om databaser, som jag kanske inte anv\u00e4nt helt effektivt under projektet, men vilket \u00e4nd\u00e5 fungerade ganska bra. N\u00e5got som inte heller framg\u00e5r p\u00e5 sidan \u00e4r att man inte kan ladda upp bilder st\u00f6rre \u00e4n 2MB.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Problem p\u00e5 v\u00e4gen<\/h4>\n\n\n\n<p>Jag st\u00f6tte inte p\u00e5 vidare m\u00e5nga stora problem, lite allm\u00e4nna problem med databaser, vilket \u00e4r naturligt eftersom det \u00e4r det f\u00f6rsta projektet d\u00e4r jag faktiskt anv\u00e4nder mig utav databaser. Det st\u00f6rsta problemet jag st\u00f6tte p\u00e5 var att om man f\u00f6rs\u00f6kte l\u00e4gga till eller ta bort ett block medans man skriver ett inl\u00e4gg s\u00e5 f\u00f6rsvann allting man redan skrivit. Det g\u00e4ller fortfarande f\u00f6r bilder men det g\u00e5r nog att l\u00f6sa ganska enkelt, just nu orkar jag bara inte riktigt med det. Jag l\u00f6ste det genom att g\u00f6ra om &#8221;l\u00e4gg till&#8221; och &#8221;ta bort&#8221; &#8211; knapparna till submit-knappar som laddar om sidan. Det man redan matat in lagras d\u00e5 i post och l\u00e4ggs in i value-taggarna p\u00e5 de olika input- taggarna.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L\u00e4nkar Bloggsida: https:\/\/als070414ps.hemsida.eu\/webbserver\/projekt\/p02\/index.php cSource: https:\/\/als070414ps.hemsida.eu\/webbserver\/source.php?path=projekt\/p02 Uppgifter till testanv\u00e4ndare p\u00e5 sidan (om du inte skapar egen):email: email@mail.com | l\u00f6senord: l\u00f6senord Id till testanv\u00e4ndare2 som har n\u00e5gra inl\u00e4gg och bloggar: 7 Id\u00e9 och syfte Id\u00e9n \u00e4r att jag ska skapa en hemsida d\u00e4r anv\u00e4ndare kan skapa konton och l\u00e4gga ut inl\u00e4gg som andra anv\u00e4ndare kan se. M\u00e5l [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-240","post","type-post","status-publish","format-standard","hentry","category-okategoriserade"],"_links":{"self":[{"href":"https:\/\/wp.als070414ps.hemsida.eu\/index.php?rest_route=\/wp\/v2\/posts\/240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.als070414ps.hemsida.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.als070414ps.hemsida.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.als070414ps.hemsida.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.als070414ps.hemsida.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=240"}],"version-history":[{"count":4,"href":"https:\/\/wp.als070414ps.hemsida.eu\/index.php?rest_route=\/wp\/v2\/posts\/240\/revisions"}],"predecessor-version":[{"id":248,"href":"https:\/\/wp.als070414ps.hemsida.eu\/index.php?rest_route=\/wp\/v2\/posts\/240\/revisions\/248"}],"wp:attachment":[{"href":"https:\/\/wp.als070414ps.hemsida.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.als070414ps.hemsida.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.als070414ps.hemsida.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}