/ 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
Hjælp til login box vha. mysql database...
Fra : Morten Jørgensen


Dato : 14-11-01 08:01

Hvordan laver jeg en formular hvor man kan skrive et brugernavn og
adgangskode ind, som herefter undersøger om både brugernavnet og
adgangskoden findes i min mysql database?

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



 
 
Malte von Sehested (14-11-2001)
Kommentar
Fra : Malte von Sehested


Dato : 14-11-01 10:07

> Hvordan laver jeg en formular hvor man kan skrive et brugernavn og
> adgangskode ind, som herefter undersøger om både brugernavnet og
> adgangskoden findes i min mysql database?

Lav noget HTML med en FORM der kalder dit php-script. I dette laver du så
checket - for eksempel sådan her:

I eksemplet hedder skal du have to input elementer:
Brugernavn: <INPUT TYPE="text" NAME="authuser">
Kodeord: <INPUT TYPE="password" NAME="authpassword">

//check kodeord og opret ny entry i guideforum_sessions
if ($session=="")
{
if (isset ($authuser))
{
$mysql_result = mysql_query("SELECT * FROM database WHERE
username='$authuser'", $mysql_link);
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.";
}
}
else
{
$authmessage="Der kræves et login til disse sider.";
}
}




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


Dato : 14-11-01 14:36

"Malte von Sehested" <mvs@sek.ddf.dk> wrote in message
> > Hvordan laver jeg en formular hvor man kan skrive et brugernavn og
> > adgangskode ind, som herefter undersøger om både brugernavnet og
> > adgangskoden findes i min mysql database?
>
> Lav noget HTML med en FORM der kalder dit php-script. I dette laver du så
> checket - for eksempel sådan her:
>
> I eksemplet hedder skal du have to input elementer:
> Brugernavn: <INPUT TYPE="text" NAME="authuser">
> Kodeord: <INPUT TYPE="password" NAME="authpassword">
>
> //check kodeord og opret ny entry i guideforum_sessions
> if ($session=="")
> {
> if (isset ($authuser))
> {
> $mysql_result = mysql_query("SELECT * FROM database WHERE
> username='$authuser'", $mysql_link);
> 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.";
> }
> }
> else
> {
> $authmessage="Der kræves et login til disse sider.";
> }
> }

Hvordan laver jeg så en formular?
Jeg er altså ikke særlig god til sådan noget her.

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



Richard Bjerregaard (14-11-2001)
Kommentar
Fra : Richard Bjerregaard


Dato : 14-11-01 16:27

On Wed, 14 Nov 2001 14:35:40 +0100, "Morten Jørgensen" <tbd@mailme.dk>
wrote:

>> Lav noget HTML med en FORM der kalder dit php-script. I dette laver du så
>> checket - for eksempel sådan her:
>Hvordan laver jeg så en formular?
>Jeg er altså ikke særlig god til sådan noget her.

Dammit Morten, prøv nu lige at gøre lidt arbejde for at finde ud af
det.

http://www.htmlhelp.com/reference/wilbur/block/form.html

Richard

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


Dato : 14-11-01 17:02

Nu har jeg så prøve at lave denne kode:

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

if ($session=="")
{
if (isset ($authuser))
{
$mysql_result = mysql_query("SELECT * FROM kalender WHERE
uid='$authuser'", $mysql_link);
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.";
}
}
else
{
$authmessage="Der kræves et login til disse sider.";
}
}

?>
<form method="post" action="<? $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 står bare dette når jeg går ind på den: Warning: Supplied argument
is not a valid MySQL result resource in c:\http\www\starwayonline\test.php
on line 15

Jeg er altså ved at lære at programmere i php. Så jeg kan altså ikke forstå
alle de fejl meddelser!

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



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


Dato : 14-11-01 17:27

"Morten Jørgensen" <tbd@mailme.dk> wrote in message
news:3bf29585$0$749$edfadb0f@dspool01.news.tele.dk...
> Nu har jeg så prøve at lave denne kode:
[...]
> $mysql_result = mysql_query("SELECT * FROM kalender WHERE
> uid='$authuser'", $mysql_link);
> if(mysql_numrows($mysql_result))
[...]
> Men der står bare dette når jeg går ind på den: Warning: Supplied
argument
> is not a valid MySQL result resource in
c:\http\www\starwayonline\test.php
> on line 15

Når fejlen er på linje 15, er linje 16 og derover ligegyldigt. Dem
behøver du altså ikke vise os.
Som regel ligger fejlen højest 3-4 linjer før det angivne linjenummer,
så du behøver heller ikke tage det fra starten af.
Desuden er det langt nemmere at kigge på din kode, hvis du selv fjerner
det irrelevante. Fx. html-koderne.

> Jeg er altså ved at lære at programmere i php. Så jeg kan altså ikke
forstå
> alle de fejl meddelser!

mysql_query() returnerer en "MySQL result resource". Dvs. når du
skriver:
$mysql_result = mysql_query(...
så er $mysql_result en "MySQL result resource". Lige med én undtagelse:
Hvis der går noget galt, så din sql-query ikke bliver udført. Så
returnerer mysql_query nemlig ikke en resource, men bare "false".
Og det er netop det, den brokker sig over: "Supplied argument is not a
valid MySQL result resource"
Og linje 15 indeholder "if(mysql_numrows($mysql_result))", altså er
$mysql_result ike en MySQL result resource.

Et problem med din kode er, at hvis der opstår en fejl i forbindelse med
din sql-query, så får du den aldrig at se. En nem måde at se den slags
er, at ændre din kode til:
$mysql_result = mysql_query("SELECT * FROM kalender WHERE
uid='$authuser'", $mysql_link) or die(mysql_error());
eller

$mysql_result = mysql_query("SELECT * FROM kalender WHERE
uid='$authuser'", $mysql_link):
echo mysql_error();

Altså, hvis du sørger for, at vise mysql_error(), så kan du se
eventuelle fejl fra MySQL.

--
Mvh.

Niels Andersen



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


Dato : 14-11-01 17:41

Ja, det fungerer så sandelig også rigtig godt.
Der var ikke valgt nogen database. Nu kommer der så ingen fejl meddelser,
men uanset hvad man skriver ind, så går den bare tilbage til samme fil uden
at have lavet noget!
Her er koden:

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

if ($session=="")
{
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.";
}
}
else
{
$authmessage="Der kræves et login til disse sider.";
}
}

?>
<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>



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


Dato : 14-11-01 18:15

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

> men uanset hvad man skriver ind, så går den bare tilbage til samme fil
uden
> at have lavet noget!

Hvad tror du selv denne linje gør:
if ($session=="")

Hvis det er den komplette kode du har sendt, og der ikke foregår noget
du ikke har fortalt om, så kunne du lige så godt skrive:
if (2==4)
eller
if (true==false)
eller
if (false)
eller slette alt hen til den matchene "}", dvs. den sidste.

--
Mvh.

Niels Andersen



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


Dato : 14-11-01 18:17

"Niels Andersen" <niels-usenet@myplace.dk> wrote in message
news:6ExI7.1525$Bs1.348338@news000.worldonline.dk...
> Hvad tror du selv denne linje gør:
> if ($session=="")

Jeg kommer faktisk i tvivl. Hvis variablen ikke eksisterer (måske er det
det, du vil tjekke?), vil det så returnere true?
Anyway, medmindre du ved at $session indeholder en streng, og du vil
tjekke om den er tom, så er det dårlig kode. :)

--
Mvh.

Niels Andersen



Malte von Sehested (16-11-2001)
Kommentar
Fra : Malte von Sehested


Dato : 16-11-01 13:36

Hej Morten,

Jamen det er min skyld. Den kodestump jeg sendte til dig ripede jeg fra en
større stump kode som også benytter sig af en sessionsvariabel. Du skal bare
fjerne
> if ($session=="")
> {
- og selvfølgelig den afsluttende }

Så skulle det kunne køre...

/Malte

"Morten Jørgensen" <tbd@mailme.dk> skrev i en meddelelse
news:3bf29e9d$0$87727$edfadb0f@dspool01.news.tele.dk...
> Ja, det fungerer så sandelig også rigtig godt.
> Der var ikke valgt nogen database. Nu kommer der så ingen fejl meddelser,
> men uanset hvad man skriver ind, så går den bare tilbage til samme fil
uden
> at have lavet noget!
> Her er koden:
>
> <html>
> <head>
> <title>Kalender</title>
> </head>
> <body>
> <?
> $mysql_link = mysql_connect("localhost", "", "");
> mysql_select_db("starwayonline");
>
> if ($session=="")
> {
> 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.";
> }
> }
> else
> {
> $authmessage="Der kræves et login til disse sider.";
> }
> }
>
> ?>
> <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>
>
>



Karsten H. (14-11-2001)
Kommentar
Fra : Karsten H.


Dato : 14-11-01 21:09

Thus spake Malte von Sehested in news:3bf2346d$0$25358
$edfadb0f@dspool01.news.tele.dk:

> //check kodeord og opret ny entry i guideforum_sessions
> if ($session=="")
> {
> if (isset ($authuser))
> {
> $mysql_result = mysql_query("SELECT * FROM database WHERE
> username='$authuser'", $mysql_link);
> 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.";
> }
> }
> else
> {
> $authmessage="Der kræves et login til disse sider.";
> }
> }

måske ville en select from table where username ='$username' and
password='$passwor' være at foretrække.
Dels har vi kun en forespørgsel, hvilket er hurtigere, og kan nøjes med at
se om vi har fået 0, 1 eller flere svar fra serveren.

Får vi 0, så siger vi til brugeren af brugernavn/adgangskode er forkert
(mere vil vi ikke sige. Vil han hacke os vil vi da ikke fortælle om
brugernavnet findes)
Får vi 1 lukker vi ham ind, og får vi flere, så skal vi nok til at fejlfinde
vores system en smule.

--
Karsten H.
Som har skrevet delen før @ baglæns for at narre fjenden i Aalborg.

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste