/ 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
Login form
Fra : Dieter Britz


Dato : 30-07-11 15:46

Jeg vil gerne bygge et login-form i en af mine hjemmesider. For
at teste hvordan man gør, skrev jeg følgende test:

<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/T
R/html4/strict.dtd'>
<html>
<head>
<title>Testing</title>
</head>
<body>
<h3 align=center><font color="#800000">Testing</font></h3>

<form method="post">
<strong>Your password:</strong><br>
<input type="password" name="$password">
<input type="submit" value="send">
</form>

<?php
echo "password in plain text is $password<BR>";
$hash = sha1($password);
echo "Hash value is $hash<br>";
?>
<p>
On we go to the rest.
</body>
</html>

Det virker dog ikke. Meningen er, at det venter indtil jeg
taster et password ind, og så echoer det, samt dens hashværdi.
Resultatet er imidlertid at der echoes noget blank, inden jeg
overhovedet har indtastet noget, og hashværdien er der også
i forvejen.

Hvad gør jeg forkert?

Og, hvordan indretter jeg det, sådan at skriptet kun fortsætter
til "On we go" osv, hvis man har indtastet et rigtigt password?
Jeg forstår at jeg skal lægge en hashværdi i en særskildt php-
fil, og bruge ifsset osv, men hvordan laver jeg det at den ikke
fortsætter medmindre alt er som det skal være?

--
Dieter Britz

 
 
Birger Sørensen (30-07-2011)
Kommentar
Fra : Birger Sørensen


Dato : 30-07-11 15:58

Den 30-07-2011, skrev Dieter Britz:
> Jeg vil gerne bygge et login-form i en af mine hjemmesider. For
> at teste hvordan man gør, skrev jeg følgende test:
>
> <!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/T
> R/html4/strict.dtd'>
> <html>
> <head>
> <title>Testing</title>
> </head>
> <body>
> <h3 align=center><font color="#800000">Testing</font></h3>
>
> <form method="post">
> <strong>Your password:</strong><br>
> <input type="password" name="$password">
> <input type="submit" value="send">
> </form>
>
> <?php
> echo "password in plain text is $password<BR>";
> $hash = sha1($password);
> echo "Hash value is $hash<br>";
> ?>
> <p>
> On we go to the rest.
> </body>
> </html>
>
> Det virker dog ikke. Meningen er, at det venter indtil jeg
> taster et password ind, og så echoer det, samt dens hashværdi.
> Resultatet er imidlertid at der echoes noget blank, inden jeg
> overhovedet har indtastet noget, og hashværdien er der også
> i forvejen.
>
> Hvad gør jeg forkert?
>
> Og, hvordan indretter jeg det, sådan at skriptet kun fortsætter
> til "On we go" osv, hvis man har indtastet et rigtigt password?
> Jeg forstår at jeg skal lægge en hashværdi i en særskildt php-
> fil, og bruge ifsset osv, men hvordan laver jeg det at den ikke
> fortsætter medmindre alt er som det skal være?

<?php
if (isset($_POST['password'])) {
echo "password in plain text is $password<BR>";
$hash = sha1($password);
echo "Hash value is $hash<br>";
}
?>

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Birger Sørensen (30-07-2011)
Kommentar
Fra : Birger Sørensen


Dato : 30-07-11 16:01

Birger Sørensen har bragt dette til verden:

> <?php
> if (isset($_POST['password'])) {
> echo "password in plain text is $password<BR>";
> $hash = sha1($password);
> echo "Hash value is $hash<br>";
> }
> ?>
>
> Birger

Du kan ikke bruge $password på den måde. Du skal først tildele den:
$password = $_POST['password'];
Og for god ordens skyld, skal name for <input... være uden $-tegnet

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Dieter Britz (31-07-2011)
Kommentar
Fra : Dieter Britz


Dato : 31-07-11 16:18

On Sat, 30 Jul 2011 16:58:00 +0200, Birger Sørensen wrote:
[...]
> <?php
> if (isset($_POST['password'])) {
> echo "password in plain text is $password<BR>"; $hash =
> sha1($password);
> echo "Hash value is $hash<br>";
> }
> ?>

Nu har jeg altså

<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/
html4/strict.dtd'>
<html>
<head>
<title>Testing</title>
</head>
<body>
<h3 align=center><font color="#800000">Testing</font></h3>

<form method="post">
<strong>Your password:</strong><br>
<input type="password" name="$password">
<input type="submit" value="send">
</form>

<?php
if (isset($_POST['password'])) {
echo "password in plain text is $password<BR>";
$hash = sha1($password);
echo "Hash value is $hash<br>";
}
?>
<p>
On we go to the rest.
</body>
</html>

- og efter jeg indtaster et "password" sker der intet overhovedet,
udover at jeg bliver spurgt om det skal huskes (som jeg siger nej til)

--
Dieter Britz

Birger Sørensen (31-07-2011)
Kommentar
Fra : Birger Sørensen


Dato : 31-07-11 16:21

Dieter Britz formulerede spørgsmålet:
> On Sat, 30 Jul 2011 16:58:00 +0200, Birger Sørensen wrote:
> [...]
>> <?php
>> if (isset($_POST['password'])) {
>> echo "password in plain text is $password<BR>"; $hash =
>> sha1($password);
>> echo "Hash value is $hash<br>";
>> }
>> ?>
>
> Nu har jeg altså
>
> <!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/
> html4/strict.dtd'>
> <html>
> <head>
> <title>Testing</title>
> </head>
> <body>
> <h3 align=center><font color="#800000">Testing</font></h3>
>
> <form method="post">
> <strong>Your password:</strong><br>
> <input type="password" name="$password">
> <input type="submit" value="send">
> </form>
>
> <?php
> if (isset($_POST['password'])) {
> echo "password in plain text is $password<BR>";
> $hash = sha1($password);
> echo "Hash value is $hash<br>";
> }
> ?>
> <p>
> On we go to the rest.
> </body>
> </html>
>
> - og efter jeg indtaster et "password" sker der intet overhovedet,
> udover at jeg bliver spurgt om det skal huskes (som jeg siger nej til)

<form method="post" action="#">

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Dieter Britz (01-08-2011)
Kommentar
Fra : Dieter Britz


Dato : 01-08-11 16:06

On Sun, 31 Jul 2011 17:20:38 +0200, Birger Sørensen wrote:

> Dieter Britz formulerede spørgsmålet:
>> On Sat, 30 Jul 2011 16:58:00 +0200, Birger Sørensen wrote: [...]
>>> <?php
>>> if (isset($_POST['password'])) {
>>> echo "password in plain text is $password<BR>"; $hash =
>>> sha1($password);
>>> echo "Hash value is $hash<br>";
>>> }
>>> ?>
>>
>> Nu har jeg altså
>>
>> <!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN'
>> 'http://www.w3.org/TR/ html4/strict.dtd'>
>> <html>
>> <head>
>> <title>Testing</title>
>> </head>
>> <body>
>> <h3 align=center><font color="#800000">Testing</font></h3>
>>
>> <form method="post">
>> <strong>Your password:</strong><br>
>> <input type="password" name="$password"> <input type="submit"
>> value="send">
>> </form>
>>
>> <?php
>> if (isset($_POST['password'])) {
>> echo "password in plain text is $password<BR>"; $hash =
>> sha1($password);
>> echo "Hash value is $hash<br>";
>> }
>> ?>
>> <p>
>> On we go to the rest.
>> </body>
>> </html>
>>
>> - og efter jeg indtaster et "password" sker der intet overhovedet,
>> udover at jeg bliver spurgt om det skal huskes (som jeg siger nej til)
>
> <form method="post" action="#">
>
> Birger

Virker stadigvæk ikke.

--
Dieter Britz

Birger Sørensen (01-08-2011)
Kommentar
Fra : Birger Sørensen


Dato : 01-08-11 17:17

Dieter Britz formulerede Monday:
> On Sun, 31 Jul 2011 17:20:38 +0200, Birger Sørensen wrote:
>
>> Dieter Britz formulerede spørgsmålet:
>>> On Sat, 30 Jul 2011 16:58:00 +0200, Birger Sørensen wrote: [...]
>>>> <?php
>>>> if (isset($_POST['password'])) {
>>>> echo "password in plain text is $password<BR>"; $hash =
>>>> sha1($password);
>>>> echo "Hash value is $hash<br>";
>>>> }
>>>> ?>
>>>
>>> Nu har jeg altså
>>>
>>> <!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN'
>>> 'http://www.w3.org/TR/ html4/strict.dtd'>
>>> <html>
>>> <head>
>>> <title>Testing</title>
>>> </head>
>>> <body>
>>> <h3 align=center><font color="#800000">Testing</font></h3>
>>>
>>> <form method="post">
>>> <strong>Your password:</strong><br>
>>> <input type="password" name="$password"> <input type="submit"
>>> value="send">
>>> </form>
>>>
>>> <?php
>>> if (isset($_POST['password'])) {
>>> echo "password in plain text is $password<BR>"; $hash =
>>> sha1($password);
>>> echo "Hash value is $hash<br>";
>>> }
>>> ?>
>>> <p>
>>> On we go to the rest.
>>> </body>
>>> </html>
>>>
>>> - og efter jeg indtaster et "password" sker der intet overhovedet,
>>> udover at jeg bliver spurgt om det skal huskes (som jeg siger nej til)
>>
>> <form method="post" action="#">
>>
>> Birger
>
> Virker stadigvæk ikke.

Hvis ovenstående stadig er den kode du har, så har du ikke ændret name
for input linien.
<input type="password" name="password">
der skal ikke være $

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Dieter Britz (05-08-2011)
Kommentar
Fra : Dieter Britz


Dato : 05-08-11 13:58

Birger Sørensen wrote:
[...]
> Hvis ovenstående stadig er den kode du har, så har du ikke ændret name
> for input linien.
> <input type="password" name="password">
> der skal ikke være $

Jeg har nu følgende:

<!DOCTYPE html PUBLIC '-//W3C//DTD HTML
4.01//EN' ''>http://www.w3.org/TR/html4/strict.dtd'>
<html>
<head>
<title>Testing</title>
</head>
<body>
<h3 align=center><font color="#800000">Testing</font></h3>

<form method="post" action="#">
<strong>Your password:</strong><br>
<input type="password" name="password">
<input type="submit" value="send">
</form>

<?php
if (isset($_POST['password'])) {
echo "password in plain text is $password<BR>";
$hash = sha1($password);
echo "Hash value is $hash<br>";
}
?>
<p>
On we go to the rest.
</body>
</html>

og det virker fortsat ikke. Jeg kan ikke se hvor koden indlæser
passwordvariablen, som jeg mener skulle hedde $password, fra
tastaturet. Det er den, der i php-delen skulle echoes, hashes
og hashen echoes. Som før, er der en blank text, og en hash som
nok svarer til et antal blanks.

Hvad er der galt? (Det her er ikke så let som Fortran...)
--
Dieter Britz (dieterhansbritz<at>gmail.com)

Birger Sørensen (05-08-2011)
Kommentar
Fra : Birger Sørensen


Dato : 05-08-11 14:18

Dieter Britz formulerede spørgsmålet:
> Birger Sørensen wrote:
> [...]
>> Hvis ovenstående stadig er den kode du har, så har du ikke ændret name
>> for input linien.
>> <input type="password" name="password">
>> der skal ikke være $
>
> Jeg har nu følgende:
>
> <!DOCTYPE html PUBLIC '-//W3C//DTD HTML
> 4.01//EN' ''>http://www.w3.org/TR/html4/strict.dtd'>
> <html>
> <head>
> <title>Testing</title>
> </head>
> <body>
> <h3 align=center><font color="#800000">Testing</font></h3>
>
> <form method="post" action="#">
> <strong>Your password:</strong><br>
> <input type="password" name="password">
> <input type="submit" value="send">
> </form>
>
> <?php
> if (isset($_POST['password'])) {
> echo "password in plain text is $password<BR>";
> $hash = sha1($password);
> echo "Hash value is $hash<br>";
> }
> ?>
> <p>
> On we go to the rest.
> </body>
> </html>
>
> og det virker fortsat ikke. Jeg kan ikke se hvor koden indlæser
> passwordvariablen, som jeg mener skulle hedde $password, fra
> tastaturet. Det er den, der i php-delen skulle echoes, hashes
> og hashen echoes. Som før, er der en blank text, og en hash som
> nok svarer til et antal blanks.
>
> Hvad er der galt? (Det her er ikke så let som Fortran...)

Du skal skrive dit password på linien og trykke på "send".
Da bliver formen submittet, og værdien fra input password sættes i
$_POST['password'].
Den anden måde, hvor du har $password direkte, fungerer ikke længe -
den er et sikkerhedsproblem. (Noget med superblobals, som man godt kan
sætte til at fungere - men lad hellere være...)

Muligvis skal action i <form> hedde det samme som dit script, og du har
heller ikke sat værdien af $password til $_POST['password'], som jeg
skrev i en af de første svar - så din kode *skal* skrive blanke, som
den er. $password er ikke defineret - i bedste fald tom..

Skal prøve at lægge et eksempel op senere...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Birger Sørensen (05-08-2011)
Kommentar
Fra : Birger Sørensen


Dato : 05-08-11 14:26

http://bbsorensen.com/test/dieter/

Virker fortrinligt.

Kildekoden til index.php:
<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN'
''>http://www.w3.org/TR/html4/strict.dtd'>
<html>
<head>
<title>Testing</title>
</head>
<body>
<h1>Testing</h1>

<form method="post" action="#">
<strong>Your password:</strong><br>
<input type="password" name="password">
<input type="submit" value="send">
</form>

<?php
if (isset($_POST['password'])) {
$password = $_POST['password'];
echo "password in plain text is $password<BR>";
$hash = sha1($password);
echo "Hash value is $hash<br>";
}
?>
<p>
On we go to the rest.
</body>
</html>


Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Dieter Britz (05-08-2011)
Kommentar
Fra : Dieter Britz


Dato : 05-08-11 21:35

On Fri, 05 Aug 2011 15:25:34 +0200, Birger Sørensen wrote:

> http://bbsorensen.com/test/dieter/
>
> Virker fortrinligt.
>
> Kildekoden til index.php:
> <!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN'
> ''>http://www.w3.org/TR/html4/strict.dtd'> <html>
> <head>
> <title>Testing</title>
> </head>
> <body>
> <h1>Testing</h1>
>
> <form method="post" action="#">
> <strong>Your password:</strong><br>
> <input type="password" name="password"> <input type="submit"
> value="send">
> </form>
>
> <?php
> if (isset($_POST['password'])) {
> $password = $_POST['password'];
> echo "password in plain text is $password<BR>"; $hash =
> sha1($password);
> echo "Hash value is $hash<br>";
> }
> ?>
> <p>
> On we go to the rest.
> </body>
> </html>
>
>
> Birger


Tusind tak! Og tak for din tålmodighed. Jeg har lært noget her.
Nu implementerer det der hvor jeg vil have det, med test for
det rigtige password (dvs dets hashværdi) osv.
--
Dieter Britz

Dieter Britz (09-08-2011)
Kommentar
Fra : Dieter Britz


Dato : 09-08-11 16:44

On Fri, 05 Aug 2011 20:35:23 +0000, Dieter Britz wrote:

> Tusind tak! Og tak for din tålmodighed. Jeg har lært noget her. Nu
> implementerer det der hvor jeg vil have det, med test for det rigtige
> password (dvs dets hashværdi) osv.

Nu er jeg kommet så langt, at jeg kan indlæse et password og sammenligne
dens hash med en hashstreng i en fil, og det virker. Koden er altså, i
grove træk

<form method="post" action="#">
<strong>Your password:</strong><br>
<input type="password" name="password"> <input type="submit"
value="send">
</form>

<?php
if (isset($_POST['password'])) {
.... <tekst som ender med en if(..) der tester password osv>
}
?>

Herefter skal der nu komme en HTML side, der kun vises hvis
if-sætningen havde resultatet "true". Lad os sige, de to hasher
er henholdsvis $kode1 og $kode2; hvordan får jeg nu hvad jeg
vil have? Det skal være noget inde i php-delen med

if ($kode1 == $kode2) {
<respons true, vis html>
} else {
<respons til false, vis ikke resten>
}

Hvordan koder jeg det?

--
Dieter Britz

Birger Sørensen (09-08-2011)
Kommentar
Fra : Birger Sørensen


Dato : 09-08-11 19:03

Dieter Britz tastede følgende:
> On Fri, 05 Aug 2011 20:35:23 +0000, Dieter Britz wrote:
>
>> Tusind tak! Og tak for din tålmodighed. Jeg har lært noget her. Nu
>> implementerer det der hvor jeg vil have det, med test for det rigtige
>> password (dvs dets hashværdi) osv.
>
> Nu er jeg kommet så langt, at jeg kan indlæse et password og sammenligne
> dens hash med en hashstreng i en fil, og det virker. Koden er altså, i
> grove træk
>
> <form method="post" action="#">
> <strong>Your password:</strong><br>
> <input type="password" name="password"> <input type="submit"
> value="send">
> </form>
>
> <?php
> if (isset($_POST['password'])) {
> ... <tekst som ender med en if(..) der tester password osv>
> }
> ?>
>
> Herefter skal der nu komme en HTML side, der kun vises hvis
> if-sætningen havde resultatet "true". Lad os sige, de to hasher
> er henholdsvis $kode1 og $kode2; hvordan får jeg nu hvad jeg
> vil have? Det skal være noget inde i php-delen med
>
> if ($kode1 == $kode2) {
> <respons true, vis html>
> } else {
> <respons til false, vis ikke resten>
> }
>
> Hvordan koder jeg det?

if ($kode1 == $kode2) {
head("Location:OK_side.html")
}
else {
head....

Men jeg vil foreslå at gøre det anderledes.
Hvis du lægger kontrollen af password i en fil (pw_kontrol.php) for sig
selv, kan du gøre det med includes...

if ($kode1 == $kode2) {
include 'OK_side.html';
}
else {
include 'Fejlside.html';
}

eller
include ($kode1 == $kode2) ? 'OK_side.html' : 'Fejlside.html';

Fejlsiden skal så have et returlink til logind-siden
<form action="pw_kontrol.php" method="post">

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Søg
Reklame
Statistik
Spørgsmål : 177417
Tips : 31962
Nyheder : 719565
Indlæg : 6407865
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste