Avatar billede younk-dk Nybegynder
28. september 2005 - 15:27 Der er 4 kommentarer og
2 løsninger

Session og sikkerhed.

Hej jeg har et fint profil script, men sikkerheden er i bund.

Jeg ved selv lidt om php, og jeg ved man skal bruge session, men jeg kan bare ikke selv finde ud af det.

Hele scriptet er lavet i 1 fil, så den ene fil indeholder flere sider.
Problemet er bare at hvis man skrive: http://sidensnavn.dk/?page=newAvatar Kommer man uden om admin delen og så kan man oprette nye profiler uden adminrettigheder.
Selve scriptet har en admin login del, men den laver ikke session og admin siderne tjekker ikke session. Så man kan fx bare skrive http://sidensnavn.dk/?=inde så er man inde på admin modulet.


Så hvis der var nogle der kunne hjælpe mig med noget simpelt session så jeg selv kan gøre det på resten af scriptet vil det være perfekt.








<?php
// MySQL connect
mysql_connect("localhost","","");
mysql_select_db("databasen");

// Admin
$adminNavn = "admin";
$adminPass = "123456";

// Siderne
if ($_GET['page'] == "" || !$_GET['page'] == "default") {
$indhold = "<center>";
$indhold.= "<img src=\"http://www.younk.dk/wwe/logoban/logoWwe.gif\"><br /><br />";
$indhold.= "WWE er nok det som mange forbinder med wrestling. Det var Vince McMahon Jr., ejeren af WWE, som førte wrestling ind i vores kultur med det såkaldte Sports Entertainment som fangede millioner af fans kloden rundt. WWE lever stadig den dag idag, større end nogensinde før.";
$indhold.= "<br /><br /><i>Klik på det brand du vil læse om:</i><br /><br />";
$indhold.= "<a href=\"?page=viewRaw\"><img src=\"http://www.younk.dk/wwe/logoban/rawlogo.gif\" border=\"0\"></a><br /><br />";
$indhold.= "<a href=\"?page=viewSmack\"><img src=\"http://www.younk.dk/wwe/logoban/sdlogo.gif\" border=\"0\"></a>";
$indhold.= "</center>";
print $indhold;
}

if ($_GET['page'] == "viewProfile") {
$indhold = "$_GET[navn]";
print $indhold;
}
if ($_GET['page'] == "admin") {
$indhold = "<form action=\"?page=inde\" method=\"POST\">";
$indhold.= "Brugernavn:";
$indhold.= "<br />";
$indhold.= "<input type=\"text\" name=\"user\">";
$indhold.= "<br />";
$indhold.= "Kodeord:";
$indhold.= "<br />";
$indhold.= "<input type=\"password\" name=\"pass\">";
$indhold.= "<br />";
$indhold.= "<input type=\"submit\" value=\"Login\">";
$indhold.= "</form>";
print $indhold;
}

if ($_GET['page'] == "inde") {

//  tjekker om du har skrevet rigtigt.
if ($_POST['user'] != "$adminNavn" && $_POST['pass'] != "$adminPass") {
$indhold = "Forkerte dataer!<br /> Prøv igen!";

} else {
// hvis du har rettighederne, så:

$indhold = "<h3><b>Hej ".$adminNavn." velkommen til admin-modulet!</b></h3><hr/>";
$indhold.= "<a href=\"?page=newAvatar\">Ny profil</a> <br />";
$indhold.= "<a href=\"?page=editAvatar\">Ret profil</a> <br />";
$indhold.= "<a href=\"?page=deleteAvatar\">Slet profil</a> <br />";
}

if ($_GET['page'] == "newAvatar") {
$indhold = "<form action=\"?page=newAvatar.ok\" method=\"POST\">";
$indhold.= "Navn: <br /><input type=\"text\" name=\"navn\"><br />";
$indhold.= "Kategori: <br /><select name=\"kat\"><option value=smack>SmackDown</option><option value=raw>Raw</option><option value=TNA>TNA</option></select><br />";
$indhold.= "Billede URL: <br /><input type=\"text\" name=\"url\"><br />";
$indhold.= "Vægt: <br /><input type=\"text\" name=\"vaegt\"><br />";
$indhold.= "Højde: <br /><input type=\"text\" name=\"hojde\"><br />";
$indhold.= "Født: <br /><input type=\"text\" name=\"fodt\"><br />";
$indhold.= "Fra: <br /><input type=\"text\" name=\"fra\"><br />";
$indhold.= "Finish move: <br /><input type=\"text\" name=\"finish_move\"><br />";
$indhold.= "Vundet: <br /><input type=\"text\" name=\"vundet\"><br />";
$indhold.= "Ekstra Info: <br />";
$indhold.= "<textarea style='height: 200px; width: 100%;' name='ekstra_info'></textarea>";
$indhold.= "<br /><input type='submit' value='opret'></form>";
print $indhold;
}
Avatar billede spindoktoren Nybegynder
28. september 2005 - 16:01 #1
Sessions er egentlig såre simpelt. Det eneste du skal huske, er at starte en session med: session_start(); det eneste der er med det, er at det SKAL startes som det aller første i et dokument.
Tricket er bare, at når du tjekker om login'et er korrekt, sætter du en session-variabel:

if ($_POST['user'] == "$adminNavn" && $_POST['pass'] == "$adminPass") { $_SESSION['admin'] = "inde" }

...for eksempel.

Så i de senere sider kører du et tjek:
if ($_SESSION['admin'] == "inde") { echo "side..." } else { header("Location:http://disneyland.com"); exit; }
- for hver side, der kræver password...

Som logout kan du bruge
session_destroy();
Avatar billede spindoktoren Nybegynder
28. september 2005 - 16:10 #2
Avatar billede younk-dk Nybegynder
28. september 2005 - 16:58 #3
Jeg ved godt det er meget at forlange, men hvis du vil sætte det ind, så den laver sessionen og sådan jeg kan lave den ud fra eksemplet, da jeg ikke selv er ret god til php selv.
Avatar billede spindoktoren Nybegynder
01. oktober 2005 - 13:01 #4
Selvfølgelig.. :)

<?php
//Starter session
session_start();
// MySQL connect
mysql_connect("localhost","","");
mysql_select_db("databasen");

// Admin
$adminNavn = "admin";
$adminPass = "123456";

// Indsæt Siderne....

// Indsæt Admin-login...

if ($_GET['page'] == "inde") {

//  Tjekker om du har skrevet rigtigt.
if ($_POST['user'] != "$adminNavn" && $_POST['pass'] != "$adminPass") {
    $indhold = "Forkerte dataer!<br /> Prøv igen!";
} else {
    // Sætter $_SESSION['admin'], hvis du har skrevet rigtigt
    $_SESSION['admin'] = 'inde';
    $indhold = "<h3><b>Hej ".$adminNavn." velkommen til admin-modulet!</b></h3><hr/>";
    $indhold.= "<a href=\"?page=newAvatar\">Ny profil</a> <br />";
    $indhold.= "<a href=\"?page=editAvatar\">Ret profil</a> <br />";
    $indhold.= "<a href=\"?page=deleteAvatar\">Slet profil</a> <br />";
    }
}

if ($_GET['page'] == "newAvatar" && $_SESSION['admin'] == 'inde') {
    $indhold = "<form action=\"?page=newAvatar.ok\" method=\"POST\">";
    $indhold.= "Navn: <br /><input type=\"text\" name=\"navn\"><br />";
    $indhold.= "Kategori: <br /><select name=\"kat\"><option value=smack>SmackDown</option><option value=raw>Raw</option><option value=TNA>TNA</option></select><br />";
    $indhold.= "Billede URL: <br /><input type=\"text\" name=\"url\"><br />";
    $indhold.= "Vægt: <br /><input type=\"text\" name=\"vaegt\"><br />";
    $indhold.= "Højde: <br /><input type=\"text\" name=\"hojde\"><br />";
    $indhold.= "Født: <br /><input type=\"text\" name=\"fodt\"><br />";
    $indhold.= "Fra: <br /><input type=\"text\" name=\"fra\"><br />";
    $indhold.= "Finish move: <br /><input type=\"text\" name=\"finish_move\"><br />";
    $indhold.= "Vundet: <br /><input type=\"text\" name=\"vundet\"><br />";
    $indhold.= "Ekstra Info: <br />";
    $indhold.= "<textarea style='height: 200px; width: 100%;' name='ekstra_info'></textarea>";
    $indhold.= "<br /><input type='submit' value='opret'></form>";
    print $indhold;
}
?>

Skulle gerne virke .. Men man laver jo fejl ;)
Avatar billede younk-dk Nybegynder
04. oktober 2005 - 17:21 #5
Er lige kommet hjem fra en kort ferie. Men kigger på det iaften.

Sorry for den lange vente tid.
Avatar billede younk-dk Nybegynder
04. oktober 2005 - 20:02 #6
Kan ikke få det til at virke. Jeg kunne vel ikke få noget Online MSN Support?

Min MSN mail er Dellevela@hotmail.com
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