Gå til innhold

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


Anbefalte innlegg

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

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

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

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

Lenke til kommentar

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.

Lenke til kommentar

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

Lenke til kommentar

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

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...