/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hvordan lave login box i php der tjekker..~
Fra : Morten Jørgensen


Dato : 23-11-01 07:17

Hvordan kan jeg lave en login system at der tjekker om en given bruger
findes i en mysql database?
Jeg har prøvet at spørge på eksperten.dk op til flere gange, men jeg bliver
ved med at få tilsendt en kode fra dem som ikke virker. Så nu har jeg
droppet eksperten.dk

M.v.h Morten Jørgensen
Webmaster og Redaktør på:
http://hairboy.adsl.dk/starwayonline



 
 
Brian Jørgensen (23-11-2001)
Kommentar
Fra : Brian Jørgensen


Dato : 23-11-01 07:33

"Morten Jørgensen" <tbd@mailme.dk> wrote:

> Hvordan kan jeg lave en login system at der tjekker om en given bruger
> findes i en mysql database?
> Jeg har prøvet at spørge på eksperten.dk op til flere gange, men jeg
bliver
> ved med at få tilsendt en kode fra dem som ikke virker. Så nu har jeg
> droppet eksperten.dk

Følgende eksempel er lavet uden at teste det, men det burde virke.
Når du opretter brugeren i din database så skal du huske at krypterere
kodeordet med: $kodeord = md5($kodeord); før du gemmer den i
databasen.

/*** Login form eksempel: login.html ***/
<html>
<body>

<form action="login.php" method="post">

Brugernavn: <input type="text" name="bruger"><br>
Kodeord: <input type="password" name="kodeord"><br>
<input type="submit" value="Login">

</form>

</body>
</html>

/*** Kode eksempel: login.php ***/
session_start();

// Krypter det indtastede kodeord
$md5Kode = md5($kodeord);

// Check om brugeren findes i databasen med det indtastede kodeord
if (@bruger && @kodeord) {
@mysql_connect(localhost, root);
$result = @mysql_db_query("www","SELECT brugernavn FROM brugere WHERE
brugernavn='$bruger' AND kodeord='$md5Kode' AND valid='yes'")
or die( mysql_error() );
if(@mysql_num_rows($result) != 0) {
$verified_user = $bruger;
session_register("verified_user");
}
}

// Brugeren er logget ind
header("Location: ".$HTTP_REFERER);
exit;

?>




Brian Jørgensen (23-11-2001)
Kommentar
Fra : Brian Jørgensen


Dato : 23-11-01 07:47

Jeg glemte lige at sige at på de sider du så ønsker at beskytte
skal du indæstte følgende par linier øverst på siden
(eventuelt med en include ).

/*** kode ***/

<?php if (!session_is_registered("verified_user")) {
Header("Location: login.html");
exit; }
?>

Hvis brugeren så ikke er logget ind bliver han sendt videre
til login siden.

--
MVH / Best regards
Brian Jørgensen
qte@mail.dk



Morten Jørgensen (23-11-2001)
Kommentar
Fra : Morten Jørgensen


Dato : 23-11-01 14:06

"Brian Jørgensen" <qte@mail.dk> wrote in message
> /*** Kode eksempel: login.php ***/
> session_start();
>
> // Krypter det indtastede kodeord
> $md5Kode = md5($kodeord);
>
> // Check om brugeren findes i databasen med det indtastede kodeord
> if (@bruger && @kodeord) {
> @mysql_connect(localhost, root);
> $result = @mysql_db_query("www","SELECT brugernavn FROM brugere WHERE
> brugernavn='$bruger' AND kodeord='$md5Kode' AND valid='yes'")
> or die( mysql_error() );
> if(@mysql_num_rows($result) != 0) {
> $verified_user = $bruger;
> session_register("verified_user");
> }
> }
>
> // Brugeren er logget ind
> header("Location: ".$HTTP_REFERER);
> exit;
>
> ?>


I er godt nok alle sammen gode.
Nu har jeg så dette:

<?

session_start();

// Krypter det indtastede kodeord
$md5Kode = md5($kodeord);

// Check om brugeren findes i databasen med det indtastede kodeord
if ($bruger && $kodeord) {
mysql_connect("localhost", "", "");
$result = $mysql_db_query("starwayonline", "SELECT uid FROM kalender WHERE
uid='$bruger' AND pass='$md5Kode' AND valid='yes'")
or die( mysql_error() );
if($mysql_num_rows($result) != 0) {
$verified_user = $bruger;
session_register("verified_user");
}
}

// Brugeren er logget ind
header("Location: ".$HTTP_REFERER);
exit;

?>

Men når jeg skriver noget ind i den boks fra den anden kode, så kommer dette
bare:


Warning: open(/tmp\sess_0e4dfbba2c80f70909a412697679aad2, O_RDWR) failed: m
(2) in d:\program files\foxserv\www\login.php on line 3

Fatal error: Call to undefined function: () in d:\program
files\foxserv\www\login.php on line 11

Jeg er godt nok ved at være rimelig træt af alt det her.
Når man spørger om noget, så får man en utestet kode.
Så tilpasser man den så lige ens egen database og så er der bare noget galt
igen, som ingen kan rette.

M.v.h Morten Jørgensen
Webmaster og Redaktør på:
http://hairboy.adsl.dk/starwayonline



Hroi Sigurdsson (23-11-2001)
Kommentar
Fra : Hroi Sigurdsson


Dato : 23-11-01 16:53

"Morten Jørgensen" wrote:

> <?
>
> session_start();
>
> // Krypter det indtastede kodeord
> $md5Kode = md5($kodeord);
>
> // Check om brugeren findes i databasen med det indtastede kodeord
> if ($bruger && $kodeord) {
> mysql_connect("localhost", "", "");

Her skal lige indsættes bruger + password hvis du er til den slags.

> $result = $mysql_db_query("starwayonline", "SELECT uid FROM kalender WHERE

Her skal stå
$result = mysql_db_query(...

(uden $ ved funktionskald)

> uid='$bruger' AND pass='$md5Kode' AND valid='yes'")
> or die( mysql_error() );
> if($mysql_num_rows($result) != 0) {
> $verified_user = $bruger;
> session_register("verified_user");
> }
> }
>
> // Brugeren er logget ind
> header("Location: ".$HTTP_REFERER);
> exit;
>
> ?>
>
> Men når jeg skriver noget ind i den boks fra den anden kode, så kommer dette
> bare:
>
> Warning: open(/tmp\sess_0e4dfbba2c80f70909a412697679aad2, O_RDWR) failed: m
> (2) in d:\program files\foxserv\www\login.php on line 3

Din php.ini er sat forkert op. Du skal angive et sted hvor sessionsdata
kan gemmes på filsystemet. Ovenstående (/tmp) er kun passende på unix.

> Fatal error: Call to undefined function: () in d:\program
> files\foxserv\www\login.php on line 11

Skyldes $ ved funktionskaldet ovenfor.

--
Hroi Sigurdsson hroi@netgroup.dk
Netgroup Datacenter http://www.ngdc.dk

Morten Jørgensen (23-11-2001)
Kommentar
Fra : Morten Jørgensen


Dato : 23-11-01 19:20

"Hroi Sigurdsson" <hroi@netgroup.dk> wrote in message
> > Warning: open(/tmp\sess_0e4dfbba2c80f70909a412697679aad2, O_RDWR)
failed: m
> > (2) in d:\program files\foxserv\www\login.php on line 3
>
> Din php.ini er sat forkert op. Du skal angive et sted hvor sessionsdata
> kan gemmes på filsystemet. Ovenstående (/tmp) er kun passende på unix.

Hvad fanden er det for noget?
Hvordan retter jeg den fejl og hvorfor kommer den?

M.v.h Morten Jørgensen
Webmaster og Redaktør på:
http://hairboy.adsl.dk/starwayonline



Niels Andersen (23-11-2001)
Kommentar
Fra : Niels Andersen


Dato : 23-11-01 19:37

"Morten Jørgensen" <tbd@mailme.dk> wrote in message
news:3bfe935f$0$89851$edfadb0f@dspool01.news.tele.dk...
> > Din php.ini er sat forkert op. Du skal angive et sted hvor
sessionsdata
> > kan gemmes på filsystemet. Ovenstående (/tmp) er kun passende på
unix.
>
> Hvad fanden er det for noget?
> Hvordan retter jeg den fejl

De to spørgsmål er jo sådan set allerede besvaret, i de to øverste
linjer jeg citerer.
Du kan evt. søge efter "/tmp" i php.ini for at finde stedet det skal
rettes.

> og hvorfor kommer den?

Som udgangspunkt finder PHP selv et sted at placere midlertidige filer,
ved at spørge operativsystemet. Men man kan i php.ini sætte den op til
at bruge et andet sted. I din php.ini er /tmp så angivet. Spørg mig ikke
hvorfor, men normalt kan du bare udkommentere den linje, så finder php
som sagt selv et sted.

--
Mvh.

Niels Andersen



Morten Jørgensen (23-11-2001)
Kommentar
Fra : Morten Jørgensen


Dato : 23-11-01 20:12

"Niels Andersen" <niels-usenet@myplace.dk> wrote in message
> > Hvad fanden er det for noget?
> > Hvordan retter jeg den fejl
>
> De to spørgsmål er jo sådan set allerede besvaret, i de to øverste
> linjer jeg citerer.
> Du kan evt. søge efter "/tmp" i php.ini for at finde stedet det skal
> rettes.
>
> > og hvorfor kommer den?
>
> Som udgangspunkt finder PHP selv et sted at placere midlertidige filer,
> ved at spørge operativsystemet. Men man kan i php.ini sætte den op til
> at bruge et andet sted. I din php.ini er /tmp så angivet. Spørg mig ikke
> hvorfor, men normalt kan du bare udkommentere den linje, så finder php
> som sagt selv et sted.

Hvad skal jeg så ændre det til?
Hvis der slet ikke står noget, så er det stadig galt...

M.v.h Morten Jørgensen
Webmaster og Redaktør på:
http://hairboy.adsl.dk/starwayonline



Brian Jørgensen (23-11-2001)
Kommentar
Fra : Brian Jørgensen


Dato : 23-11-01 20:31

"Morten Jørgensen" <tbd@mailme.dk> wrote:

> Hvad skal jeg så ændre det til?
> Hvis der slet ikke står noget, så er det stadig galt...

Lav et bibliotek der hedder temp i roden af dit d:

og så ret:
session.save_path = /tmp
til
session.save_path = d:/temp

--
MVH / Best regards
Brian Jørgensen
qte@mail.dk



Morten Jørgensen (23-11-2001)
Kommentar
Fra : Morten Jørgensen


Dato : 23-11-01 21:01

"Brian Jørgensen" <qte@mail.dk> wrote in message
> "Morten Jørgensen" <tbd@mailme.dk> wrote:
>
> > Hvad skal jeg så ændre det til?
> > Hvis der slet ikke står noget, så er det stadig galt...
>
> Lav et bibliotek der hedder temp i roden af dit d:
>
> og så ret:
> session.save_path = /tmp
> til
> session.save_path = d:/temp

Den fatter ikke at jeg har ændret det til: D:/Program Files/FoxServ/temp

M.v.h Morten Jørgensen
Webmaster og Redaktør på:
http://hairboy.adsl.dk/starwayonline



Brian Jørgensen (23-11-2001)
Kommentar
Fra : Brian Jørgensen


Dato : 23-11-01 21:21

"Morten Jørgensen" <tbd@mailme.dk> wrote:
> "Brian Jørgensen" <qte@mail.dk> wrote in message
> > "Morten Jørgensen" <tbd@mailme.dk> wrote:
> >
> > > Hvad skal jeg så ændre det til?
> > > Hvis der slet ikke står noget, så er det stadig galt...
> >
> > Lav et bibliotek der hedder temp i roden af dit d:
> >
> > og så ret:
> > session.save_path = /tmp
> > til
> > session.save_path = d:/temp
>
> Den fatter ikke at jeg har ændret det til: D:/Program Files/FoxServ/temp

Prøv at sætte " " omkring stien og så genstart apache

--
MVH / Best regards
Brian Jørgensen
qte@mail.dk



Morten Jørgensen (23-11-2001)
Kommentar
Fra : Morten Jørgensen


Dato : 23-11-01 21:35

"Brian Jørgensen" <qte@mail.dk> wrote in message
> > Den fatter ikke at jeg har ændret det til: D:/Program Files/FoxServ/temp
>
> Prøv at sætte " " omkring stien og så genstart apache

Det er bare stadig galt...

Hvorfor virker hele min php hjemmeside så ellers fint på min egen server?
Det er bare dette lille script at det er galt med...

M.v.h Morten Jørgensen
Webmaster og Redaktør på:
http://hairboy.adsl.dk/starwayonline



Brian Jørgensen (23-11-2001)
Kommentar
Fra : Brian Jørgensen


Dato : 23-11-01 21:35

"Morten Jørgensen" <tbd@mailme.dk> wrote:
> "Brian Jørgensen" <qte@mail.dk> wrote in message
> > > Den fatter ikke at jeg har ændret det til: D:/Program
Files/FoxServ/temp
> >
> > Prøv at sætte " " omkring stien og så genstart apache
>
> Det er bare stadig galt...

så sæt den til d:/temp
som du har lavet

> Hvorfor virker hele min php hjemmeside så ellers fint på min egen server?
> Det er bare dette lille script at det er galt med...

Det skyldes at scriptet bruger noget der hedder sessions. Det er hvor PHP
gemmer variabler på serverens harddisk f.eks. om en bruger logget ind.

--
MVH / Best regards
Brian Jørgensen
qte@mail.dk



Morten Bakkedal (23-11-2001)
Kommentar
Fra : Morten Bakkedal


Dato : 23-11-01 17:14

Morten Jørgensen wrote:

> $result = $mysql_db_query("starwayonline", "SELECT uid FROM kalender
WHERE
> uid='$bruger' AND pass='$md5Kode' AND valid='yes'")
> or die( mysql_error() );

Med mindre du bruger Magic Quotes (hvilket IMO er noget rod), skal huske at
tilføje escape-karakterer. Ellers kan en vilkårlig person med lidt snilde
opnå adgang uden gyldigt login. Måske du kan bruge følgende:

$query = sprintf("SELECT uid FROM kalender WHERE uid='%s' AND pass='%s' AND
valid='yes'", addslashes($bruger), md5(kodeord));
$result = $mysql_db_query("starwayonline", $query) or die(mysql_error());

--
Morten Bakkedal
http://www.bakkeland.dk/



Danni Finne (23-11-2001)
Kommentar
Fra : Danni Finne


Dato : 23-11-01 11:27

> Hvordan kan jeg lave en login system at der tjekker om en given bruger
> findes i en mysql database?

Jeg får ud fra det er til noget login grej.

1) Lav en tabel i databasen med dine brugernavne og deres respektive
passwords.
2) Lav en form, hvor man kan indtaste brugernavn og password
3) Lav en side som tjekker disse. SQL sætningen bliver noget lignende dette:
SELECT user,pass FROM users WHERE user='$user' AND pass='$pass'; - Tjek med
mysql_num_rows om der er succes.
http://www.php.net/manual/en/function.mysql-num-rows.php

Det er simpelthen det :)

> Jeg har prøvet at spørge på eksperten.dk op til flere gange, men jeg
bliver
> ved med at få tilsendt en kode fra dem som ikke virker. Så nu har jeg
> droppet eksperten.dk

Hvis man vil til at bruge php på sine websider, er det ofte en god idé at
lære at programmere php.

Hvis du vil bruge en cykel for at hjælpe dig til at transportere dig fra a
til b, så må du også lære at cykle på den og måske også smøre kæden og pumpe
dækkene engang imellem :)

--
Danni



Morten Jørgensen (23-11-2001)
Kommentar
Fra : Morten Jørgensen


Dato : 23-11-01 13:45

"Danni Finne" <danni@DRYPfinne.dk> wrote in message
> Hvis man vil til at bruge php på sine websider, er det ofte en god idé at
> lære at programmere php.

Det er jo det at jeg prøver på at lære.
Jeg har købt bogen "Start på PHP" fra IDG.
Men der står ikke noget om hvordan man laver en loginsystem som der får sine
brugerinformationer fra en mysql database.
Jeg har også meget svært ved at lave noget, da der næsten hver gang kommer
en parse error. Og så ved jeg som regel ikke hvordan at jeg skal rette den.
Jeg vil så prøve at lave sådan et login system her, for at jeg har noget som
jeg kan bruge til noget nu og også senere hen.
Så kan jeg altid gå tilbage til det og finde noget som jeg kan bruge.

Jeg er meget interesseret i at vide hvor jeg ellers kan lære php henne.
Findes der nogle gode hjemmesider eller nogle andre gode bøger?

M.v.h Morten Jørgensen
Webmaster og Redaktør på:
http://hairboy.adsl.dk/starwayonline



Thomas Jensen (23-11-2001)
Kommentar
Fra : Thomas Jensen


Dato : 23-11-01 14:11

"Morten Jørgensen" <tbd@mailme.dk> wrote in
news:3bfe44e8$0$776$edfadb0f@dspool01.news.tele.dk:

> Jeg er meget interesseret i at vide hvor jeg ellers kan lære php
> henne. Findes der nogle gode hjemmesider eller nogle andre gode
> bøger?

Prøv http://www.php.net/links.php under "tutorials".
http://www.php.dk/ måske ?

--
mvh
Thomas Jensen


Danni Finne (23-11-2001)
Kommentar
Fra : Danni Finne


Dato : 23-11-01 14:37

> Men der står ikke noget om hvordan man laver en loginsystem som der får
sine
> brugerinformationer fra en mysql database.

Har du prøvet for sjov at lave en lille php applikation som henter lidt fra
mysql og gemmer lidt i mysql og retter i data i en mysql?

> Jeg har også meget svært ved at lave noget, da der næsten hver gang kommer
> en parse error. Og så ved jeg som regel ikke hvordan at jeg skal rette
den.

prøv at lave en hello world
lav så en hello world med variabler
lav så en hello world hvor du får variabler fra en form
lav så en side hvor du henter noget data fra en mysql
lav så en side hvor du gemmer noget data i en mysql fra en form
lav en hvor du retter i noget mysql data
lav en side hvor du henter forskelligt mysql data ud, an på nogle variabler
du sætter
lav en side som sammenligner noget fra en form med noget fra mysql

Wush!! nu burde man faktisk være i stand til at kunne lave et login :)

når man starter i det små, og får godt styr på hvordan det hele virker - så
kan man hurtigere kæde sammenhængene sammen og overskue hvordan noget større
skal - øøh nej, der er ikke noget der hedder skal - KAN bygges op...

> Jeg vil så prøve at lave sådan et login system her, for at jeg har noget
som
> jeg kan bruge til noget nu og også senere hen.

Men hvis det er for stor en opgave og man bliver ved med at få fejl man ikke
forstår, så lærer man ikke meget af det.

> Jeg er meget interesseret i at vide hvor jeg ellers kan lære php henne.
> Findes der nogle gode hjemmesider eller nogle andre gode bøger?

Nettet er fuldt med tutorials... søg på "php tutorial" på google og klik dig
videre :)

http://php.net er genial.



Niels Andersen (23-11-2001)
Kommentar
Fra : Niels Andersen


Dato : 23-11-01 14:52

"Morten Jørgensen" <tbd@mailme.dk> wrote in message
news:3bfe44e8$0$776$edfadb0f@dspool01.news.tele.dk...
> Men der står ikke noget om hvordan man laver en loginsystem som der
får sine
> brugerinformationer fra en mysql database.

Det er jo det, du selv skal lave. :)

Du deler simpelt hen opgaven op i mindre stykker. Hver del-opgave deler
du så igen. Sådan bliver du ved indtil du kan overskue det, eller du
ikke kan komme længere.

Mit svar på at lave et login-system, hvor brugernavn og kodeord er
lagret i en database, er sådan her:

1) Hent brugernavn og kodeord fra brugeren
2) Tjek med databasen om det er korrekt
3) Gør hvad der nu er mest passende i din situation, fx. redirect.

> Jeg har også meget svært ved at lave noget, da der næsten hver gang
kommer
> en parse error. Og så ved jeg som regel ikke hvordan at jeg skal rette
den.

Det er vist en kendt problem for begyndere. PHP giver jo en
fejlmeddelelse set fra dens side, da den ikke aner hvad du mener. Det
kan vi andre bedre se.
Du kan jo prøve at komme med nogle eksempler, så skal jeg (og sikkert
også andre) prøve at fortælle hvad der er i vejen, og især: Hvordan vi
kan se det, ud fra fejlmeddelelsen.
Det, du skal vise er: Den linje PHP nævne, og nogle linjer før. Hvor
mange? Tjah, 4-5 stykker plejer at gøre det. Fejlen plejer faktisk at
ligge på den nævnte linje, eller linjen før.

--
Mvh.

Niels Andersen



Morten Jørgensen (23-11-2001)
Kommentar
Fra : Morten Jørgensen


Dato : 23-11-01 15:57

Jeg har også fået denne kode fra eksperten.dk:

<html>
<head>
<title>Kalender</title>
</head>
<body>
<?
$mysql_link = mysql_connect("localhost", "", "");
mysql_select_db("starwayonline");

if (isset ($authuser))
{
$mysql_result = mysql_query("SELECT * FROM kalender WHERE
uid='$authuser'", $mysql_link) or die(mysql_error());
if(mysql_numrows($mysql_result))
{
while ($resultat = mysql_fetch_array($mysql_result))
{
$password = $resultat["password"];
}
if ($password==$authpassword)
{
$authmessage="Det var det rigtige kodeord.";
}
else
{
$authmessage="Den angivne kodeord var forkert. Prøv igen.";
}

?>

<P><FONT SIZE="+2" COLOR="#FF0000"><?echo $authmessage;?></FONT></P>

<form method="post" action="<? echo $PHP_SELF; ?>">
Brugernavn: <INPUT TYPE="text" NAME="authuser">
Kodeord: <INPUT TYPE="password" NAME="authpassword">
<input type="submit" value="Log ind">
</form>
</body>
</html>

Men der skulle være en parse error i linie 39. Hvilket der ikke kan være, så
det må være et andet sted.
Vil det virke som det skal så?

M.v.h Morten Jørgensen
Webmaster og Redaktør på:
http://hairboy.adsl.dk/starwayonline



Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408857
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste