ElliotPersson / Case-6

0 stars 0 forks source link

Feedback #1

Open frozenbanana opened 4 months ago

frozenbanana commented 4 months ago

Respons case 6 - Fullstack PHP / MySQL

Här följer respons till caset som gäller modul Fullstack PHP / MySQL. Responsen finns också i form av GitHub Issues - se ditt repo och under fliken "Issues". Under Kompletteringar framgår eventuella kompletteringar som du måste göra för att få godkänt på caset i den här modulen. Kommentarer i övrigt handlar om din kod som kan vara bra för dig att känna till - men inget som du måste ändra.


Du behöver komplettera för att bli godkänd - se under rubriken nedan


Responsen utgår från de grundläggande krav som finns angivna i caset: https://github.com/Glimakra-Webbutvecklare-2023/Case-PHP-MySQL

Kommentarer

README.md och installation

I README.md finns inget angivet. Det ska finnas åt minstånde en beskrivning hur man startar upp applikationen och även en screenshot av applikationen i under användning.

Validering av formulär

Formulär valideras - bra!

Du använder parametriserade quieries. Då finns det inte en risk för SQL Injections. Det vill säga att någon skickar in SQL queries via HTML-formulär:

    // create_buisness.php - Ingen SQL Injection här inte
        $sql = "INSERT INTO business (name, address, open_hours, image_url, date_updated, user_id, category_id)
                VALUES (:name, :address, :open_hours, :image_url, NOW(), :user_id, :category_id)";

        $stmt = $conn->prepare($sql);
        $stmt->execute([
            ':name' => $name,
            ':address' => $address,
            ':open_hours' => $open_hours,
            ':image_url' => $image_url,
            ':user_id' => $_SESSION['user_id'],
            ':category_id' => $category_id
        ]);

Det är också bra att du tittar efter bilden filtyp!

    // create_buisness.php - BRAVO
    if ($img_file_type !== "jpg" && $img_file_type !== "png" && $img_file_type !== "jpeg" && $img_file_type !== "gif") {
        echo "Only JPG, JPEG, PNG or GIF files are allowed!";
        exit;
    }

Det finns exempelt på fält som inte valideras korrekt när formulär skickas för att spara data. $name, $address, $open_hours

Ett exempel på hur det kan se ut är:

$name = htmlspecialchars($_POST["name"]);
$address = htmlspecialchars($_POST["address"]);
$open_hours = htmlspecialchars($_POST["open_hours"]);

Just nu kan en elak användare skriva i ditt $name fält: "Great post! Check this out: "

skulle du skriva ut $name till en av dina sidor så kommer användaren få se "You have been hacked!". Detta kallas Cross Site Scripting Attack (XSS-Attack).

Med htmlspecialchars($_POST["name"]) så kommer det sparas som "Great post! Check this out: <script>alert('You have been hacked!');</script>" vilket inte tolkas som ett script.

Kod, funktioner, namngivning, logik etc

Du använder funktioner Namngivning av filer och variabler ser bra ut överlag Viss logik kan förbättras, dels logiska delar för att få en bra användarupplevelse. Exempelvis en navigationsbar

     <nav class="nav-bar">
         <a href="home.php">Home</a>
         <a href="view_business.php">View Businesses</a>
         <a href="business_form.php">Create Business</a>
         <a href="logout.php">Logout</a>
     </nav>

Du kan också förenkla lite av din CSS genom att ha en css fil som heter shared.css som tar all styling som är gemensam för alla sidor som typ bakgrundsfärgen på body.

Kompletteringar

Ja,

Felmeddelandet lyder:

Warning: move_uploaded_file(img/Screenshot from 2024-05-28 09-42-47.png): Failed to open stream: Permission denied in /var/www/html/create_business.php on line 42

Warning: move_uploaded_file(): Unable to move "/tmp/phpSHhqYx" to "img/Screenshot from 2024-05-28 09-42-47.png" in /var/www/html/create_business.php on line 42
There was an error uploading the file. 

Om kompletteringar

Vid komplettering av uppgift så strävar vi efter att ge feedback innan terminens slut. Meddela i Teams att du kompletterat uppgiften. Om du kompletterar efter terminens sista dag (5 juni) kan eventuellt feedback dröja till nästa termin startat upp.


Bra jobbat! Jag ser mycket som är rätt här. Se bara till att lägga lite mer tid att polera det sista nästa gång. Glöm inte kompletteringarna.

frozenbanana commented 4 months ago

Efter demonstration vid redovisning är du Godkänd. Bra jobbat!