webForumDet fria alternativet

Kört fast - nån som ser varför inget händer?

PHP

16 svar · 921 visningar · startad av tovelainen

Medlem sedan mars 2003137 inlägg
Frågan#1

Hej
jag sitter o drar mig i håret:

Nån som kan se i koden vad som är fel?

Har en vanlig lösenords-input, som vid post skickar lösenordet till scriptet nedan.
Men vare jag skriver ett rätt lösenord eller fel, så skickas jag tillbaka till inloggningssidan, dvs får inte upp message i slutet.

<?

if(!$_POST[user]){
	header("Location:http://www.grundsida.se/login.php");
	exit;
	}

	$db_name="foretag";
	$table_name="auth_users";

	$connection=@mysql_connect("localhost","blalba","blabal")or die(mysql_error());

	$db=@mysql_select_db($db_name, $connection)or die(mysql_error());

	$sql="SELECT * FROM $table_name WHERE user = '$POST[user]'";

	$result=@mysql_query($sql,$connection) or die(mysql_error());

	$num=mysql_num_rows($result);

	if ($num !=0){
		$msg="<p>Welcome!</p>";
	}
	else{
		header("Location:http://www.grundsida.se/login.php");
		exit;
	}
	?>
	<html>
	<head>
	<title>Log in</title>
	</head>
	<body>
	<? echo "$msg"; ?>
	</body>
	</html>

Dvs varför får jag aldrig Welcome-meddelandet ens när löseordet överensstämmer med det som finns i databasen?

Nån fatta?

Tack
:bire

Medlem sedan juni 20006 031 inlägg
#2

Blir det nån skillnad om du ändrar
$_POST[user]
till
$_POST['user']

Medlem sedan mars 2003137 inlägg
#3

Tack Pedda
nej tyvärr. Ingen förändring.
Det kan ju va databasen också... suck

Medlem sedan dec. 20025 483 inlägg
#4

Är det i if-satsen du skickas tillbaka? Vad ger

echo $_POST['user'];

?

Medlem sedan juni 20006 031 inlägg
#5

ändra
$sql="SELECT * FROM $table_name WHERE user = '$POST[user]'";
till
$sql="SELECT * FROM $table_name WHERE user = '".$_POST['user']."'";

Medlem sedan mars 20025 907 inlägg
#6

Du kan ju prova att lägga till något litet prefix i slutet på dina redirects för att se vilken av dem som skickar tillbaka besökaren.

//Dvs ändra den första till ex.
header("Location:http://www.grundsida.se/login.php?1");
//och den andra till 
header("Location:http://www.grundsida.se/login.php?2");

. På så sätt kan du se ungefär var felet ligger.

Personligen gissar jag på att du glömt att ange method="post" i formuläret. :)

Medlem sedan mars 2003137 inlägg
#7

Tack för förslag!! :-)
Men tyvärr. Inget funkar.
Skulle tro, ja, att det är i if-satsen nåt går fel men vad fattar jag inte.
Hur jag än gör så är det else-satsen som kör igång.

Eller är det ändå nåt här:
$sql="SELECT * FROM $table_name WHERE user='$POST[user]'";

Jo det är method=post i formuläret.
Fler förslag? Vore toppen.

Medlem sedan juli 20023 617 inlägg
#8

Testa:

$sql="SELECT * FROM $table_name WHERE user='".$POST[user]."'";
Medlem sedan mars 2003137 inlägg
#9

Tack Fiddler
Nä tyvärr ingen skillnad.
Vad betyder punkterna?
Varför tänkte du som du tänkte? Nyfiken!

Medlem sedan mars 2003137 inlägg
#10

Såhär ser den här raden ut:
$sql="SELECT * FROM $table_name WHERE user='$POST[user]'";

Såhär ser det ut i formuläret:

<form action="anv_koll.php" method="post">
<input type="text" name="user">

Och det verkar som att formuläret inte bär med sig användarnamnet till scriptet.

Medlem sedan juni 20006 031 inlägg
#11

Kontrollera om variabeln är satt med funktionen isset()

if(isset($_POST[user])) {
        // in i databasen mm...
} else {
        // inget värde från formuläret, skicka tillbaka....
        header("Location:http://www.grundsida.se/login.php");
	exit;
}
Medlem sedan juli 20023 617 inlägg
#12

Har du testat Peter S förslag att skriva ut vad du har i $_POST['user']?
I mitt förslag hade jag glömt enkelfnuttar runt user, men det kanske inte gör någon skillnad...
Punkterna klistrar ihop två strängar.

Medlem sedan dec. 19996 721 inlägg
#13

När sådant här strular bör man starta om IE (om man kör det) mellan försökern, eftersom den kan få för sig att cacha lite väl mycket.

$POST[user] ska definitivt vara $POST['user'] och if(!$_POST[user]) kan du göra lite tydligare med

if(!isset($_POST['user'])
Medlem sedan juli 20023 617 inlägg
#14

Ser nu att du glömt strecket i $_POST['user'].

Medlem sedan mars 2003137 inlägg
#15

Fiddler!!!
Tack!
Det var streck-helv&¤¤##¤¤##etet.

Tack för all hjälp!
/TOve

Medlem sedan juli 20023 617 inlägg
#16

Där ser man! ;)

Medlem sedan juni 20006 031 inlägg
#17

tovelainen skrev:

Fiddler!!!
Tack!
Det var streck-helv&¤¤##¤¤##etet.

Tack för all hjälp!
/TOve

Men ändrade du inte det förut när jag föreslog den förändringen, eller märkte du inte det. ;) :)
http://www.webforum.nu/showthread.php?p=1240309#post1240309

600 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
472 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)