Avatar billede flim Nybegynder
13. oktober 2003 - 21:06 Der er 4 kommentarer og
1 løsning

Hvordan laves en login-funktion?

Jeg er begyndt på PHP og SQL, og jeg har nu lavet en side hvor folk kan oprette dem selv i databasen. Det virker sådan set også fint nok. Nu skal jeg bare have folk til at logge ind. Når man bliver oprettet foregår det med Navn - Email - og Kodeord, men når man logger ind skal der kun bruges Email og kodeord.

--------------------------------------
Login.htm

<HTML>
<HEAD>
    <TITLE>Login.htm</TITLE>
<META NAME="Generator" CONTENT="Stone's WebWriter 3">
</HEAD>

<BODY>

<FORM ACTION="loggetind.php" METHOD="POST">
Din E-mail:<BR>
<INPUT TYPE="text" SIZE="24" NAME="email">
<BR>
Kodeord:<BR>
<INPUT TYPE="password" SIZE="24" NAME="k1">
<P>
<INPUT TYPE="button" VALUE="Login" onClick="sendForm(this.form)">

</BODY>
</HTML>

Der bliver man sendt videre til loggetind.php som ser sådan her ud:
-------------------------------------

<?php

$resultat = mysql_query("SELECT * FROM brugere WHERE email='$email' AND k1='$k1'");

while ($raekke = mysql_fetch_array($resultat)) { ?>

Hej <? echo $raekke['navn']; ?>. Du er nu logget korrekt ind.

<? } mysql_close($conn); ?>

Nogen der kan fortælle mig hvad fejlen er?

I kan evt. selv prøve at oprette jer her: www.flim.dk/diverse/opret.htm

Og logge Jer ind her: www.flim.dk/diverse/login.htm

Mvh Bo
Avatar billede ztyxx Nybegynder
13. oktober 2003 - 21:08 #1
Avatar billede repox Seniormester
15. oktober 2003 - 12:43 #2
Prøv at kigge på din login.htm fil og ret linien

<INPUT TYPE="button" VALUE="Login" onClick="sendForm(this.form)">

til
<INPUT TYPE="submit" name="login" VALUE="Login" />
Avatar billede flim Nybegynder
15. oktober 2003 - 23:30 #3
shady...

Det virkede faktisk det du skrev :)

Nu er der så et nyt problem. Man skal holde "state" på om brugeren er logget ind eller ej. Kan man ikke skrive 2-3 liniers kode på alle efterfølgende sider, som så checker om man er logget ind?

Og idet at man logger korrekt ind kunne man vel sætte en variabel til 1 istedet for 0?

Kan man gøre det, og i så fald hvordan gøres det?

På forhånd tak.

Mvh Bo
Avatar billede Slettet bruger
18. maj 2004 - 15:55 #4
Ved brug af session kan du holde styr på om en bruger er logget ind eller ej.
Du kan lave dit login sådan her:

login.php

<?PHP

if(isset($_POST[login])) {

    $resultat = mysql_query("SELECT * FROM brugere WHERE email='$_POST[email]' AND k1='$_POST[k1]'");
    $rows = mysql_num_rows($resultat);
    if($rows > 0) {
            session_start();
            $_SESSION['sessionnr'] = session_id();
            $_SESSION['email'] = $_POST[email];
            header("Location:loggetind.php");
            exit;
    }
}

echo '
    <HTML>
      <HEAD>
        <TITLE>Login.htm</TITLE>
        <META NAME="Generator" CONTENT="Stone's WebWriter 3">
      </HEAD>
      <BODY>
        <FORM ACTION="" METHOD="POST">
          Din E-mail:<BR>
          <INPUT TYPE="text" SIZE="24" NAME="email">
          <BR>
          Kodeord:<BR>
          <INPUT TYPE="password" SIZE="24" NAME="k1"><br>
          <INPUT TYPE="submit" VALUE="Login" name="login">
        </FORM>
      </BODY>
    </HTML>
';

?>

På alle dine sider, kan du så i starten af filen bruge:

<?PHP
  session_start();
  if (!isset($_SESSION['email'], $_SESSION['sessionnr']) || $_SESSION['sessionnr'] != session_id()) {
  $_SESSION = array();
  session_destroy();
  }
 
  // hvis brgeren ikke er logget ind smider vi brugeren tilbage til index.php
  if(!isset($_SESSION['email'])) {
      header("Location: index.php");
      exit;
  } else {
      // Ellers laver vi en variabel.
      $username = $_SESSION['email'];
  }
?>

Når du så skal tjekke om en bruger er logget ind kan du gøre følgende:

<?PHP
if(isset($username)) {
    echo 'Hej brugere. Du er logget ind med følgende email: '.$username.';
}
?>
Avatar billede flim Nybegynder
03. september 2004 - 11:15 #5
Lukker...
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