Avatar billede berner5300 Nybegynder
14. juni 2011 - 16:33 Der er 9 kommentarer og
1 løsning

Login system - To ting

Heej alle.

Jeg har to ting jeg gerne vil spørge om.

Hvordan kan man lave en side i php hvor det kun er admin der kan se det.
Jeg har lavet i mysql en user_level og 2 er admin og 1 er user.
Hvordan får jeg så noget frem når man er admin, som man ikke kan se når man er user.

Anden ting.
Kan man lave en side man kalder 'member.php' og hente alle der er registreret navne og lave dem til links. Så de kommer til at hedde, hvis admin har ID'et 1, 'member.php?id=1'?
Og hvis man kan det, kan man så komme ind på fx 'member.php?id=1' og se den brugers info?
Avatar billede webweaver Praktikant
14. juni 2011 - 17:04 #1
Hvis du ønsker at lave en kontrol, så det kun er bestemte der kan se noget, kan du gøre det helt simpelt via en standard if sætning.

Du trækker user_lever ud af databasen og gemmer det som fx $level

Så er det bare at skrive

<?php

if ($level == 2) {
echo "du har adgang";
} else {
echo "du har ikke adgang";
}

?>


For at du kan gøre det, skal du lave udtrækket i databasen, ud fra den brugers id, som prøver at se siden.

altså noget ala

SELECT level from tabel WHERE id = '$id'

Ved login gemmer du så brugerens id som en SESSION fx.

Og ja, du kan sagtens lave det du henter ud til links, hvor id nummeret bruges som .. ja identikator..

Det er samme SQL statement som det ovenover. Den henter data i i den række hvor $id befinder sig. Altså personens profil.

Hvis du har et link der ser sådan ud, 'member.php?id=1', fanger du $id ved at bruge GET.
$id = $_GET["id"];
Avatar billede berner5300 Nybegynder
14. juni 2011 - 17:21 #2
Kan du give et eksempel på det første, altså det med user_level = 2
Avatar billede webweaver Praktikant
14. juni 2011 - 18:10 #3
Naturligvis :)

Jeg vil anbefale dig at udføre koden, når brugeren logger ind og herefter gemme resultatet i en SESSION.

login.php (eller hvad du nu kalder den)
<?php

MySQL connection her ...

$brugernavn =  $_POST["brugernavn"]; // værdien fra dit inputfelt

$query = mysql_query("SELECT * from tabel WHERE brugernavn = '$brugernavn'") or die(mysql_error());

while ($data = mysql_fetch_array($query)) {

$id = $data["id"];
$navn = $data["navn"];
...

}

if ($id != 2) {
$_SESSION["user_level"] = 1;
} else {
$_SESSION["user_level"] = 2;
}

?>


Det var et meget hurtigt eksempel på, hvordan login delen kan laves. Du har formentlig en del af det i forvejen, hvis du allerede har et login system. Nu er der blevet oprettet en SESSION samtidig med login'et. Men det skal tilpasses. Der er ingen validering eller anden sikkerhed med her.

sikker.php (filen kun admin må se)
<?php session_start();

if ($_SESSION["user_level"] != 2) {
echo "Du har ingen adgang her.";
exit;
}

Resten af siden her.. HTML og videre ...
Dette kan nu kun ses, hvis user_level er 2 i databasen.

?>


Denne kode skal du sætte HELT oppe i toppen af din fil.
Før din doctype. Det skal være det første.

login.php skal også have session_start(); som det aller første i filen, ellers virker SESSIONS ikke.
Avatar billede berner5300 Nybegynder
14. juni 2011 - 20:03 #4
Jeg har denne kode:

if($_GET['valg'] == "medlemmer") {
                echo "<h1>Medlemmer</h1>";
                $query = mysql_query("SELECT * FROM user ORDER BY fullname");
                if(mysql_num_rows($query)) {
                    while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
                    ?>
                        <table width='100%'>
                            <tr>
                                <td align='left' width='40%'>
                                    Navn:
                                </td>
                                <td align='right' width='40%'>
                                    <?php echo $row['fullname']; ?>
                                </td>
                            </tr>
                            <tr>
                                <td align='left'>
                                    Alder:
                                </td>
                                <td align='right'>
                                    <?php echo $row['age']; ?>
                                </td>
                            </tr>
                            <tr>
                                <td align='left'>
                                    Ingame navn:
                                </td>
                                <td align='right'>
                                    <?php echo $row['ingame_name']; ?>
                                </td>
                            </tr>
                            <tr>
                                <td align='left'>
                                    Steam ID:
                                </td>
                                <td align='right'>
                                    <?php echo $row['steam_id']; ?>
                                </td>
                            </tr>
                            <tr>
                                <td align='left'>
                                    Email:
                                </td>
                                <td align='right'>
                                    <a href='mailto:<?php echo $row['email']; ?>'><?php echo $row['email']; ?></a>
                                </td>
                            </tr>
                            <tr>
                                <td colspan='2'>
                                    <hr />
                                </td>
                            </tr>
                        </table>           
                    <?php
                    }
                } else {
                    echo("Ingen medlemmer!");
                }
            }

Hvor jeg gerne vil have at hvis man er admin, altså user_level 2, at man kan se:
                            <tr>
                                <td align='left'>
                                    Steam ID:
                                </td>
                                <td align='right'>
                                    <?php echo $row['steam_id']; ?>
                                </td>
                            </tr>
                            <tr>
                                <td align='left'>
                                    Email:
                                </td>
                                <td align='right'>
                                    <a href='mailto:<?php echo $row['email']; ?>'><?php echo $row['email']; ?></a>
                                </td>
                            </tr>

Og hvis man ikke er user_level 2, så skal man ikke se det.
Avatar billede webweaver Praktikant
14. juni 2011 - 22:54 #5
Så smider du bare if sætningen rundt omkring den del som skal vises, hvis man er admin, istedet for i toppen af sitet. Det er kun, hvis man slet ikke skal have adgang til siden, at det skal placeres i toppen.

<?php

if ($_SESSION["user_level"] != 2) {

?>

<tr>
<td align='left'>
Steam ID:
</td>
<td align='right'>
<?php echo $row['steam_id']; ?>
</td>
</tr>
<tr>
<td align='left'>
Email:
</td>
<td align='right'>
<a href='mailto:<?php echo $row['email']; ?>'><?php echo $row['email']; ?></a>
</td>
</tr>

<?php

}

?>


Du skal stadig have session_start(); som det aller første i filen!
Avatar billede webweaver Praktikant
16. juni 2011 - 23:30 #6
Fået det til at virke?
Avatar billede berner5300 Nybegynder
17. juni 2011 - 10:11 #7
Hej Webweaver
Undskyld jeg ikke har svaret før nu, har ikke lige haft internet i et par dage.
Men jaah, det virker, få du smider bare et svar ;-)
Avatar billede webweaver Praktikant
17. juni 2011 - 12:13 #8
Det er naturligvis i orden.

Godt, at du har fået det til at virke.

Fortsat god dag :-)
Avatar billede webweaver Praktikant
17. juni 2011 - 12:52 #9
Tak for point.
Avatar billede berner5300 Nybegynder
17. juni 2011 - 13:21 #10
Så lidt da ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester