Brugeren der er logget ind, skal kun kunne se sine egne uploads. Men hvordan?

Her kan du få hjælp og stille spørgsmål til PHP!
Besvar
vibi97
Begynder
Indlæg: 1
Tilmeldt: 7. maj 2019, 12:56

Brugeren der er logget ind, skal kun kunne se sine egne uploads. Men hvordan?

Indlæg af vibi97 » 14. maj 2019, 19:31

Hej derude,

Jeg er igang med et afsluttende project, hvor jeg er igang med at bygge en hjemmeside, som skal hjælpe virksomheder med at holde styr på interne dokumenter. Jeg benytter mig af PHP og MySQL til projektet, og mangler blot den sidste del. Jeg har lavet en login system som fungere ganske glimrende, hvor login informationerne fra brugeren bliver opbevaret i mit "users" table som består af følgende:
idUsers int(11) PRIMARY KEY NOT NULL,
uidUsers TINYTEXT NOT NULL,
emailUsers TINYTEXT NOT NULL,
pwdUsers LONGTEXT NOT NULL,
Når brugeren er logget ind, har de så muligheden for at uploade et dokument som f.eks. pdf-filer og word-filer. Mit "files" table består af følgende:
id int(11) PRIMARY KEY NOT NULL,
usersId int(11) - (Foreign key til idUsers)
name varchar(255) NOT NULL,
title varchar(255) NOT NULL,
forfatter varchar(255)
size int(11),
download int(11)
Som det kan ses er "usersId" foreign key til primary keyen i mit users table "idUsers". Så der er en relationen de to imellem. Det betyder også at usersId kommer med i databasen alt efter hvilken bruger der er logget ind.

Jeg har så lavet en søgefunktion, hvor brugeren skal kunne søge på navn, titel og forfatter. Det virker også ganske glimrende. Problemet opstår i og med, at brugeren kun skal have mulighed for at se de dokumenter som er blevet uploaded af dem selv. Så jeg skal på en eller anden måde kun have "spyttet" de resultater ud som stemmer overens med den $session jeg er i, alt efter hvilken bruger der er logget ind. Men det er åbentbart nemmere sagt end gjort, og derfor spørger jeg jer derude til råds.

search.php

Kode: Vælg alt

<?php

    $usersId = $_SESSION['userId'];

    $output = '';

    if (isset($_GET['search']) && $_GET['search'] !== ' ') {
        $searchingq = $_GET['search'];

        $q = mysqli_query($conn, "SELECT * FROM files WHERE id AND name LIKE '%$searchingq%' OR title LIKE '%$searchingq%' OR forfatter LIKE '%$searchingq%' AND usersId = '.$usersId.'") or die(mysqli_error($conn));
        mysqli_stmt_bind_param($id, $userId, $name, $title, $forfatter, $download);
        $c = mysqli_num_rows($q);

        if($c == 0) {
            $output = '<p>No search results for: "' .$searchingq. '"</p>';
        } else {
            

            while($row = mysqli_fetch_array($q)) {
                $name = $row['name'];
                $title = $row['title'];
                $forfatter = $row['forfatter'];
                $download = $row['downloads'];

        
                $output .= 
                            '
                            <tbody class="tableBody">
                            <tr>
                                <td>' .$name. '</td>
                                <td>' .$title. '</td>
                                <td>' .$forfatter. '</td>
                                <td class="text-center"><a href="../uploads/'.$name.'" download="'.$name.'"><i class="fas fa-file-export"></i></a></td>
                                <td class="text-center"><a href="delete.inc.php?id='.$row['id'].'"><i class="fas fa-trash-alt"</a></td> 
                            </tr>
                        </tbody>';
            }
        }
    } else {
        header("location: ./");
    } 

    print("$output");
    mysqli_close($conn);
?>
På forhånd tak og fortsat god aften :)

jepperask
Geni
Geni
Indlæg: 374
Tilmeldt: 4. nov 2012, 17:57

Re: Brugeren der er logget ind, skal kun kunne se sine egne uploads. Men hvordan?

Indlæg af jepperask » 15. maj 2019, 21:41

Jeg har ikke lige mulighed for at teste det, men problemet kunne måske være dine AND og OR's. Prøv eventuelt med nogle parenteser rundt om udtrykkene:

Kode: Vælg alt

"SELECT * FROM files WHERE usersId = '.$usersId.' AND (id AND name LIKE '%$searchingq%' OR title LIKE '%$searchingq%' OR forfatter LIKE '%$searchingq%')"

Besvar