oya Skrevet 22. januar 2006 Del Skrevet 22. januar 2006 (endret) Hei! Har laget et administrasjonssystem for medlemmene i en klubb. Det eneste jeg mangler nå er et login-/logg ut-system. Jeg har liten kunnskap om det å lage et sikkert innloggingssystem. Systemet består av flere .php-filer. Og det er viktig at dersom noen prøver å gå inn på noen av disse filene, vil de bli nektet adgang dersom de ikke er logget inn. Og så klart må det være slik at de som har logget seg inn kan bruke alle disse filene. Kanskje er det lurt med autologoff, dersom brukeren er inaktiv over en stund. Noen som har noen tips? Edit: Ny informasjon her Endret 6. februar 2006 av oya Lenke til kommentar
Ernie Skrevet 22. januar 2006 Del Skrevet 22. januar 2006 (endret) Slik ville jeg gjort det: Innlogging: - Sjekk at inntastet passord og brukernavn stemmer (MERK: du bør ufarliggjøre brukernavnet ved å benytte mysql_real_escape(), addslashes() eller lignende) - opprett en session med brukerid/brukernavn, passord (hashet sha1 eller md5), ip og browser (+ andre ting du måtte ønske) Sjekk på hver side: - Sjekk at brukerid/brukernavn og passord stemmer (for å unngå at noen på samme webhotell skulle finne på å noe) - Sjekk at browser og ip stemmer overens - Hvis en av de to over feiler ugyldiggjør du session (session_unset('var') og session_destroy()) hvis ikke åpner du siden Utlogging: - session_unset('var') og session_destroy() PS: Når jeg skriver session_unset('var') mener jeg en pr. session-variabel du oppretter. PPS: Tankegangen her kan inneholde sikkerhetshull, og dette tar jeg ikke ansvar for. Dog mener jeg dette skal være sikkert nok til vanlig bruk. Edit: Auto-utlogging skjer i dette tilfellet ved at session blir ugyldig når session-lifetime går ut (standard er det 1440sek eller 24minutter) Endret 22. januar 2006 av Ernie Lenke til kommentar
mikk- Skrevet 22. januar 2006 Del Skrevet 22. januar 2006 Det absolutt enkleste er vel å lage en PHP-fil som du inkluderer på hver side, som tar seg av alle disse jobbene. Skjekker om brukeren er logget inn, skriver "du er logget inn som...." og "logg ut"-link dersom brukeren er logget inn, og loginskjema og die() dersom brukeren ikke er logget inn. Lenke til kommentar
Ernie Skrevet 22. januar 2006 Del Skrevet 22. januar 2006 Det absolutt enkleste er vel å lage en PHP-fil som du inkluderer på hver side, som tar seg av alle disse jobbene. Skjekker om brukeren er logget inn, skriver "du er logget inn som...." og "logg ut"-link dersom brukeren er logget inn, og loginskjema og die() dersom brukeren ikke er logget inn. 5482999[/snapback] Eller man bare lager en funksjon i en egen fil samme med alle andre funksjoner man bruker. Er ikke noe galt i å gjøre det slik du sier, bare nevner alternativet Lenke til kommentar
oya Skrevet 23. januar 2006 Forfatter Del Skrevet 23. januar 2006 Ingen som vet om noe hallveis ferdigkoda som kan redigeres litt ? Lenke til kommentar
Ernie Skrevet 23. januar 2006 Del Skrevet 23. januar 2006 Ingen som vet om noe hallveis ferdigkoda som kan redigeres litt ? 5487782[/snapback] Synes jeg postet mer enn detaljert nok hvordan man gjør det jeg Lenke til kommentar
stian90_2 Skrevet 23. januar 2006 Del Skrevet 23. januar 2006 Skal det være til en eller flere brukere ? Har til begge Lenke til kommentar
oya Skrevet 5. februar 2006 Forfatter Del Skrevet 5. februar 2006 hmmm.... flere brukere Lenke til kommentar
NH Skrevet 5. februar 2006 Del Skrevet 5. februar 2006 et eksempel ved bruk av mysql: <?php session_start(); // start session class minsql{ var $hostname = 'localhost'; var $username = 'root'; var $password = ''; var $db = 'mindb'; function minsql(){ return mysql_connect($this->hostname, $this->username, $this->password); } function getDB(){ return $this->db; } } $conn = new minsql(); //Valider Brukernavnet if(preg_match('@^[a-zæøå0-9_-]+$@i', $_POST['brukernavn'])){ $username = $_POST['brukernavn']; } else { die("Ugyldig brukernavn, kan kun inneholde tegnene a-å, 0-9 samt - og _"); } //valider passordet if(preg_match('@^[a-zæøå0-9_-]+$@i', $_POST['passord'])){ $username = $_POST['passord']; } else { die("Ugyldig passord, kan kun inneholde tegnene a-å, 0-9 samt - og _"); } //Lag en sql spørring $sql = "SELECT * FROM gb_admin WHERE username='$username' AND password='$passord'"; $result = mysql_query($sql, $conn); if(!$result){ echo "Ingen med dette brukernavnet/passsordet ble funnet i databasen"; } //sjekk om en bruker ble funnet if(mysql_num_rows($result) == 1){ $info = mysql_result($result, 0); //Bruker funnet, set sessions $_SESSION['userid'] = $info['id']; $_SESSION['brukernavn'] = $info['brukernavn']; $_SESSION['er_loga_inn'] = $_SERVER['REMOTE_ADDR']; } else { echo "Ingen med dette brukernavnet/passsordet ble funnet i databasen"; } //Lukk mysql koblingen mysql_close($conn); ?> Lenke til kommentar
oya Skrevet 5. februar 2006 Forfatter Del Skrevet 5. februar 2006 Hvor skal jeg plassere dette scriptet da? Har en index.php med include på de forskjellige scriptetene som brukes. Det må jo være slik at man ikke kan åpne scriptene ved å ikke gå via indexfilen. Er litt grønn på akkurat dette. Lenke til kommentar
oya Skrevet 6. februar 2006 Forfatter Del Skrevet 6. februar 2006 (endret) Har forandret litt på hele skriptet. Nå ligger alt i en enkel fil (index.php) med cmd (kommandoer). Har prøvd litt med forskjellige loginscripts, og får det altså ikke til. Noen som kan fikse litt på koden . I utgangspunktet har jeg bare behov for en bruker, men sier jo ikke nei til flere brukere. Eneste som er viktig er at det er "relativ høy" sikkerhet. Søk etter "//The logout function" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <style type="text/css"> <!-- select, option, textarea, input { BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; COLOR: #000000; FONT-SIZE: 11px; FONT-FAMILY: Verdana; BACKGROUND-COLOR: #ffffff } a:active,a:visited,a:link {color: #446488; text-decoration: none; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt;} a:hover {color: #00004F; text-decoration: none; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; } a.nav:active, a.nav:visited, a.nav:link { color: #000000; font-size : 10px; font-weight: bold; font-family: verdana; text-decoration: none;} a.nav:hover { font-size : 10px; font-weight: bold; color: black; font-family: verdana; text-decoration: underline; } .list { BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; COLOR: #000000; FONT-SIZE: 11px; FONT-FAMILY: Verdana; BACKGROUND-COLOR: #F7F6F4 } .header { font-size : 16px; font-weight: bold; color: #808080; font-family: verdana; text-decoration: none; } .bborder { background-color: #FFFFFF; border: 1px #A7A6B4 solid; } .panel { border: 1px dotted silver; background-color: #F7F6F4;} BODY, TD, TR {text-decoration: none; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; cursor: default;} --> </style> <title>Saltdal Flyklubb Mikroflygruppa medlemsadministrasjon</title> </head> <body BgColor=white> <center> <table border="0" cellspacing="0" cellpadding="2" > <tr> <td class="bborder" bgcolor="#FFFFFF" style="-moz-border-radius: .8em .8em .8em .8em;"> <table border=0 cellpadding=0 cellspacing=0 bgcolor="#ffffff" width="745" > <tr> <td bgcolor="#FFFFFF" > </td> </tr> <tr> <td bgcolor="#000000" ><img src="skins/images/blank.gif" width=1 height=1></td> </tr> <tr> <td bgcolor="#F7F6F4" > <table cellpadding=8 cellspacing=4 border=0> <tr> <td> <a href="index.php?cmd=home">Hjem</a> </td> <td>|</td> <td> <a href="index.php?cmd=add">Legg til medlem</a> </td> <td>|</td> <td> <a href="index.php?cmd=edit">Rediger medlem</a> </td> <td>|</td> <td><a href="index.php?cmd=remove"> Slett medlem </a></td> <td>|</td> <td> <a href="index.php?cmd=logout">Logg ut</a> </td> </tr> </table> </td> </tr> <tr> <td bgcolor="#000000" ><img src="skins/images/blank.gif" width=1 height=1></td> </tr> <tr><td bgcolor="#FFFFFF" ><img src="skins/images/blank.gif" width=1 height=5></td></tr> <tr> <td > <table border=0 cellpading=0 cellspacing=0 width="100%" height="100%" > <tr valign="top"><td width="13%" height="55%" valign="middle"> <p align="center"><br /> <img src="pic.jpg" border="0" ><td width="87%" height="20%" valign="middle"> <div class=header>Velkommen</div> <tr> <td width="13%" height="26%" valign="top"> <td width="87%" height="46%" valign="top"> <table border=0 cellpading=0 cellspacing=0 width=654> <tr valign="top"> <td width=1280 height=1> <? $URLToAdminPage = "index.php"; $Usernamelogin = "admin"; $EncryptedPassword = "MD5PASS"; //CONNECT TO THE DATABASE // //Login information $username = "xxxxxxx"; $password= "xxxxx"; $host = "localhost"; $dbName = "xxxxxx"; //Database-connection $link = mysql_connect("localhost",$username,$password) or die("Connect Error: ".mysql_error()); //Selecting the database mysql_select_db($dbName , $link) or die("Select DB Error: ".mysql_error()); //The logout function if ($_GET["cmd"]=="logout") { } //The login function if ($_GET["cmd"]=="login") { } if($_GET["cmd"]=="") { echo <<< end <form action="index.php?cmd=login" method=post> <table width="80%" border="0" cellspacing="0" cellpadding="0"> <tr> <td><p class="main2">Brukernavn:</p></td> <td><input type=text name=user/></td> </tr> <tr> <td><p class="main2">Passord:</p></td> <td><input type=password name=pass/></td> </tr> </table> <input type=hidden name=action value=dologin> <input type=submit value='Login'></form> end; } //The update function if($_GET["cmd"]=="updaterow") { $id = $_GET['id']; $udnavn = $_POST['navn']; $udadresse = $_POST['adresse']; $udtlf = $_POST['tlf']; $udemail = $_POST['email']; $result = mysql_query("UPDATE medlemmer SET navn='$udnavn',adresse='$udadresse',tlf='$udtlf',email='$udemail' WHERE id = $id LIMIT 1", $link); echo "Du har redigert informasjon til $udnavn"; } //The delete function if($_GET["cmd"]=="delete") { $id = $_GET['id']; //delete $result = mysql_query("DELETE FROM medlemmer WHERE id = $id LIMIT 1", $link); //After delete, show this! echo "Medlemmet er slettet!"; echo "<br>"; echo "<a href=\"index.php?cmd=remove\">Tilbake</a>"; } //The add function if($_GET["cmd"]=="addmember") { //From the form $id = $_POST['id']; $navn = $_POST['navn']; $adresse = $_POST['adresse']; $tlf = $_POST['tlf']; $email = $_POST['email']; //Inserting into table $query = "INSERT INTO medlemmer VALUES('$id','$navn','$adresse','$tlf','$email')"; $resultat = mysql_query($query) or die(mysql_error()); //After insert, show this! echo "Du har lagt til følgende medlem: $navn"; } //This is the form for adding new members if($_GET["cmd"]=="add") { //Selecting from database $result = mysql_query("SELECT * FROM medlemmer", $link); //Finding the ID-nr to use $num_rows = mysql_num_rows($result); $newnumber = $num_rows + 1; //The form print "<p>Her kan du legge til medlemmer</p>"; echo "<form action='index.php?cmd=addmember' method='post' class='news'>"; echo "<input type='hidden' name='id' value=$newnumber>"; echo "<table width='100%' border='0' cellspacing='0' cellpadding='0' class='news'>"; echo " <tr align='left' valign='top'> "; echo " <td width='100'>Navn:</td>"; echo " <td><input type='text' name='navn'/></td>"; echo " </tr>"; echo " <tr align='left' valign='top'> "; echo " <td width='100'>Adresse:</td>"; echo " <td><input type='text' name='adresse'/></td>"; echo " </tr>"; echo " <tr align='left' valign='top'> "; echo " <td width='100'>Telefon:</td>"; echo " <td><input type='text' name='tlf'/></td>"; echo " </tr>"; echo " <tr align='left' valign='top'>"; echo " <td width='100'>E-Mail</td>"; echo " <td><input type='text' name='email'/></td>"; echo " </tr>"; echo "</table>"; echo "<input type='submit' name='submit' value='Legg til medlem' />"; echo "</form>"; } //This is the page for removing members if($_GET["cmd"]=="remove") { print "<p>Her kan du slette medlemmer</p>"; //Selecting from the table $result = mysql_query("select * from medlemmer order by navn"); //run a while loop that grabs all the table while($r=mysql_fetch_array($result)) { //grabing from the table $id=$r["id"]; $navn=$r["navn"]; $adresse=$r["adresse"]; $tlf=$r["tlf"]; $email=$r["email"]; //This is the delete-row echo "<a href='index.php?cmd=delete&id=$id'>Slett</a>"; echo " - $navn - $adresse - $tlf - $email"; echo "<br>"; } } //This is the page for updating information if($_GET["cmd"]=="edit") { print "<p>Her kan du redigere informasjon om medlemmer</p>"; //Selecting from the table $result = mysql_query("select * from medlemmer order by navn"); //run a while loop that grabs all the table while($r=mysql_fetch_array($result)) { //grabing from the table $id=$r["id"]; $navn=$r["navn"]; $adresse=$r["adresse"]; $tlf=$r["tlf"]; $email=$r["email"]; //This is the update-row echo "<a href='index.php?cmd=update&id=$id'>Rediger</a>"; echo " - $navn - $adresse - $tlf - $email"; echo "<br>"; } } //The update form if($_GET["cmd"]=="update") { $id = $_GET['id']; $result = mysql_query("Select * FROM medlemmer WHERE id = $id LIMIT 1", $link); $num = mysql_numrows($result); $i=0; while ($i < $num) { $navn=mysql_result($result,$i,"navn"); $adresse=mysql_result($result,$i,"adresse"); $tlf=mysql_result($result,$i,"tlf"); $email=mysql_result($result,$i,"email"); echo "<form action='index.php?cmd=updaterow&id=$id' method='post' class='news'>"; echo "<input type='hidden' name='id' value=$id>"; echo "<table width='100%' border='0' cellspacing='0' cellpadding='0' class='news'>"; echo " <tr align='left' valign='top'> "; echo " <td width='100'>Navn:</td>"; echo " <td><input type='text' name='navn' value='$navn' /></td>"; echo " </tr>"; echo " <tr align='left' valign='top'> "; echo " <td width='100'>Adresse:</td>"; echo " <td><input type='text' name='adresse' value='$adresse' /></td>"; echo " </tr>"; echo " <tr align='left' valign='top'> "; echo " <td width='100'>Telefon:</td>"; echo " <td><input type='text' name='tlf' value='$tlf' /></td>"; echo " </tr>"; echo " <tr align='left' valign='top'>"; echo " <td width='100'>E-Mail</td>"; echo " <td><input type='text' name='email' value='$email' /></td>"; echo " </tr>"; echo "</table>"; echo "<input type='submit' name='submit' value='Oppdater' />"; echo "</form>"; ++$i; } } //This is the frontpage if($_GET["cmd"]=="home") { //Selecting from the table $result = mysql_query( "SELECT navn, adresse, tlf, email FROM medlemmer ORDER BY navn ASC" ) or die("SELECT Error: ".mysql_error()); //Counting rows $num_rows = mysql_num_rows($result); //The welcomemessage print "<p>Velkommen til medlemsoversikten! Det er "; print "$num_rows"; print " medlemmer i databasen.</p>"; print "<table width=90% border=0>\n"; //The top of the table print " <tr> <td class='list' bgcolor=#F7F6F4><font face=verdana size=1/><b>Navn</b></font></td> <td class='list' bgcolor=#F7F6F4><font face=verdana size=1/><b>Adresse</b></font></td> <td class='list' bgcolor=#F7F6F4><font face=verdana size=1/><b>Tlf</b></font></td> <td class='list' bgcolor=#F7F6F4><font face=verdana size=1/><b>E-mail</b></font></td> </tr>\n"; //Fetching all the rows into the table while ($get_info = mysql_fetch_row($result)){ print "<tr>\n"; foreach ($get_info as $field) print "\t<td><font face=arial size=1/>$field</font></td>\n"; print "</tr>\n"; } print "</table>\n"; } ?> <p><br/> <br /></p></td> </tr> </table> </tr> </table> </td> </tr></table></td></tr></table> <br/> </body> </html> Endret 6. februar 2006 av oya Lenke til kommentar
stian90_2 Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 Ta og legg ut hvordan tabelene skal se ut, det scriptet kunne vært morsomt og testet =) 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å