Gå til innhold

innlogging og rettigheter og sånt..[LØST]


Anbefalte innlegg

Skrevet (endret)

har lest litt rundt på forumet og sjekket php.net opp og i mente. når det gjelder innloggingsfunksjoner og sjekking om bruker er logget inn osv.. hvilken måte er best?

sessions? cookies? eller bruke $_server variablene og sjekke opp mot en database?

Endret av phun-ky
Videoannonse
Annonse
Skrevet (endret)

sånt som dette:

 

<?

$sesj_leser = $_SERVER['HTTP_USER_AGENT'];
$sesj_ip = $_SERVER['REMOTE_ADDR'];
$sesj_ipcr = md5($sesj_ip);
$sesj_type="";
$sesj_id = uniqid(rand());

echo "$func_ip<br>";
$er = md5($func_ip);
echo "$er<br>";
echo "session_id()<br>";

function sjekkominnlogget($leser, $ip, $type, $id)
{
include("db.php");
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);

$query = mysql_query("SELECT sesjonsID, leser, ip, type FROM sesjon WHERE leser = $leser AND ip = $ip");
$numrows = mysql_num_rows($query);
$row = mysql_fetch_row($query);

if($numrows == 1)
{
 return false;
}
else
{
 return true;
}
mysql_close();	
}
function loggeinn($leser, $ip, $type, $id)
{
include("db.php");
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);

$query = mysql_query("INSERT INTO sesjon VALUES('$id', '$leser', '$ip', '$type')");
mysql_close();
}
function loggeut($leser, $ip, $type, $id)
{
include("db.php");
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);

$query = mysql_query("DELETE sesjonsID, leser, ip, type FROM sesjon WHERE leser = $leser AND ip = $ip");
mysql_close();  
}
?>

 

sette inn i side:

 

include ("sesjon.php");
$sesjon = @sjekkominnlogget($sesj_leser, $sesj_ipcr, $sesj_type, $sesj_id);

 

Vil dette funke? eneste jeg ser er at det ikke er noe automatisk avlogging hvis bruker lukker vinduet...

Endret av phun-ky
Skrevet (endret)

hm.. jeg får ut bare:

echo "FU!";

 

sesjon.php:

<?

$sesj_leser = $_SERVER['HTTP_USER_AGENT'];
$sesj_ip = $_SERVER['REMOTE_ADDR'];
$sesj_ipcr = md5($sesj_ip);
$sesj_type="";
$sesj_id = uniqid(rand());

function sjekkominnlogget($leser, $ip, $type, $id)
{
include("db.php");
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
$query = mysql_query("SELECT sesjonsID, leser, ip, type FROM sesjon WHERE leser = $leser AND ip = $ip");
$numrows = mysql_num_rows($query);
$row = mysql_fetch_row($query);

if($numrows == 1)
{
 return true;
}
else
{
 return false;
}
mysql_close();
}
function loggeinn($leser, $ip, $type, $id)
{
include("db.php");
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);

$query = mysql_query("INSERT INTO sesjon VALUES('$id', '$leser', '$ip', '$type')");
mysql_close();
}
function loggeut($leser, $ip, $type, $id)
{
include("db.php");
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);

$query = mysql_query("DELETE sesjonsID, leser, ip, type FROM sesjon WHERE leser = $leser AND ip = $ip");
mysql_close();  
}
?>

 

erer.php:

<? 
include ("sesjon.php");
//$sesj = @loggeinn($sesj_leser, $sesj_ipcr, $sesj_type, $sesj_id);
$sesjon = @sjekkominnlogget($sesj_leser, $sesj_ipcr, $sesj_type, $sesj_id);
if($sesjon)
{
echo "YES!!!!!!";
}
else
{
echo "FU!";
}
//echo "logget inn";
?>

 

jeg tror at den sender en false og thats it liksom...

Endret av phun-ky
Skrevet (endret)

merkt at if($_SESSION['innlogget']) er en like bra sjekk for login som en eller annen obskøn sammensatt funksjon.

 

EDIT: sessions er laget for at man skal slippe nettopp håndtering av cookies og brukernavn etc.. i f.eks mysql

Endret av Torbjørn
Skrevet

ok, har gått over til sessions.. men jeg har problemer.. dette er siden som bruker på være autha for å komme inn på:

<?php session_start();
if (!(isset($mail) || isset($pwd))) // user not login, redirect to login page
{
header("Location: http://www.umedia.no/?s=login");;
}

else { ?>
<link href="umedia.css" rel="stylesheet" type="text/css">
<div id="registerwhere">
 <p><span class="styleumedia"><img src="http://php.phun-ky.net/include/images/nav1.png"> <a href="/">hovedsiden</a> | admin</span><br>
</div>
<div id="linkerlist">
 <P><span class="styleumedia_subheadline">Admin Meny</span><br>
     <br>
 <table width="100%" align="left" border="0" cellpadding="1" cellspacing="1">
 	<tr>
   <td width=\"50%\"><span class="styleumedia"><a href="/?s=a_kunde">Se/redigere kunder</a></span></td>
   <td width=\"50%\"><span class="styleumedia"></span></td>
 	</tr>
 	<tr>
   <td width=\"50%\"><span class="styleumedia"><a href="/?s=a_linker">Se/redigere linker</a></span></td>
   <td width=\"50%\"><span class="styleumedia"></span></td>
 	</tr>
 	<tr>
   <td width=\"50%\"><span class="styleumedia"><a href="/?s=a_kategori">Se/redigere kategorier</a></span></td>
   <td width=\"50%\"><span class="styleumedia"></span></td>
 	</tr>
 	<tr>
   <td width=\"50%\"><span class="styleumedia"><a href="/?s=a_produkt">Se/redigere produkter</a></span></td>
   <td width=\"50%\"><span class="styleumedia"></span></td>
 	</tr>  	
 	<tr>
   <td width=\"50%\"><span class="styleumedia"><a href="/?s=a_news">Se/redigere nyheter</a></span></td>
   <td width=\"50%\"><span class="styleumedia"></span></td>
 	</tr>      
 </table>
 </P>
</div>
<?php
}?>

 

og dette er signin fila:

 

<?
//starte session
session_start();
//deklarering av form variabler
$e_post=$_POST['email'];
$passord=$_POST['passw'];

//sikkerhet og formatering
$password = md5($passord);
$esc = mysql_escape_string($e_post);
$ep = addslashes($esc);

//database snakk:
//henter fila der hvor koblingen opprettes
include("db.php");
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
$query = mysql_query("SELECT epost, passord, fornavn, etternavn FROM kunde WHERE epost='$ep'") or die("MySQL Login Error: ".mysql_error()); 
$row = mysql_fetch_array($query);

//hente ut fra rader
$mail = $row["epost"];
$pwd = $row["passord"];
$fnavn = $row["fornavn"];
$enavn = $row["etternavn"];

//sjekker om mailen og passordet stemmer overens med det i databasen
if (($esc == $mail) && ($password == $pwd))
{
session_register($mail); // session register the username
session_register($pwd); // session register the username	
setcookie ("kunde",$mail,time()+604800); // set cookie containing username
Header("Location: /?s=main");
}//sjekker om passordet er feil
elseif (($esc == $mail) && ($password != $pwd))
{
echo "<link href=\"umedia.css\" rel=\"stylesheet\" type=\"text/css\">
<?php include \"header.php\";?>
<div id=\"registersend\" align=\"center\">
  <div align=\"center\"><span class=\"inputmust2\">ERROR</span>
  <br>
  <br>
 <b>FEIL E-POST ELLER PASSORD!</b><br>Sikker på at du skrev inn eposten eller passordet riktig? <a href=\"index.php?s=login\">Prøv igjen</a>
 <br>
 <br>
 Er du registerert? Hvis ikke trykk <a href=\"index.php?s=register\">her</a> for å registrere deg. </div>
</div><?php include \"footer.php\";?>";
}
else//feil på begge
{
echo "<link href=\"umedia.css\" rel=\"stylesheet\" type=\"text/css\">
<?php include \"header.php\";?>
<div id=\"registersend\" align=\"center\">
  <div align=\"center\"><span class=\"inputmust2\">ERROR</span>
  <br>
  <br>
 <b>FEIL E-POST ELLER PASSORD!</b><br>Sikker på at du skrev inn eposten eller passordet riktig? <a href=\"index.php?s=login\">Prøv igjen</a>
 <br>
 <br>
 Er du registerert? Hvis ikke trykk <a href=\"index.php?s=register\">her</a> for å registrere deg. </div>
</div><?php include \"footer.php\";?>";
}
mysql_close(); //lukker connection
?>

 

jeg blir bare redirecta til login.php... (når linken er /admin.php.. .når den er ?s=admin, så får jeg ingenting.. )

Skrevet

vel det er vel greit å se hvor i koden du redirectes?

 

if (!(isset($mail) || isset($pwd))) // user not login, redirect to login page
{
header("Location: http://www.umedia.no/?s=login");;
}

 

ergo $pwd og $mail er ikke satt. og siden den koden jeg pastet er den øverste koden i fila så er det rimelig greit å se at ingen av variablene faktisk blir satt. så... sett dem. fra $_POST eller $_GET regner jeg med.

 

Og ja, det bør være åpenbart på det her tidspunktet, brukerinput har man ikke automatisk tilgjengelig som variabelnavn.

Skrevet

prøvde å sette dette i toppen uten hell:

$mai = $_SESSION['$mail'];
$pd = $_SESSION['$pwd'];
if (!(isset($mai) || isset($pd))) // user not login, redirect to login page
{
header("Location: http://www.umedia.no/?s=login");;
}

Skrevet

det funket ikke.. men dette funket!! :

 

admin.php:

<?php session_start();

$mai = $_SESSION["bruker"];
$pd = $_SESSION["pass"];
//	$_SESSION["ip"]
//	$_SESSION["brow"]

if (!(isset($mai) || isset($pd))) // user not login, redirect to login page
{
header("Location: http://www.umedia.no/?s=login");
}

else { ?>
<link href="umedia.css" rel="stylesheet" type="text/css">
<div id="registerwhere">
 <p><span class="styleumedia"><img src="http://php.phun-ky.net/include/images/nav1.png"> <a href="/">hovedsiden</a> | admin</span><br>
</div>
<div id="linkerlist">
 <P><span class="styleumedia_subheadline">Admin Meny</span><br>
     <br>
 <table width="100%" align="left" border="0" cellpadding="1" cellspacing="1">
 	<tr>
   <td width=\"50%\"><span class="styleumedia"><a href="/?s=a_kunde">Se/redigere kunder</a></span></td>
   <td width=\"50%\"><span class="styleumedia"></span></td>
 	</tr>
 	<tr>
   <td width=\"50%\"><span class="styleumedia"><a href="/?s=a_linker">Se/redigere linker</a></span></td>
   <td width=\"50%\"><span class="styleumedia"></span></td>
 	</tr>
 	<tr>
   <td width=\"50%\"><span class="styleumedia"><a href="/?s=a_kategori">Se/redigere kategorier</a></span></td>
   <td width=\"50%\"><span class="styleumedia"></span></td>
 	</tr>
 	<tr>
   <td width=\"50%\"><span class="styleumedia"><a href="/?s=a_produkt">Se/redigere produkter</a></span></td>
   <td width=\"50%\"><span class="styleumedia"></span></td>
 	</tr>  	
 	<tr>
   <td width=\"50%\"><span class="styleumedia"><a href="/?s=a_news">Se/redigere nyheter</a></span></td>
   <td width=\"50%\"><span class="styleumedia"></span></td>
 	</tr>      
 </table>
 </P>
</div>
<?php
}?>

 

signin.php:

<?
//starte session
session_start();
//deklarering av form variabler
$e_post=$_POST['email'];
$passord=$_POST['passw'];

//sikkerhet og formatering
$password = md5($passord);
$esc = mysql_escape_string($e_post);
$ep = addslashes($esc);

//database snakk:
//henter fila der hvor koblingen opprettes
include("db.php");
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
$query = mysql_query("SELECT epost, passord, fornavn, etternavn FROM kunde WHERE epost='$ep'") or die("MySQL Login Error: ".mysql_error()); 
$row = mysql_fetch_array($query);

//hente ut fra rader
$mail = $row["epost"];
$pwd = $row["passord"];
$fnavn = $row["fornavn"];
$enavn = $row["etternavn"];

//sjekker om mailen og passordet stemmer overens med det i databasen
if (($esc == $mail) && ($password == $pwd))
{
//session_register($mail); // session register the username
//session_register($pwd); // session register the username	
$_SESSION["bruker"] = $mail;
$_SESSION["pass"] = $pwd;
$_SESSION["ip"] = $_SERVER['REMOTE_ADDR'];
$_SESSION["brow"] = $_SERVER['HTTP_USER_AGENT'];
setcookie ("kunde",$mail,time()+604800); // set cookie containing username
header("Location: /?s=main");
}//sjekker om passordet er feil
elseif (($esc == $mail) && ($password != $pwd))
{
echo "<link href=\"umedia.css\" rel=\"stylesheet\" type=\"text/css\">
<?php include \"header.php\";?>
<div id=\"registersend\" align=\"center\">
  <div align=\"center\"><span class=\"inputmust2\">ERROR</span>
  <br>
  <br>
 <b>FEIL E-POST ELLER PASSORD!</b><br>Sikker på at du skrev inn eposten eller passordet riktig? <a href=\"index.php?s=login\">Prøv igjen</a>
 <br>
 <br>
 Er du registerert? Hvis ikke trykk <a href=\"index.php?s=register\">her</a> for å registrere deg. </div>
</div><?php include \"footer.php\";?>";
}
else//feil på begge
{
echo "<link href=\"umedia.css\" rel=\"stylesheet\" type=\"text/css\">
<?php include \"header.php\";?>
<div id=\"registersend\" align=\"center\">
  <div align=\"center\"><span class=\"inputmust2\">ERROR</span>
  <br>
  <br>
 <b>FEIL E-POST ELLER PASSORD!</b><br>Sikker på at du skrev inn eposten eller passordet riktig? <a href=\"index.php?s=login\">Prøv igjen</a>
 <br>
 <br>
 Er du registerert? Hvis ikke trykk <a href=\"index.php?s=register\">her</a> for å registrere deg. </div>
</div><?php include \"footer.php\";?>";
}
mysql_close(); //lukker connection
?>

Skrevet

$mai = $_SESSION["bruker"];
$pd = $_SESSION["pass"];

 

Dette er bare unødvendig, og du sparer de 2 linjene om du bruker

 

if (!(isset($_SESSION["bruker"]) || isset($_SESSION["pass"])))

 

evnt

 

if (!isset($_SESSION["bruker"]) || !isset($_SESSION["pass"]))

 

Btw:

Du trenger vel bare skjekke om $_SESSÌON["bruker"] er satt bare.

Skrevet

tenkte på det, men hvis jeg skal skille mellom vanlige brukere og brukere med rettigheter (som jeg skal implementere ved en senere anledning) så er det vel best sånn.. (?)

Skrevet

but how? jeg mener det er en litt rar måte, for man vet ikke hvor mange produkter brukeren handler... (antall og forskjellige)..

Skrevet

$_SESSION['handlekurv'] = array();

 

$_SESSION['handlekurv'][] = "toalettsåpe";

$_SESSION['handlekurv'][] = "skrutrekker";

 

print_r($_SESSION['handlekurv'];

 

noe enkelt system, men brukbart.

 

i kassen kan du så dumpe en bestilling til mysql

Skrevet

så det må da være en dobbel array?

 

 $_SESSION['handlekurv'] = array();

$_SESSION['handlekurv'][] = "toalettsåpe","2";
$_SESSION['handlekurv'][] = "skrutrekker","3";

print_r($_SESSION['handlekurv'];

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...