Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

PHP autologin

Af Monsterbruger ReneDK | 23-10-2005 14:47 | 1706 visninger | 20 svar, hop til seneste
Hej Nu har jeg bøvlet og læst og læst, men det kan bare ikke virke for mig... nogen der kan hjælpe evt. en lille vejledning? Hilsen ReneDK
--
Asus A8V Deluxe m. Athlon 64 3500+ cpu, 2x512 Samsung pc3200, POV 6800 GT, Seagate 120 GB sata,16x NEC DVD-burner, 52x liteon CD-burner, 400w PSU,midi tower, AOC HT731
#1
Synk
Mega Supporter
23-10-2005 14:56

Rapporter til Admin
Går ud fra du har lavet et login system? Så skal du bare have gemt login oplysningerne i en cookie :-). Så kan du bare hente dem ud, først chekke om autologin er sat til true, hvis det er, tjekke om password og login er korrekt, og herefter bare sætte login status til true, :-) Tjek her for en lille introduktion til cookies. http://www.razor.dk[...]
--
Hvorfor gik kyllingen over vejen? Fordi den var gul...
#2
ReneDK
Monsterbruger
23-10-2005 15:13

Rapporter til Admin
Har prøvet med den manual er stadig bare helt lost... kan sQ ikke få det til at virke... :(
--
Asus A8V Deluxe m. Athlon 64 3500+ cpu, 2x512 Samsung pc3200, POV 6800 GT, Seagate 120 GB sata,16x NEC DVD-burner, 52x liteon CD-burner, 400w PSU,midi tower, AOC HT731
#3
Synk
Mega Supporter
23-10-2005 16:08

Rapporter til Admin
Har lige skrevet et hurtigt eksempel, har ikke testet det, men det burde fungere. *Håber på at hol.dk ikke fjerne nogle af mine tegn* :) // Hvis ingen cookie er sat, eller autologin er til false, sættes loginstatus til false if(!isset($_COOKIE['autologin') || $_COOKIE['autologin' == "false") { $loginstatus = false } // Hvis autologin er true else { // Henter brugernavn og password fra cookie $bruger = $_COOKIE['bruger']; $password = $_COOKIE['password']; // Henter oplysninger ud fra database $query = "SELECT * FROM login WHERE bruger='$bruger' AND pass='$password'"; $result = mysql_query($query) or die("Fejl! $query.".mysql_error()); // Hvis der blev fundet data der matchede bruger og pass sættes login status til ture if(mysql_num_rows(result) > 0) { $loginstatus = true; } // Hvis der af en eller anden grund ikkeblev fundet noget else { echo "Der opstod en fejl under autologin"; }
--
Hvorfor gik kyllingen over vejen? Fordi den var gul...
#4
kastermester
Junior Supporter
23-10-2005 16:22

Rapporter til Admin
#3 List kringlet løsning efter mit hoved det der, synes jeg nu, jeg pleger at gøre noget alla det her: <?php function checklogin($array){ //Hvis brugeren kommer fra login form, check om checkboxen med name=autologin har dens value sat til ja = checket. hvis din checkbox har en anden value erstat da ja med den value, hvis brugeren kommer fra _COOKIE altså har en cookie liggende, vil det sige at brugeren er sat på autologin. if(($array == "_POST" && $_POST["autologin"] == "ja") || $array == "_COOKIE"){ $autologin = true; } else { $autologin = false; } //check for login på din måde if($login == true && $autologin == true){ //er brugeren logget ind og er autologin sat til sæt da cookies $data = $$array; setcookie("username", $data["username"], 60*60*24*365); //cookien skal holde i 1 år setcookie("password", $data["password"], 60*60*24*365); } return $login; } if(isset($_POST["username"]) && isset($_POST["password"])){ checklogin("_POST"); } elseif(isset($_SESSION["username"]) && isset($_SESSION["password"])){ checklogin("_SESSION"); } elseif(isset($_COOKIE["username"]) && isset($_COOKIE["password"])){ checklogin("_COOKIE"); } en evt. logud funktion kunne så se sådan ud: function logout(){ unset($_SESSION["username"], $_SESSION["password"]); //brug denne metode hvis du gemmer andre ting i sessionen som ikke skal gemmes eller så brug session_destroy(); setcookie("username", "empty holy nothing", -(60*60*24*365)); //ok, vi ødelægger cookien på 2 måder, vi ændrer indholdet og vi sætter den til at expire for et år siden, så hvis den ikke bliver slettet af det (hvilket den SKAL) så indeholder den noget forkert og man bliver derfor ikke logget ind alligevel setcookie("password", "empty holy nothing", -(60*60*24*365)); return true; } Og husk selvfølgelig at have session_start(); øverst på ALLE dine sider!
--
Kaare
#5
kastermester
Junior Supporter
23-10-2005 16:24

Rapporter til Admin
#3 Og lige igen, faktisk var det jeg syntes var lidt kringlet at du havde gemt en variabel kaldet autologin i en cookie, da det efter mit hoved giver sig selv at hvis der ligger brugernavn og kodeord i en cookie, jamen så er det fordi der er autologin på! Men nu gik det lidt over gevind og jeg kom med en mere eller mindre komplet løsning på et brugersystem :P, men så simpelt som ovenover kan det gøres, dog mangler der lige lidt database, fil eller hvordan man nu vil gøre det, check på brugernavn og kodeord.
--
Kaare
#6
kastermester
Junior Supporter
23-10-2005 16:34

Rapporter til Admin
Nå lige lidt flere tilføjelser. setcookie functionen har fået forkert time paramenter i begge mine eksempler, for at sætte cookien skulle den se sådan ud: time()+60*60*24*365 og for at slette: time()-60*60*24*365 Derudover så, så vidt som jeg kan se på PHP net, så virker det ikke særligt godt med at slette _SESSIONs på den måde jeg gjorde, men vidst nærmere noget alla det her: session_unregister("username"); session_unregister("password"); unset($_SESSION["username"], $_SESSION["password); så bliver de vidst slettet ordenligt. Derudover så pleger jeg at have en side der bliver redirectet til der hedder logout som ser nogenlunde sådan ud: <?php logout(); if(isset($_GET["done"])){ header("location: /index.php"); } else { header("location: " . $_SERVER["PHP_SELF"] . ?done=true"); } ?> Og jeg redirecter til logout siden 1 gang mere fordi jeg har oplevet at man ikke altid er logget ud første gang efter at man trykker logout men derimod ved næste side man requester, og det bliver løst sådan der. Nu skulle der vidst ikke være nogen grund til at føle at man ikke længere kan lave sit eget brugersystem! :D
--
Kaare
#7
kastermester
Junior Supporter
23-10-2005 17:08

Rapporter til Admin
Haha typisk, når man endelig sætter sig ned og skriver kæmpe lange poster og koder for folk, så er der ingen der ser det ( eller i hvert fald ingen der har svaret) :/
--
Kaare
#8
ReneDK
Monsterbruger
23-10-2005 17:12

Rapporter til Admin
takker indtil videre nu har jeg lige noget at arbejde videre med :) på forhånd tak...!
--
Asus A8V Deluxe m. Athlon 64 3500+ cpu, 2x512 Samsung pc3200, POV 6800 GT, Seagate 120 GB sata,16x NEC DVD-burner, 52x liteon CD-burner, 400w PSU,midi tower, AOC HT731
#9
PeeCee
Super Supporter
23-10-2005 17:14

Rapporter til Admin
#7 Umiddelbart ser din løsning fin ud - har ikke lige testet lortet, men kom til at tænke på om det ikke er lige lovligt det du foreslår.. det gælder forøvrigt også for #3. Jeg ville for eksempel klart foretrække at lave en md5(); kryptering på både brugernavn og password, for at sikre at man ikke bare lige sådan kan hive skidtet ud af en cookie.. det er så bare mig :). Bortset lige fra det ser det ok ud, synes jeg.
--
http://www.peecee.dk[...]
#10
PeeCee
Super Supporter
23-10-2005 17:15

Rapporter til Admin
i #9 skulle der stå "lige lovligt usikkert" .. det andet giver ikke så meget mening, beklager :)
--
http://www.peecee.dk[...]
#11
Synk
Mega Supporter
23-10-2005 17:34

Rapporter til Admin
#4 Heh, det må være smag og behag :-). Jeg laver autologin variablen fordi at nogle brugere måske gerne ville have gemt f.eks. brugernavn automatisk, sådan at det felt blev udfyldt af sig selv men ikke passworded ;-) #9 I know, glemte det bare lige i farten :-).
--
Hvorfor gik kyllingen over vejen? Fordi den var gul...
#12
Synk
Giga Supporter
23-10-2005 17:35

Rapporter til Admin
#11 Der skulle stå: Fordi nogle brugere muligvis gerne vil have udfyldt brugernavn feltet af sig selv *Ville gerne have en edit funktion :-)*
--
Hvorfor gik kyllingen over vejen? Fordi den var gul...
#13
kastermester
Junior Supporter
23-10-2005 20:02

Rapporter til Admin
#9 Helt korrekt det du foreslår der, selvfølgelig der skal md5 på, men det glemte jeg også lige i farten må jeg indrømme, men jo, ALTID md5 på det du kommer i session og cookies, evt. både på brugernavn og kodeord (selvom jeg nu kun pleger at gøre det på kodeordet, men det skader jo ikke?). Så jo, helt klart, md5 skal bruges :).
--
Kaare
#14
ReneDK
Monsterbruger
23-10-2005 22:00

Rapporter til Admin
Nu har jeg prøvet i flere timer! det duer bare ikke!! nogen der evt. vil hjælpe med at sætte det ind i min kode... har lagt hele login.php ind så i kan se.. Er nok lidt rodet, men er os stadig noob på området.. :) På forhånd tak.! Hilsen ReneDK <style type="text/css"> <!-- a:link { text-decoration: none; color: #808080; } a:visited { text-decoration: none; color: #808080; } a:hover { text-decoration: underline; color: #FF9900; } a:active { text-decoration: none; color: #808080; </style> <?php ob_start(); //Hender header.php require("top.php"); echo "<center>"; //skriver login form ud ?> <form method=post action=login.php?action=check> <div align="center"> <table> <tr><td> <font size=1 face=verdana color=808080>Brugernavn:</font></td><td> <input type="text" class="but" name="Uname" style="color: #FF9900; font-size: 8pt; font-family: Verdana" size="17"></td></tr><tr><td> <font size=1 face=verdana color=808080>Password:</font></td><td> <input type="text" class="but" name="Pword" style="color: #FF9900; font-size: 8pt; font-family: Verdana" size="17"></td></tr><tr><td> <font face="Verdana" size="1" color="#808080">Auto-Login:</font></td><td> <input type=checkbox name=al value=yes checked></td></tr> <tr> <td><tr><td> </td><td> <input type="submit" class="button" value="login" name="send" style="font-family: Verdana; font-size: 8pt"></td></tr> &nbsp;</td> </tr> <tr><td> <a href=forgotpassword.php><font size=1 face=verdana>Glemt password</font></a> </td><td> <font size=2 face=verdana>| <a href=register.php><font size=1 face=verdana>Registrer</font></td></tr> </table> <table border="0" width="408" height="73"> <tr> <td height="73" width="402" valign="top"> <p align="center"><b><font face="Verdana" size="2" color="#FF9900"> login system</font></b><br> <font color="#808080" face="Verdana" size="2">Du har nu mulighed for at tilføje dine egne favoritlinks via login sektionen. .- Det smarte ved at tilføje sine links kan fx. være at, når du sidder ved en fremmed computer så, har du stadig dine favoritlinks bare ved at logge ind. </font></tr> </table> </form> <center> <FORM method="GET" action=" http://www.google.com[...] target="_blank"> <font face="Verdana" size="2" color="#999999"> <A HREF=" http://www.google.dk[...] target="_blank" style="text-decoration: none; color: #808080"> <IMG SRC=" http://www.google.com[...] border="0" ALT="Google" align="absmiddle" target="_blank"></A></font><INPUT TYPE=text name=q size=20 maxlength=255> <INPUT type=submit name=btnG VALUE="Google søg"></td></tr></TABLE></FORM></div> <?php //chekker input if($_GET['action'] == 'check') { //find brugeren $result = mysql_query("SELECT * FROM easystart_brugere WHERE Uname='{$_POST['Uname']}'") or die(mysql_error()); $row = mysql_fetch_array( $result ); if($row['Uname'] == "") { echo error(); } else { //$enc = md5($_POST['Pword']); $enc = $_POST['Pword']; if($row['Pword'] == $enc) { $_SESSION['Uname'] = $_POST['Uname']; $_SESSION['lp'] = 'pl'; header("Location: main.php"); exit; } else { echo error(); } } } if($_GET['action'] == 'registered') { echo "<font size=1 face=verdana color=ff9900>Du er nu registreret!"; } function error() { echo "<font size=1 face=verdana color=ff9900>Dit brugernavn/password er forkert!"; } ?>
--
Asus A8V Deluxe m. Athlon 64 3500+ cpu, 2x512 Samsung pc3200, POV 6800 GT, Seagate 120 GB sata,16x NEC DVD-burner, 52x liteon CD-burner, 400w PSU,midi tower, AOC HT731
#15
Lasse
HOL Administrator
23-10-2005 22:20

Rapporter til Admin
Du mangler det session_start() som kastermester skrev.
--
Admin @ HardwareOnline.dk Behandl andre som du vil behandles selv Tænk (og læs) før du poster: http://www.hol.dk[...]
#16
SkipperBent
Elitebruger
23-10-2005 23:31

Rapporter til Admin
#0 For at lave autologin skal du bruge cookies eller sessions. Du kan lære meget om cookies i denne artikel: http://www.enetonline.dk[...] og finde mere hjælp omhandlende php i denne kategori: http://www.enetonline.dk[...] med venlig hilsen Simon
--
så nemt at du ikke behøver pc-kørekort HTTP://WWW.ENETONLINE.DK[...] NYHED: Trailer Search- søg på trailers: HTTP://WWW.ENETONLINE.DK[...]
#17
ReneDK
Monsterbruger
25-10-2005 18:11

Rapporter til Admin
Hej igen... hvad dælen er fejlen i det har.... :) ? <?php session_start(); ob_start(); //hent header.php require("top.php"); echo "<center>"; // sæt cookien setcookie("Uname", "Uname"); setcookie("Pword", "Pword"); // sæt udløbsdatoen til en time før setcookie("Uname", $Uname, time()+3600); /* udløber en time efter */ setcookie("Uname", $Uname, time()+3600, "/~renedk/", ".renedk.dk", 1); setcookie("Pword", $Pword, time()+3600); /* udløber en time efter */ setcookie("Pword", $Pword, time()+3600, "/~renedk/", ".renedk.dk", 1); // Hvis ingen cookie er sat, eller autologin er til false, sættes loginstatus til false if(!isset($_COOKIE['Uname') || $_COOKIE['Pword' == "false") { $loginstatus = false } // Hvis autologin er true else { // Henter brugernavn og password fra cookie $Uname = $_COOKIE['Uname']; $Pword = $_COOKIE['Pword']; // Henter oplysninger ud fra database $query = "SELECT * FROM easystart_brugere WHERE Uname='$Uname' AND Pword='$Pword'"; $result = mysql_query($query) or die("Fejl! $query.".mysql_error()); // Hvis der blev fundet data der matchede bruger og pass sættes login status til ture if(mysql_num_rows(result) > 0) { $loginstatus = true; } // Hvis der af en eller anden grund ikke blev fundet noget else { echo "Der opstod en fejl under autologin"; } //check input if($_GET['action'] == 'check') { //find bruger $result = mysql_query("SELECT * FROM easystart_brugere WHERE Uname='{$_POST['Uname']}'") or die(mysql_error()); $row = mysql_fetch_array( $result ); if($row['Uname'] == "") { echo error(); } else { //$enc = md5($_POST['Pword']); $enc = $_POST['Pword']; if($row['Pword'] == $enc) { $_SESSION['Uname'] = $_POST['Uname']; $_SESSION['lp'] = 'pl'; header("Location: main.php"); exit; } else { echo error(); } } } if($_GET['action'] == 'registered') { echo "<font size=1 face=verdana color=ff9900>Du er nu registreret!"; } function error() { echo "<font size=1 face=verdana color=ff9900>Dit brugernavn/password er forkert!"; } ?> <style type="text/css"> <!-- a:link { text-decoration: none; color: #808080; } a:visited { text-decoration: none; color: #808080; } a:hover { text-decoration: underline; color: #FF9900; } a:active { text-decoration: none; color: #808080; </style> <form method=post action=login.php?action=check> <table> <tr><td> <font size=1 face=verdana color=808080>Brugernavn:</font></td><td> <input type="text" class="but" name="Uname" style="color: #FF9900; font-size: 8pt; font-family: Verdana" size="17"></td></tr><tr><td> <font size=1 face=verdana color=808080>Password:</font></td><td> <input type="text" class="but" name="Pword" style="color: #FF9900; font-size: 8pt; font-family: Verdana" size="17"></td></tr><tr><td> <font face="Verdana" size="1" color="#808080">Auto-Login:</font></td><td> <input type=checkbox name=autologin checked></td></tr> <tr> <td><tr><td> </td><td> <input type="submit" class="button" value="login" name="send" style="font-family: Verdana; font-size: 8pt"></td></tr> &nbsp;</td> </tr> <tr><td> <a href=forgotpassword.php><font size=1 face=verdana>Glemt password</font></a></td><td> <font size=2 face=verdana>| <a href=register.php><font size=1 face=verdana>Registrer</font></td></tr> </table> <table border="0" width="408" height="73"> <tr> <td height="73" width="402" valign="top"> <p align="center"><b><font face="Verdana" size="2" color="#FF9900"> Velkommen til login system</font></b><br> <font color="#808080" face="Verdana" size="2">Du har nu mulighed for at tilføje dine egne favoritlinks via login sektionen. .- Det smarte ved at tilføje sine links kan fx. være at, når du sidder ved en fremmed computer så, har du stadig dine favoritlinks bare ved at logge ind. </font></tr> </table> </form> <center> <FORM method="GET" action=" http://www.google.com[...] target="_blank"> <font face="Verdana" size="2" color="#999999"> <A HREF=" http://www.google.dk[...] target="_blank" style="text-decoration: none; color: #808080"> <IMG SRC=" http://www.google.com[...] border="0" ALT="Google" align="absmiddle" target="_blank"></A></font><INPUT TYPE=text name=q size=20 maxlength=255> <INPUT type=submit name=btnG VALUE="Google søg"></td></tr></TABLE></FORM> </div>
--
Asus A8V Deluxe m. Athlon 64 3500+ cpu, 2x512 Samsung pc3200, POV 6800 GT, Seagate 120 GB sata,16x NEC DVD-burner, 52x liteon CD-burner, 400w PSU,midi tower, AOC HT731
#18
kastermester
Junior Supporter
25-10-2005 18:18

Rapporter til Admin
#17 mht. til syntaks lagde jeg mærke til at du har en if sætning: if(!isset($_COOKIE['Uname') || $_COOKIE['Pword' == "false") den skal hedde: if(!isset($_COOKIE['Uname']) || $_COOKIE['Pword'] == "false") derudover så kan jeg ikke finde hoved eller hale i din kode, dine kommentarer hænger ikke sammen med det som koden gør. Synes evt. du bør kigge på mit eksempel igen.
--
Kaare
#19
ReneDK
Monsterbruger
25-10-2005 18:23

Rapporter til Admin
#18 Er som sagt nyt på området så det roder nok lidt ja... har os tilføjet og slettet osv.. :) Ville os godt kigge på dit men sys bare det ser alt for svært ud..... men self hvis du er frisk på at hjælpe..? Må siges du er skrap til det skidt!! :) Hilsen ReneDK
--
Asus A8V Deluxe m. Athlon 64 3500+ cpu, 2x512 Samsung pc3200, POV 6800 GT, Seagate 120 GB sata,16x NEC DVD-burner, 52x liteon CD-burner, 400w PSU,midi tower, AOC HT731
#20
kastermester
Junior Supporter
25-10-2005 21:51

Rapporter til Admin
#19 Ville gerne hjælpe dig mere, men jeg er desværre rimelig optaget for tiden, men prøv at se om du kan få fat i nogle af de andre der har svaret i denne tråd, er sikker på at de har mindst lige så meget styr på det som mig! Og bare bliv ved, så skal det nok komme :).
--
Kaare

Opret svar til indlægget: PHP autologin

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning