Gå til innhold

Login til flere sider (edit: en side)


Anbefalte innlegg

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 av oya
Lenke til kommentar
Videoannonse
Annonse

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 av Ernie
Lenke til kommentar

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
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
  • 2 uker senere...

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

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

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" :p

 

<!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 av oya
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...