21. august 2005 - 09:33
Der er
9 kommentarer og 1 løsning
Login sessions
Hej, jeg skal have lavet så når man opretter sin bruger logger den direkte ind. Desuden skal jeg også have sessions til og virke i mit loginsystem, så hvis jeg sagtens kan gå væk fra siden og så komme tilbage og stadig være logget på. [opret.php] <?php function opret() { if($_POST[submit]) { $brugernavn = $_POST['brugernavn']; $firma = $_POST['firma']; $mail = $_POST['mail']; $kodeord = md5($_POST['kodeord']); $kodeord2 = md5($_POST['kodeord2']); $ip = $GLOBALS["REMOTE_ADDR"]; $dato = time(); $query = mysql_query("SELECT id, brugernavn, kodeord FROM admins") or die(mysql_error()); while($foo = mysql_fetch_object($query)) { if(!eregi("^[a-zA-Z0-9_]{2,16}$", $brugernavn) || strtolower($foo->brugernavn) == strtolower($brugernavn)) { $brugernavn = "fejl"; } else { $brugernavn = $brugernavn; } } if($brugernavn == "fejl" || $kodeord == "fejl" || $kodeord !== $kodeord2) { echo "<h1>Der er sket en fejl!</h1>"; } else { mysql_query("INSERT INTO admins (brugernavn, kodeord, mail, firma, dato, ip) VALUES ('$brugernavn', '$kodeord', '$mail', '$firma', '$dato', '$ip')") or die(mysql_error()); // skal logges direkte ind } } } if($_GET['valg'] == "opret") { opret(); } else { // form } ?> [/opret.php] [login.php] <?php session_start(); function login() { if($_POST[submit]) { $brugernavn = $_POST['brugernavn']; $kodeord = md5($_POST['kodeord']); $result = mysql_query("SELECT brugernavn, kodeord FROM admins WHERE brugernavn = '$brugernavn' AND kodeord = '$kodeord'") or die(mysql_error()); if(mysql_num_rows($result) == 0) { $resultTest = mysql_query("SELECT brugernavn, kodeord FROM admins WHERE brugernavn = '$brugernavn'"); // Hvis brugeren ikke eksisterer. if(mysql_num_rows($resultTest) == 0) { echo "Ingen bruger eksisterer med dette brugernavn."; } else { echo "Forkert brugernavn eller password."; } // Brugeren bliver logget ind. } else { while ($row = mysql_fetch_assoc($result)) { $brugernavn = $row['brugernavn']; } $_SESSION["brugernavn"] = $brugernavn; $_SESSION["id"] = session_id(); echo "Hej ".$_SESSION['brugernavn']; } } } if($_GET['valg'] == "login") { login(); } else { // form } ?> [/login.php]
Annonceindlæg fra Lenovo
21. august 2005 - 11:52
#1
I din opret.php skal du tilføje: session_start(); i toppen. Efter brugeren er oprettet, så du så lave: $_SESSION["brugernavn"] = $brugernavn; $_SESSION["id"] = session_id();
21. august 2005 - 12:00
#2
Nu er den logget ind, ja. Hvordan retter jeg hvor længe sessionen skal leve osv.? Der mangler kun lige loginsystemet.. Det skal ændres på en måde, så den istedet spørger om ens session findes og ikke som det er nu. Men hvordan?
21. august 2005 - 12:01
#3
Kan jeg ikke få opret.php til og gå direkte til loginsystemet, og blive logget ind - så jeg kun skal rette et enkelt sted når det skal rettes?
21. august 2005 - 12:10
#4
Levetid, det kan du sætte med: Du kan rette det i php.ini - (søg på session timeout) Du kan evt også ændre det med denne kode direkte i dit script: session_set_cookie_params() Om en bruger er logget ind, kan du tjekke på: if(isset($_SESSION['brugernavn'])) Du kan lave en funktion som hedder: login_ok($brugernavn) Og den sætter så $_SESSION['brugernavn'] = $brugernavn og sender brugeren til f.eks. forsiden.
21. august 2005 - 12:11
#5
Gider du indsætte det i koden? og læg også lige et svar.
21. august 2005 - 12:23
#6
[opret.php] <?php session_start(); if($_GET['valg'] == "opret") { opret(); } else { // form } ?> [/opret.php] [login.php] <?php session_start(); if($_GET['valg'] == "login") { login(); } else { // form } ?> [/login.php] [funktion.php] function loginOK($brugernavn) { $_SESSION["brugernavn"] = $brugernavn; $_SESSION["id"] = session_id(); } function login() { if($_POST[submit]) { $brugernavn = $_POST['brugernavn']; $kodeord = md5($_POST['kodeord']); $result = mysql_query("SELECT brugernavn, kodeord FROM admins WHERE brugernavn = '$brugernavn' AND kodeord = '$kodeord'") or die(mysql_error()); if(mysql_num_rows($result) == 0) { $resultTest = mysql_query("SELECT brugernavn, kodeord FROM admins WHERE brugernavn = '$brugernavn'"); // Hvis brugeren ikke eksisterer. if(mysql_num_rows($resultTest) == 0) { echo "Ingen bruger eksisterer med dette brugernavn."; } else { echo "Forkert brugernavn eller password."; } // Brugeren bliver logget ind. } else { while ($row = mysql_fetch_assoc($result)) { $brugernavn = $row['brugernavn']; } loginOK($brugernavn); echo "Hej ".$_SESSION['brugernavn']; } } } function opret() { if($_POST[submit]) { $brugernavn = $_POST['brugernavn']; $firma = $_POST['firma']; $mail = $_POST['mail']; $kodeord = md5($_POST['kodeord']); $kodeord2 = md5($_POST['kodeord2']); $ip = $GLOBALS["REMOTE_ADDR"]; $dato = time(); $query = mysql_query("SELECT id, brugernavn, kodeord FROM admins") or die(mysql_error()); while($foo = mysql_fetch_object($query)) { if(!eregi("^[a-zA-Z0-9_]{2,16}$", $brugernavn) || strtolower($foo->brugernavn) == strtolower($brugernavn)) { $brugernavn = "fejl"; } } if($brugernavn == "fejl" || $kodeord == "fejl" || $kodeord !== $kodeord2) { echo "<h1>Der er sket en fejl!</h1>"; } else { mysql_query("INSERT INTO admins (brugernavn, kodeord, mail, firma, dato, ip) VALUES ('$brugernavn', '$kodeord', '$mail', '$firma', '$dato', '$ip')") or die(mysql_error()); // skal logges direkte ind loginOK($brugernavn); header("LOCATION: index.php"); } } } [/funktion.php]
21. august 2005 - 12:50
#7
og så skal der stå: <?php session_start(); echo "Hej ".$_SESSION["brugernavn"]; ?> i index.php? Hvordan spørger man om session indeholder noget? altså om man er logget ind?
21. august 2005 - 12:51
#8
F.eks.: session_start(); if(isset($_SESSION['brugernavn']))
21. august 2005 - 12:53
#9
Selvom jeg lukker vinduet, ryger jeg ikke ud. Lukker en session ikke altid når man lukker vinduet? :S
21. august 2005 - 12:56
#10
Altså hvis du lukke browseren, så forsvinder session'en. Men hvis du bare går til nyt vindue, så nej.
Vi tilbyder markedets bedste kurser inden for webudvikling