Avatar billede LilleUdvikler Nybegynder
12. maj 2011 - 13:42 Der er 11 kommentarer og
1 løsning

Login system

Hej eksperter.

Jeg har et par indlæg her på siden med et login system, som jeg er ved at lave. Og nogle gange støder man jo ind i problemer - håber ikke folk tager mine spørgsmål som spam.

Jeg kunne godt tænke mig, at når man loggede ind, så stod der fx: Velkommen tilbage, LilleUdvikler.

Ligesom der her på Eksperten.dk står "Velkommen LilleUdvikler".

Jeg har prøvet nogle forskellige ting og sager, men det er ikke helt lykkedes mig, overhovedet ikke faktisk.

Jeg har en idé om, at det er rimelig nemt, men jeg ved bare ikke lige hvordan.
Avatar billede claes57 Ekspert
12. maj 2011 - 14:04 #1
når der logges på gemmer du vel id i en $sessionid - gem samtidig brugernavn i en $sessionnavn.
Hvis $sessionnavn findes, så skal php bare skrive 'velkommen tilbage ' + navn - hvis det ikke findes så skrives ingenting (evt klik her for at logge på)
Avatar billede LilleUdvikler Nybegynder
12. maj 2011 - 14:10 #2
Altså, jeg ved ikke om det er det du mener. Men jeg har i min mySQL en id på alle medlemmere. Er det det du mener. Eller er det noget helt andet ,som jeg måske skal have tilføjet? :o)

Jeg er grøn på PHP må du forstå :)
Avatar billede Authiel Nybegynder
12. maj 2011 - 14:27 #3
Når du logger ind så sammenligner du vel det som folk skriver i brugernavn og password feltet med det der står i din database. Hvis det matcher så bliver de logget ind.

Mit forslag vil være lige som det claes skriver, at hvis det lykkedes for en person at logge ind så gem deres brugerID og deres brugernavn i en $_SESSION, hvorfra du så kan referere til den i din tekst.

Altså noget i den her retning:

if(!$_SESSION[username])
{
    echo 'Klik her for at logge ind';
}
else {
    $navn = $_SESSION[username];
    echo 'Velkommen tilbage ' + $navn;
}
Avatar billede LilleUdvikler Nybegynder
12. maj 2011 - 14:29 #4
Jeg har deres login i en SESSION som er loggedIn.. Kan jeg bruge den, eller skal der seperat være en for brugernavn? :-)
Avatar billede Authiel Nybegynder
12. maj 2011 - 14:33 #5
Det kommer jo an på hvad den session indeholder... Er det deres ID, deres brugernavn eller er det bare en ja/nej??
Avatar billede LilleUdvikler Nybegynder
12. maj 2011 - 14:41 #6
du kan lige få noget kode her:

checklogin.php

<?php

session_start();

include('connect_login.php');

$brugernavn= mysql_real_escape_string($_POST['brugernavn']); // mysql_real_escape_string er som regel fint, når du ikke skal indsætte i databasen, men blot hente
$password= md5($_POST['password']); // ingen grund til at 'rense' en MD5 hashet streng, da strengen alligevel ikke kommer til at indeholde noget snavs

$sql= "SELECT * FROM $tbl_name WHERE brugernavn='$brugernavn' and password='$password'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);
if($count==1)
{
    $_SESSION['loggedIn'] = true;
    header("Location: /pressrest/index.php");
}
else
{
    echo "Der er sket en fejl. <br>
          <a href='#'>Har du glemt din adgangskode?</a> <br>
          <a href='login/opret.php'>Eller er du endnu ikke oprettet som bruger?</a>";
    include("main_login.php");
}

?>

og loggedin.php


<?php
session_start();
if(!isset($_SESSION['loggedIn']))
{
  header("Location: /pressrest/index.php");
  exit;
}
?>

Velkommen tilbage,
<p>Du har nu følgende muligheder:</p>
<table>
    <tr>
        <td><a href="#">Skriv en artikel</a></td>
    </tr>
    <tr>
        <td><a href="login/logout.php">Log ud</a></td>
    </tr>
</table>
Avatar billede Authiel Nybegynder
12. maj 2011 - 14:51 #7
Oppe hvor at du sætter "$_SESSION['loggedIn']" ville jeg lave en anden session der hedder "$_SESSION['username'] = $brugernavn;"

I stedet for "Velkommen tilbage," ville jeg indsætte følgende på samme linie:

<?php
    $brugernavn = $_SESSION['username'];
    echo 'Velkommen tilbage, ' + $brugernavn;
?>
Avatar billede claes57 Ekspert
12. maj 2011 - 14:52 #8
tilføj en linje (fremhævet)
$count=mysql_num_rows($result);
if($count==1)
{
    $_SESSION['loggedIn'] = true;
    $_SESSION['bruger'] = $brugernavn;
    header("Location: /pressrest/index.php");
}

og senere ret fra
?>

Velkommen tilbage,
<p>Du har nu følgende muligheder:</p>

til

echo 'Velkommen tilbage, ' + $_SESSION[bruger];
?>
<p>Du har nu følgende muligheder:</p>
Avatar billede LilleUdvikler Nybegynder
12. maj 2011 - 17:40 #9
Hej igen.

Jeg har prøvet det du har foreslået Claes.

Så er resultatet bare at den siger: 0
Avatar billede LilleUdvikler Nybegynder
12. maj 2011 - 17:41 #10
Jeg har løst det nu :o)

Det for hjælpen begge to, kan i ikke smide et svar hver? :-)
Avatar billede Authiel Nybegynder
13. maj 2011 - 11:24 #11
Har du afprøvet min? :) ret sikker på at den virker, der er måske lidt mere kode end i den claes har lavet, men det er den jeg bruger selv og det virker for mig :P

Må vi evt. se hvad du har lavet for at det virker?
Avatar billede LilleUdvikler Nybegynder
13. maj 2011 - 16:24 #12
Jeg har faktisk bare lavet det, som claes sagde :)

<?php

session_start();

include('connect_login.php');

$brugernavn= mysql_real_escape_string($_POST['brugernavn']); // mysql_real_escape_string er som regel fint, når du ikke skal indsætte i databasen, men blot hente
$password= md5($_POST['password']); // ingen grund til at 'rense' en MD5 hashet streng, da strengen alligevel ikke kommer til at indeholde noget snavs

$sql= "SELECT * FROM $tbl_name WHERE brugernavn='$brugernavn' and password='$password'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);
if($count==1)
{
    $_SESSION['loggedIn'] = true;
    $_SESSION['brugerID'] = $brugernavn;
    header("Location: /pressrest/index.php");
}
else
{
    echo "Der er sket en fejl. <br>
          <a href='#'>Har du glemt din adgangskode?</a> <br>
          <a href='login/opret.php'>Eller er du endnu ikke oprettet som bruger?</a>";
    include("main_login.php");
}

?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester