Løve Skrevet 10. november 2004 Del Skrevet 10. november 2004 Hei Jeg mekker meg en hjemmeside nå, og har lyst på en logon i PHP. Det er bare det at jeg ikke kan PHP. Så jeg lurte på om noen kunne lage en logon for meg? Altså at man kan logge på sida og få tilgang til flere ting. Lenke til kommentar
Lemkin Skrevet 10. november 2004 Del Skrevet 10. november 2004 <php session_start(); if ($_POST['bnavn'] == 'dittbrukernavn' && $_POST['pass'] == 'pass') { $_SESSION['brukernavn'] = $_POST['bnavn']; } else { echo 'feil brukernavn og passord'; exit(); } if (isset($_SESSION['brukernavn'])) { // logget på } else { echo 'du har ikke tilgang til denne siden'; exit(); } ?> Så lager du en form: <form method="post" action="check.php"> <input type="text" name="bnavn" /> <input type="password" name="pass" /> </form> Legg phpkoden i check.php så skal det gå bra Lenke til kommentar
hm87 Skrevet 10. november 2004 Del Skrevet 10. november 2004 (endret) <php session_start(); if ($_POST['bnavn'] == 'dittbrukernavn' && $_POST['pass'] == 'pass') { $_SESSION['brukernavn'] = $_POST['bnavn']; } else { echo 'feil brukernavn og passord'; exit(); } if (isset($_SESSION['brukernavn'])) { // logget på } else { echo 'du har ikke tilgang til denne siden'; exit(); } ?> oops..leste scriptet litt feil jeg... Men uansett så sjekker jo scriptet bare om det finnes noe i session-variablen, så det er jo bare å skrive noe så kommer du inn uansett. Må kanskje sjekke opp i mot mysql eller en flatfil..? Endret 10. november 2004 av hm87 Lenke til kommentar
Løve Skrevet 10. november 2004 Forfatter Del Skrevet 10. november 2004 Det jeg trenger er en login for at folk skal kunne se flere deler av sida og at vi kan se hvem som har besøkt... Man trenger bare å logge på en gang. Lenke til kommentar
Lemkin Skrevet 10. november 2004 Del Skrevet 10. november 2004 Men uansett så sjekker jo scriptet bare om det finnes noe i session-variablen, så det er jo bare å skrive noe så kommer du inn uansett. Må kanskje sjekke opp i mot mysql eller en flatfil..? Jo men sessionvariabelen blir ikke satt om bnanv og pass ikke er rett. Her bli passordet hardkoda, jeg vet jo ikke om Solar bruker flatfiles eller en db Lenke til kommentar
hm87 Skrevet 10. november 2004 Del Skrevet 10. november 2004 Men uansett så sjekker jo scriptet bare om det finnes noe i session-variablen, så det er jo bare å skrive noe så kommer du inn uansett. Må kanskje sjekke opp i mot mysql eller en flatfil..? Jo men sessionvariabelen blir ikke satt om bnanv og pass ikke er rett. Her bli passordet hardkoda, jeg vet jo ikke om Solar bruker flatfiles eller en db Den sjekker jo bare om noe er skrevet inn, ikke om brukernavnet og passordet finnes i flatfil eller en database.. Har du tenkt å bruke flatfil eller mysql forresten Solar? Lenke til kommentar
Løve Skrevet 10. november 2004 Forfatter Del Skrevet 10. november 2004 Hva funker best? Regner med at jeg bruker mysql men. Lenke til kommentar
hm87 Skrevet 10. november 2004 Del Skrevet 10. november 2004 (endret) Noe jeg hadde liggende: Login.php <?php if ($_POST['submit-pass'] ) { if ($_POST['brukernavn'] ) { $brukernavn = $_POST['brukernavn']; } else { $brukernavn = FALSE; $melding = "Du må fylle ut brukernavnet<br>"; } if ($_POST['passord'] ) { $passord = $_POST['passord']; } else { $passord = FALSE; $melding .= "Du må fylle ut passordet<br>"; } if ($brukernavn && $passord) { include("mysql.php"); $query ="SELECT passord, fornavn, brukernavn, level, bruker_id FROM brukere WHERE brukernavn='$brukernavn' AND passord=PASSWORD('$passord')"; $result = @mysql_query ($query); $row = mysql_fetch_array ($result, MYSQL_NUM); if ($row) { $query = "SELECT aktivert FROM brukere WHERE aktivert = '1' AND brukernavn = '$brukernavn'"; $result = @mysql_query ($query); if (mysql_num_rows($result) == 1) { $_SESSION['passord'] = $row[0]; $_SESSION['fornavn'] = $row[1]; $_SESSION['brukernavn'] = $row[2]; $_SESSION['level'] = $row[3]; $_SESSION['bruker_id'] = $row[4]; ob_end_clean(); header("Location: index.php?side=brukere/index"); exit(); } else { echo "Brukeren er ikke aktivert"; } } else { echo "Brukenavnet og passordet ble ikke funnet i databasen"; } } else { echo "$melding"; } } else { // Submit sjekk echo "Du kommer fra feil side"; } ?> Sikkerhets_sjekk.php <?php include('mysql.php'); //Variabler $sjekk_brukernavn = $_SESSION['brukernavn']; $sjekk_passord = $_SESSION['passord']; $sjekk_bruker_id = $_SESSION['bruker_id']; $sjekk_bruker_level = $_SESSION['bruker_id']; //spørring for å sjekke om brukerinfoen er lik i session-fila og databasen! $spørring = "SELECT brukernavn, bruker_id, passord, bruker_level FROM brukere WHERE brukernavn = 'sjekk_brukernavn' AND bruker_id = 'sjekk_bruker_id' AND passord = 'sjekk_passord' AND bruker_level = '$sjekk_bruker_level'"; $resultat = @mysql_query($spørring); if($resultat) { $row = mysql_fetch_array($resultat, MYSQL_NUM); $sikkerhets_bruker_level = $row[3]; $sikkerhets_klarert = "Good_to_go!"; } else { $sikkerhets_klarert = FALSE; } ?> Topp på sider <?php include('sikkerhets_sjekk.php'); $side_sikkerthets_level = 3; if($sikkerhets_klarert == "Good_to_go!") { if($sikkerhets_bruker_level >= $side_sikkerthets_level; { // Vis innholdet på sida // eventuelt avslutte php ?> Bunn av sider //Hvis $sikkerhets_klarert ikke er rett, eller $sikkerhets_bruker_level matcher $side_sikkerthets_level: <?php } else { //Level sjekk echo "<br><center><b>Du har ikke rikitg bruker-tilgang for denne siden!</b></center>"; } } else { // bruker sjekk echo "<br><center><b>Du må logge inn for å få tilgang til denne siden!</b></center>"; } ?> Endret 10. november 2004 av hm87 Lenke til kommentar
Lemkin Skrevet 10. november 2004 Del Skrevet 10. november 2004 hm87: Jeg sier jo at passordet og brukernavnet er hardkodet, at det ikke ligger en annen plass enn i .php fila, skjønner? Der det står: if ($_POST['bnavn'] == 'dittbrukernavn' && $_POST['pass'] == 'pass') { Mener jeg at man skal bytte ut 'dittbrukernavn' og 'pass' med det man vil ha, skjønner? Han sa han ville logge seg inn, jeg ga han et basic logginnscript. Lenke til kommentar
hm87 Skrevet 10. november 2004 Del Skrevet 10. november 2004 jaja, men det kan jo stå hva som helst i den sessionvariablen, så det er ikke så vanskelig å komme inn på siden hvis man vil. Greit å ha en skikkelig løsning når du først skal ha noe.. Lenke til kommentar
Lemkin Skrevet 10. november 2004 Del Skrevet 10. november 2004 Det er jo minst like lett å komme inn en plass hvor passordene ligger i en .txtfil eller i en mysql database da Nå er det heller ikke så farlig hva som står i sessionvariabelen, da den bare skjekker om den er satt, ikke hva som står i den og den blir bare satt om passordet og brukernavnet er rett. Lenke til kommentar
hm87 Skrevet 10. november 2004 Del Skrevet 10. november 2004 (endret) Hvis noen skal komme inn som en annen bruker må han vite passordet til vedkommende, når det ligger i session.. Passordet er kryptert og det er vel litt verre å finne enn brukernavnet! Også sjekkes det mot mysql om brukeren og passordet i det hele tatt finnes.. Den som prøver å komme seg inn som en annen bruker, må ihvertfall jobbe litt for å komme inn da.. Du må faktisk lagre session'en eller noe før brukeren lukker vinduet.. Endret 10. november 2004 av hm87 Lenke til kommentar
Lemkin Skrevet 10. november 2004 Del Skrevet 10. november 2004 Jo, men poenget mitt er at du ikke bare kan "spasere" inn på siden igjenom det scriptet jeg har laget der. Om han tenker å ha flere brukere må han jo la dem registere seg, og dermed bruke et annent script. Og da vil mysql være en fin løsning. Lenke til kommentar
LoS Skrevet 10. november 2004 Del Skrevet 10. november 2004 Det smoothie gir er jo en helt vanlig tutoral-sjekke-måte. Det funker til en viss grad. Utrolig nok så er det faktiskt vanskeligere å hacke scriptet hans, en ett vanlig flatfiles-basert script. Forøvrig så kan få gjøre noen spesiell skade hvis dem finner passordet, de kan jo bare se på andre sider. Lenke til kommentar
hm87 Skrevet 10. november 2004 Del Skrevet 10. november 2004 Men skal han ha flere brukere funker ikke det der.. Dessuten sjekker scriptet hans om det finnes en verdi i $_SESSION['brukernavn'] Ikke om det matcher det brukernavnet som ligger hardkoda i scriptet.. den sjekker heller ikke passord, så det er bare å se på skjermen til en som logger inn og bare finne på et passord.. Lenke til kommentar
LoS Skrevet 10. november 2004 Del Skrevet 10. november 2004 Passordet er jo hardkodet der det og, se litt etter. Lenke til kommentar
hm87 Skrevet 10. november 2004 Del Skrevet 10. november 2004 Du ser jo at nederst i scriptet der blir det bare sjekket om det finnes et brukernavn.. Lenke til kommentar
kakkle Skrevet 10. november 2004 Del Skrevet 10. november 2004 (endret) hm87: for å skrive smoothies kode litt annerledes: check.php: <? session_start(); if ($_POST['bnavn'] == 'dittbrukernavn' && $_POST['pass'] == 'pass') { $_SESSION['brukernavn'] = $_POST['bnavn']; // denne blir kun satt dersom brukernavn og passord stemmer. header("location: hemmelig.php"); } else { echo 'feil brukernavn og passord'; } hemmelig.php: <? session_start(); if (isset($_SESSION['brukernavn'])) { // Denne finnes kun dersom den er satt i check.php, altsåp dersom brukernavn og passord er riktig // hemmelig innhold } else { echo 'du har ikke tilgang til denne siden'; exit(); } ?> Akkurat hvilken verdi $_SESSION['brukernavn'] har, har ingenting å si, siden det kun blir sjekket om den er satt. Kunne satt $_SESSION['brukernavn'] = "tre-kåmma-åtte"; for den saks skyld. Men det kan være smart å la det være brukernavn, da dette kan brukes i siden han logger inn på. F.eks. i forbindelse med spørringer. Hvis han skal endre sine egne data, eller no. /Kakkle Endret 11. november 2004 av kakkle Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå