noratxMedlem sedan feb. 200193 inlägg
Hejsan!
Jag har ett litet problem med ett login script..
Jag har försökt med detta på lite olika sätt.
Vid en lyckad inloggning så skall man komma till base.php (vilket lyckas utan problem).
Men om man anger fel pass och anv.namn så skall en liten javapopup titta fram och berätta vad man har gjort för fel och backa ett steg.
Den java jag använder i denna kod funkar utmärkt i en annan kod.. så javan är det inget fel på...
Jag får den helt enkelt bara inte att fungera!
Finns det någon som har något råd?
Här är koden till sidan som kollar så att anv.namn och lösen är rätt.
<?
$link = mysql_connect("localhost", "xxxxx", "xxxxx") or die(mysql_error());
mysql_select_db("webdb", $link) or die(mysql_error());
function error_message($mess){
echo "<script>alert(\"".$mess."\"); history.go(-1);</script>";
}
$result = mysql_query("SELECT 1 FROM user where username ='$username' and password = '$password'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result) or die(mysql_error());
if ( $num_rows != 0 ) {
header("Location: base.php");
} else {
header(error_message("Fel användarnamn eller lösenord! Försök igen));
exit;
}
?>
KimMedlem sedan jan. 20003 571 inlägg
<?
$link = mysql_connect("localhost", "xxxxx", "xxxxx") or die(mysql_error());
mysql_select_db("webdb", $link) or die(mysql_error());
function error_message($mess){
echo "<script>alert(\"".$mess."\"); history.go(-1);</script>";
}
$result = mysql_query("SELECT * FROM user where username ='$username' and password = '$password'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result) or die(mysql_error());
if ( $num_rows >= 0 ) {
header("Location: base.php");
} else {
header(error_message("Fel användarnamn eller lösenord! Försök igen));
exit;
}
?>
------------------
de'nim
[Redigerat av Kim den 16 nov 2001]
HDJHSKGDKJHSDMedlem sedan sep. 2001147 inlägg
header(error_message("Fel användarnamn eller lösenord! Försök igen));
Saknas det inte ett ", där?
header(error_message("Fel användarnamn eller lösenord! Försök igen"));
noratxMedlem sedan feb. 200193 inlägg
ajdå..
situations tecknet (eller dubbelfnutt som det åxå kallas) finns med i koden på sidan, den råkade av någon anledning falla bort i inlägget.
som sagt, det funkar inte...
LarsGMedlem sedan dec. 200012 465 inlägg
Tag bort or die vid anropet till mysql_numrows
$num_rows = mysql_num_rows($result) ;
Om det inte finns någon post så returneras 0 dvs false och därmed anropas die (med en tom sträng eftersom det inte varit något fel.)
------------------
essentitia preter non sans multiplicandum
noratxMedlem sedan feb. 200193 inlägg
Det vart farligt att göra det!
Gå kommer folk in på den sidan som jag skyddar med lösenordet även fast dom inte har rätt lösen och anv.namn!
Jag provade å kladda dit ett par texken i loginfälten och kom in utan problem på den skyddade sidan...
noratxMedlem sedan feb. 200193 inlägg
vetefan vad jag hadde gjort för fel...
efter att jag laddat om sidan (ytterligare en gång) så funkade det som det skulle... =)
En fråga till nu bara..
Jag vill dela upp felmeddelandet på tå raden...
är det:
header(error_message("Fel användarnamn eller lösenord! /n Försök igen"));
eller?
För det funkar nämligen inte..
R: stavfel.. ;)
[Redigerat av noratx den 16 nov 2001]
KimMedlem sedan jan. 20003 571 inlägg
header(error_message("Fel användarnamn eller lösenord! \n Försök igen"));
------------------
de'nim
noratxMedlem sedan feb. 200193 inlägg
det verkar vara fel...
Warning: Cannot add header information - headers already sent by (output started at /home/thepage/public_html/beta/do_login.php:5) in /home/thepage/public_html/beta/do_login.php on line 13
cmkMedlem sedan mars 2001305 inlägg
Kolla så att ingen data redan har skickats över till klienten, brukar vara en radbrytning :e
/M
------------------
Keep on rocking 24-7
noratxMedlem sedan feb. 200193 inlägg
inga radbrytningar eller sånt skickat..
funkar ändå inte... :(
cmkMedlem sedan mars 2001305 inlägg
Längst upp i koden som du skickade in först så ser jag något som ser ut som en radbrytning, alltså precis innan '<?', finns det med i din vanliga kod så ta bort den =)
/M
------------------
Keep on rocking 24-7
noratxMedlem sedan feb. 200193 inlägg
jo jo..
Här i forumet....
Men det finns inte med i koden i övrigt... ;)
TIlläg:
Visserligen så har jag ju även med en mailadress i fel meddelandet.. kan det har någet med saken att göra?
utan \n funkar det perfekt med mailadressen som den är..
är det så att jag måste lägag till någet tecken före/efter @ för att det skall funka?
[Redigerat av noratx den 16 nov 2001]
noratxMedlem sedan feb. 200193 inlägg
Ok.. ytterligare ett problem..
borde ha kollat detta tidigare!
När jag nu frösöker logga in med RÄTT användarnamn och password, så funkar det inte...
Hur jag än gör så får jag upp felmeddelandet...
någon som kan se någet fel i koden som kan få detta att hända??
spangoMedlem sedan juni 20006 147 inlägg
header(error_message("Fel användarnamn eller lösenord! \n Försök igen"));
Två fel:
- HTTP-headers får inte innehålla radbrytningar, eftersom olika headers separeras med just newline.
- Du försöker skicka en javascript-snutt som en HTTP-header...
------------------
You can be a coward for a few minutes, or dead forever. /Rincewind
noratxMedlem sedan feb. 200193 inlägg
Tack spango....
Det där med radbrytningen har jag tatt bort å skitit i...
Det sotora problemet nu är ju att oavsett om jag loggar in med rätt lösen å anv.namn så får jag upp felmeddelandet... är det just för att jag skickar java i http headern?
Hur fixar man då till det?
eller blir det helt enkelt så att jag MÅSTE skita i felmeddelandet??
RED:
Om det nu är så att jag måste skita i scriptet så har jag då altså en fil som heter loginerr.php där det står typ, "fel anv.namn och lösenord. Försök igen".
Men nu är det ju så... att i login formuläret så är target pekad mot _top (som ju skriver över hela fönstret)
Om det nu visar sig vara fel lögin å pass.. hur gör jag då så att target pekar mot base_ (som är namnet på ramen jag vill att felmeddelandet skall hamna i.)
[Redigerat av noratx den 17 nov 2001]
PhelpsMedlem sedan nov. 200115 inlägg
Så här gjorde jag mitt login (mitt första och enda hittils så det är väl inte så optimalt men det kanske hjälper dig :)
<?php
//kolla ifall rätt användarnamn och lösenord har skrivits in
if ($submit) {
//define variables
$membername=$name;
$memberpass=$password;
//connect to database
$dbuser="dbuser";
$dbpass="dbpass";
$connection=mysql_connect("localhost",$dbuser,$dbpass);
//database to use
$db="database";
//select database
mysql_select_db($db,$connection);
//formulate query
$sql="SELECT * FROM nopmembers WHERE membername='$membername' AND memberpass='$memberpass'";
//run query
$result=mysql_query($sql);
// define cookie value variable
$value=mysql_fetch_array($result);
//check if matching name and password is found
$num=mysql_numrows($result);
if($num != "0") {
setcookie("logged",$value['memberid'],time()+3600);
//send user forward if everything is ok
header("location:memberindex.php");
exit;
} else { //or display error message
echo "<h1>Invalid username or password!</h1>";
} // end else
} //end if
?>
<html>
<head>
<title>Member log in</title>
</head>
<body>
<table align="center" width="60%">
<form method="post" action="<?php echo $PHP_SELF ?>">
<tr valign="top" align="center">
<td>Name</td><td>Password</td>
</tr>
<tr valign="top" align="center">
<td><input type="text" name="name"></td>
<td><input type="password" name="password">
<input type="submit" name="submit" value="submit"></td>
</tr>
</form>
</table>
</body>
</html>
De tester jag har utfört så fungerar det utmärkt, hur säkert det är ifs har jag lite dålig koll på...
[Redigerat av Phelps den 17 nov 2001]
noratxMedlem sedan feb. 200193 inlägg
Tackar.. jag skall testa det strax så får vi se hur pass bra det funkar! =)