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