Teknisk rådgivning om techstack i Webbutveckling

Permalänk

Teknisk rådgivning om techstack i Webbutveckling

Tjo! Jag är fullt medveten om att teknisk rådgivning egentligen kostar pengar. I mitt nuvarande exjobb i Webbutvecklingsutbildning på distans är jag dessvärre den enda tekniskt insatta (bara 2st i bolaget utöver mig) så jag har ingen teknisk insatt att rådfråga lite snabbt om techstacksval med den förbestämda förutsättningen att det ska till 100 % gå att deploya på Loopia då det är exjobb-givarens publiceringslösning - ej diskutabelt.

Men jag frågar här ändå så uppskattar jag alla svar jag får, jag är bara ute efter möjliga alternativ av composer-paket & JS-bibliotek som är vanliga inom webbutvecklingsbranschen om de ska publiceras på Loopia. Då jag inte har någon teknisk handledare så frågar jag här istället och håller tummarna för tips på techstack-alternativ!

Om Du själv hade behövt använda dig av PHP & JS med MariaDB som databaslösning, men du kunde inte få till exempelvis Laravel-ramverket, vad hade du valt för composer-paket och/eller JS-paket som du vet är vanliga och beprövade inom IT-branschen?:

- För Autentisering & Auktorisering. T.ex. finns OAuth2 men jag vet inte vilket PHP-paket som gäller då?
- För MariaDB SQL ORM-Queries. T.ex. finns ju Eloquent i Laravel men vet ej om det går att använda enskilt?
- Något annat PHP- och/eller JS-paket för att underlätta utvecklingen och/eller utöka säkerhetsnivån? Tänker "Principle of Least Privilege".
- HTMX för frontend eller är det fortfarande en för omogen/opålitlig frontend-lösning? Kortfatta handlar projektet om CRUD för vanliga användare och en administratör vilket innebär att de har helt olika behörighetsnivåer varav behovet av en beprövad lösning för autentisering & auktorisering.

Jag ska också googla + chatGPTa om vad för alternativ som finns. Men pga. hallucinationsrisk så vet jag ju inte om svaren från chatGPT stämmer gällande vad som är "vanligt i branschen" när det gäller valen för PHP- & JS-paketen utifrån kravet att det måste gå att deploya på Loopia som stödjer PHP 8.3, Apache 2.3 och MariaDB i detta fall.

Beträffande lärarna i denna kurs så får min handledare i kursen INTE hjälpa mig med lösningen av exjobbet utan de får bara handleda mig i rapportskrivandet (den tråkigaste biten i hela kursen). Så återigen varför jag frågar här.

Tack så hemskt mycket på förhand!

Mvh,
WKL.

Visa signatur

<WKL:"En kodrad i taget!";/>

Permalänk
Medlem

Ska du lära dig något eller ska du bara få saker att fungera?

Att direkt hoppa på vilka paket "som gäller" är ofta inte rätt väg att gå utan grundar sig helt i vad du vill uppnå. Paket kommer i sig inte magiskt få funktioner säkra och helt färdiga out of the box utan används mest för att slippa skriva en egen implementation (minska ev. utvecklingstid) särskilt när funktionen troligen kan göras väldigt generell (detta innebär inte att man måste använda andras paket).

Jag skulle börja med att skapa en php applikation (med ett api som din front-end senare kan prata med) lokalt m.h.a. docker, den tech stach du blivit given och börja med en simpel registrering/inloggningsfunktion som nyttjar PHPs sessioner. Vill du spara sessioner på fil eller i databas? Bara genom detta finns saker att lära.

Du nämner bl.a. oauth2 men varför? Vill du att de ska kunna logga in med tredjepartskonton eller ska du själv sätta upp en egen autentisieringsapp?

När du har blivit klar med inloggningen kika sedan på hur du kan koppla på rättigheter för dessa användare, det behöver inte vara krångligare än att de har en ytterligare kolumn för användaren som påpekar om de är admin eller ej, detta är såklart inte nödvändigtvis skalbart i slutändan men en början.

När du har ett API som fungerar som tänkt börja kika på att skapa din front-end.

Permalänk
Medlem

Håller med föregående. Reducera ditt scope! Sätt tydliga gränser om vad som ingår i ditt exjobb. Målet är inte att skapa en fungerande produkt åt en arbetsgivare utan målet är att du ska lära dig. Börja smått. Fortsätt ännu mindre. Det är din rapport som ger dig examen, inte ett fungerande program

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Geeks
Jobbar med data

Om du inte vill köra med Laravel men ändå ha en större PHP-framework finns t.ex. Codeigniter och Codeigniter Shield.

För en liten mer barebone lösning har du Slim som standard använder Doctrine för ORM, lite osäker om du kan använda Doctrine's Auth med denna lösning.

Laminas har PSR-15 Middleware och andra komponenter (cache, db, etc), som du kan använda i Slim eller andra frameworks. De har ju en komplett MVC ifall man inte vill blanda själv.

Vi använder Flight som micro-framework på jobbet för våra KPI:er. Nu är den inte lika micro längre sedan version 3, så får se vart det projektet tar vägen.

Permalänk

Tack så hemskt mycket för svaren!

Så här står det angående denna sista kurs:

Lärandemål Efter godkänt självständigt arbete kan du: - planera din tid, ca 400 timmar, för att lösa en större uppgift, - formulera uppgiften och dess begränsningar, - relatera uppgiften till befintliga studier, - lösa uppgiften eller delar av den, - skriftligt och muntligt presentera arbetet. - visa kunskap om och ha förutsättningar för att hantera etiska frågeställningar inom huvudområdet för utbildningen.

Nu äntligen har exjobb-givaren fått till så jag har tillgång till en FTP där jag laddar upp mina filer som då hamnar direkt i "public_html"-mapp (så jag ser bara "/" och inte någon "public_html" öht) i deras subdomän. Idag fick exjobb-givaren även till så att MariaDB-kontot fungerar i phpMyAdmin så att jag kan skapa tabeller för deras databas.

Jag har tjötat med en klasskamrat vars sambo arbetar med Laravel och PHP som tipsade om Symfony och sen: https://symfony.com/bundles/LexikJWTAuthenticationBundle/curr... för autentisering via JWTs. Frågan är om det ens kommer att gå för jag kommer att behöva joxxa med .htaccess och serverkonfiguration och hela den biten är lite "magi" för mig än så länge.

Här är förresten phpMyAdmin-konto som jag har problem att ansluta till inuti en simpel PHP-fil, hm:

  • Server: s117.loopia.se via TCP/IP

  • Server type: MariaDB

  • Server connection: SSL is used Documentation

  • Server version: 10.6.16-MariaDB-log - FreeBSD Ports

  • Protocol version: 10

  • User: WKL@SHEESH@XXX.XX.XXX.XX

  • Server charset: cp1252 West European (latin1)

  • Web server

  • nginx/1.24.0

  • Database client version: libmysql - mysqlnd 8.1.27

  • PHP extension: mysqli Documentation mbstring Documentation

  • PHP version: 8.1.27 // Väl rääät gammal PHP-version? Hm?

try { $db = new mysqli("s117.loopia.se", "WKL@SHEESH@XXX.XX.XXX.XX", "<SammaLösenSomTillphpMyAdmin???>", "exakt_databas_namn", 3306); } catch (mysqli_sql_exception $error) { var_dump($error); die("Sheesh! Database connection failed for some reason!"); }

Jag har - använder port 3306 enligt bifogad bild från exjobb-givaren - provat med bara användarnamnet och ett snabel-a och sedan med de två samma snabel-a. Men den verkar krascha ändå. Jag framstår som en riktig jubelidiot desto mer jag kontaktar dem och ber dem att konfigurera saker som om jag inte visste redan från början exakt vad jag behövde dem att fixa... 😔

Jag blir så förvirrad. Jag KAN skapa tabellen "Test" där jag sedan förde in en rad med värde och sedan lästa ut alla rader från den inuti phpMyAdmin via SQL-fliken. Men klickar jag på "Databases" och sedan "Check Priviliges" för just den databasen så står det så här:

Och anslutningen från mitt SQLI-objekt i PHP fungerar inte heller. Så jag undrar om det är helt olika konton det rör sig om? Och då jag inte har tillgång till exjobb-givarens Loopia-konto av uppenbara skäl så vet jag inte om de har missat någon inställning när de lade upp detta phpMyAdmin-konto. För det finns inga flikar i navigeringen för varken "Users" eller "Privileges".

Finfin start på detta exjobb!

Mvh,
WKL.

Visa signatur

<WKL:"En kodrad i taget!";/>

Permalänk
Geeks
Jobbar med data

PHP version: 8.1.27 - end of life 2024-11-25 (senaste versionen i 8.1)
MariaDB: 10.6.16 - end of life 2026-07-06 (ligger en version bakom, men finns inga CVE)
Nginx: 1.24.0 - släpps generellt en version om året och detta är senaste stabila

endoflife.date documents EOL dates and support lifecycles for various products.

Det går att välja olika PHP-versioner samt vilka rättigheter en MySQL användare ska ha hos Loopia. Du kan ha åtkomst till vissa actions, men "check permissions" är inte en av dem.

Inte anslutit till Loopias MySQL-servrar på evigheter, så kan inte spontant säga vad som går snett där. När du väl fått ordning på anslutningen ska du köra med en utf8mb4-tabell och inte latin1. Om inte beställaren anger annat.

JWTs är mer för lagring av stateless data, eller API till server är väl fine (om man slår upp den på server nivå). För inloggningar behöver man använda vanliga sessions och sätta kakor i webbläsaren.

JSON Web Tokens (JWT) are Dangerous for User Sessions—Here’s a Solution och deras E-bok.

PS. Kommer säkert komma någon annan åsikt att JWTs är fine, men detta är min.

Permalänk
Skrivet av jreklund:

PHP version: 8.1.27 - end of life 2024-11-25 (senaste versionen i 8.1)
MariaDB: 10.6.16 - end of life 2026-07-06 (ligger en version bakom, men finns inga CVE)
Nginx: 1.24.0 - släpps generellt en version om året och detta är senaste stabila

endoflife.date documents EOL dates and support lifecycles for various products.

Det går att välja olika PHP-versioner samt vilka rättigheter en MySQL användare ska ha hos Loopia. Du kan ha åtkomst till vissa actions, men "check permissions" är inte en av dem.

Inte anslutit till Loopias MySQL-servrar på evigheter, så kan inte spontant säga vad som går snett där. När du väl fått ordning på anslutningen ska du köra med en utf8mb4-tabell och inte latin1. Om inte beställaren anger annat.

JWTs är mer för lagring av stateless data, eller API till server är väl fine (om man slår upp den på server nivå). För inloggningar behöver man använda vanliga sessions och sätta kakor i webbläsaren.

JSON Web Tokens (JWT) are Dangerous for User Sessions—Here’s a Solution och deras E-bok.

PS. Kommer säkert komma någon annan åsikt att JWTs är fine, men detta är min.

Tack så mycket för svaret igen!

Jag måste först och främst berätta att exjobb-givaren är ej tekniskt insatta utan jag är helt ensam på bolaget (2 st + jag). Jag har själv Loopia privat men ej webbhotell så jag kan ej prova mig fram själv för att se hur man måste konfigurera för att få det att fungera som önskat.

Det jag tror det kan bero på är att "subdomän.hemsida.se" har en annan IP-adress i FTP-servern (dit jag laddar upp webbplatsen) än den IP-adress som står kopplat till mitt tilldelade användarnamn inuti phpMyAdmin-konto med SQL-databasen. När jag läste guiden för MySQL-DB hos Loopia så ska det gå att sätta en wildcard (%) vid val av "värdnamn", dvs., vem/vilka som ska kunna anropa databasen externt.

Samtidigt vore detta ju högst underligt att Loopia har det så dåligt upplagt att när en databas läggs till för en subdomän-hemsida så blir IP-adresserna felaktiga. Eller kanske de måste anges manuellt? Hänvisning här: https://support.loopia.se/wiki/skapa-en-mysql-anvandare/

Ange värd: Här kan du ange IP-adressen för andra enheter som ska kunna anropa databasen, till exempel om du har ett program för att redigera databasen istället för att använda phpMyAdmin. Här är det också möjligt att använda wildcards som % för att tillåta en IP range (tex 172.22.223.%) eller att tillåta alla IP-adresser (%). Det senare är ingenting som rekommenderas annat än tillfälligt då det kan utgöra en säkerhetsrisk.

I beskrivningen ovan så stämmer det att inuti phpMyAdmin-kontot just nu så är det i stil "User: namn@g133769@172..." men utan % wildcard. FTP-servern där webbplatsen laddas upp till "subdomän.hemsida.se" börjar på 93 eller 92 så då antar jag att det blir "Access denied for user ..." från databasens håll för att IP-adresserna ej matchar? De börjar inte ens på samma nummer.

Mvh,
WKL.

Visa signatur

<WKL:"En kodrad i taget!";/>