phun-ky Skrevet 29. september 2004 Del Skrevet 29. september 2004 (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 2. oktober 2004 av phun-ky Lenke til kommentar
phun-ky Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 (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 29. september 2004 av phun-ky Lenke til kommentar
phun-ky Skrevet 30. september 2004 Forfatter Del Skrevet 30. september 2004 (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 30. september 2004 av phun-ky Lenke til kommentar
Torbjørn Skrevet 30. september 2004 Del Skrevet 30. september 2004 en kommentar til deg og andre; hvorfor ha med "@" når dere leter etter feil? Lenke til kommentar
Svendsen Skrevet 30. september 2004 Del Skrevet 30. september 2004 @ er en forbannelse når du ikke veit å bruke den "riktig" JEg bruker session for å huske login og andre ting. Lenke til kommentar
Torbjørn Skrevet 30. september 2004 Del Skrevet 30. september 2004 (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 30. september 2004 av Torbjørn Lenke til kommentar
Svendsen Skrevet 30. september 2004 Del Skrevet 30. september 2004 Skal man ha retigheter kan det være greit å ha en mysql db å jobbe mot for å sette retighet på den enkelte bruker eller lage bruker/passord for vær enkelt grad. et par sider jeg har hatt nytte av: http://www.daydreamgraphics.com/ http://www.spoono.com/ Lenke til kommentar
phun-ky Skrevet 30. september 2004 Forfatter Del Skrevet 30. september 2004 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
Torbjørn Skrevet 30. september 2004 Del Skrevet 30. september 2004 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
phun-ky Skrevet 30. september 2004 Forfatter Del Skrevet 30. september 2004 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");; } Lenke til kommentar
phun-ky Skrevet 30. september 2004 Forfatter Del Skrevet 30. september 2004 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
Lemkin Skrevet 30. september 2004 Del Skrevet 30. september 2004 $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
phun-ky Skrevet 1. oktober 2004 Forfatter Del Skrevet 1. oktober 2004 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.. (?) Lenke til kommentar
Torbjørn Skrevet 1. oktober 2004 Del Skrevet 1. oktober 2004 nei, da legger du til f.eks level, if($_SESSION['level']<5){ echo "her har du ikke lov til å være"; exit; } Lenke til kommentar
phun-ky Skrevet 1. oktober 2004 Forfatter Del Skrevet 1. oktober 2004 men når det gjelder handlekurv (det å huske varer som er plukket ut) det må vel anbefalt at det lagres i mysqL? Lenke til kommentar
Torbjørn Skrevet 1. oktober 2004 Del Skrevet 1. oktober 2004 så lenge han browser din webshop, kan det like gjerne ligge i $_SESSION. Lenke til kommentar
phun-ky Skrevet 1. oktober 2004 Forfatter Del Skrevet 1. oktober 2004 but how? jeg mener det er en litt rar måte, for man vet ikke hvor mange produkter brukeren handler... (antall og forskjellige).. Lenke til kommentar
Torbjørn Skrevet 1. oktober 2004 Del Skrevet 1. oktober 2004 $_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 Lenke til kommentar
phun-ky Skrevet 1. oktober 2004 Forfatter Del Skrevet 1. oktober 2004 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']; Lenke til kommentar
Torbjørn Skrevet 1. oktober 2004 Del Skrevet 1. oktober 2004 hvis du synes det er komplisert så tenk heller på at du har en array som du må legge et sted. den arrayen legger du i $_SESSION 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å