Denne tråd er over 6 måneder gammel
Er du sikker på, at du har noget relevant at tilføje?
PHP autologinAf 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
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... 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
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... #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 #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 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 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 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
#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[...] #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... #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... #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 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>
</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
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[...] 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>
</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
#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 #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
#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
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
|
Du skal være logget ind for at tilmelde dig nyhedsbrev.
Hvilken udbyder har du til internet? 256 personer har stemt - Mit energiselskab (Ewii f.eks) 12%
|