webForumDet fria alternativet

PHP & variabler

18 svar · 453 visningar · startad av misan_lisan

misan_lisanMedlem sedan juni 200319 inlägg
#1

Hej,

Jag behöver desperat hjälp. Har provat det mesta nu men det vill ändå inte lösa sig. Se koden nedan:

if(isset($_REQUEST['user']) && isset($_REQUEST['password'])) {
$query = "SELECT * FROM user WHERE NAME = '" . $_REQUEST['user'] . "' and PASSWORD = '" . $_REQUEST['password'] . "'";
$res = mysql_query ($query);
if (mysql_num_rows($res) != 1){
header ("Location: default.php");
exit;
}
else{

Denna kod är hämtad från session.php som är included i filen index.php. Jag skickar in variablerna "user" och "password" från sidan default.php där jag loggar in från. Men vad som händer är att den den går aldrig in i if-satsen utan går direkt till else. Samma problem är det när jag ska skicka variabler från en sida till en annan och värdet i variablerna ska in i en SQL-sats. Jag har provat att eka ut variablerna på nästa sida och det är inga problem men så fort de ligger i en ifsats eller sqlquery så funkar det inte. Varför? Har kollat php.ini filen och den är korrekt.

/Marie

BäckmanMedlem sedan nov. 2001274 inlägg
#2

Doh, nu var det jag som var rejält efterbliven. Ska klura på problemet...

misan_lisanMedlem sedan juni 200319 inlägg
#3

Hej igen,

Jag har redan testat POST och GET men det funkade inte hller. Får göra ett andra försök.

/Marie

GunnarDMedlem sedan juni 20014 290 inlägg
#4

Om du lägger in raden:

echo "Query: ".$query;

Mellan tilldelningen av SQL uttrycket och innan du kör mysql_query(), skriver den ut ett riktigt SQL uttryck då?

BäckmanMedlem sedan nov. 2001274 inlägg
#5

Kanske inte gör någon större skillnad, men saknar du inte en klammer?

if(isset($_REQUEST['user']) && isset($_REQUEST['password'])) { 
	$query = "SELECT * FROM user WHERE NAME = '" . $_REQUEST['user'] . "' and PASSWORD = '" . $_REQUEST['password'] . "'"; 
	$res = mysql_query ($query); 
	if (mysql_num_rows($res) != 1) { 
		header ("Location: default.php"); 
		exit; 
	} 
[b]}[/b] else {
misan_lisanMedlem sedan juni 200319 inlägg
#6

Nu får jag svaret:

Warning: Cannot modify header information - headers already sent by (output started at c:\inetpub\wwwroot\index.php:14) in c:\inetpub\wwwroot\session.php on line 32

Vad är det då? Känner att det är ngt simpelt som jag borde veta vad det är.

Web-TorMedlem sedan nov. 200013 890 inlägg
#7

Den här raden:

header ("Location: default.php");

...måste ligga överst på sidan. Inget annat för skickas till klienten innan.

misan_lisanMedlem sedan juni 200319 inlägg
#8

Men då går sidan direkt till defaultsdian utan att gå in i ifsatsen som jag vill. Det går ju inte.

misan_lisanMedlem sedan juni 200319 inlägg
#9

Bäckman jag förstår vad du menar med klammern men det är else till ifsatsen i ifstasen. Koden fortsätter men jag ska dubbelkolla alla klamrar.

Web-TorMedlem sedan nov. 200013 890 inlägg
#10

Du får ha PHP-kod innan header-informationen men inte HTML-kod eller dylikt. Inte ens ett mellanslag.

misan_lisanMedlem sedan juni 200319 inlägg
#11

Bara för att göra det enklare. Här kommer hela sessionsidan. Förklara.

<?php
	$db = mysql_pconnect ("localhost", "root");
	mysql_select_db("Storage");

	if(isset($_REQUEST['user']) && isset($_REQUEST['password'])) {
		$query = "SELECT * FROM user WHERE NAME = '" . $_REQUEST['user'] . "' and PASSWORD = '" . $_REQUEST['password'] . "'";
		$res = mysql_query ($query);
		if (mysql_num_rows($res) != 1){
			header ("Location: default.php");
			exit;
		}
		else{
			$sessionid = md5(uniqid(rand()));
			$timeout = time()+3600;
			SetCookie("sessionID", $sessionid, $timeout);
			$time = time();
			$query = "INSERT INTO session (sessionid, username, time) VALUES ('sessionid', 'user', time)";
			mysql_query($query);
		}
	}
	else if(isset($HTTP_COOKIE_VARS["sessionID"])){
		$query = "SELECT * FROM session WHERE sessionid = '" . $REQUEST['sessionid'] . "'";
		$res = mysql_query($query);
		if(mysql_num_rows($res) != 1){
			header ("Location: default.php");
			exit;
		}
	}
	else{
		header ("Location: default.php");
		exit;
	}

?>
Web-TorMedlem sedan nov. 200013 890 inlägg
#12

Frågan är hur index.php ser ut.
Där får du inte heller ha någon HTMl-kod innan du includerar session.php

misan_lisanMedlem sedan juni 200319 inlägg
#13

Jag har fått bort headerproblemet men fortfarande vill den inte kännas vid varibalerna user och password. Går inte in i första ifsatsen utan skiakr direkt ner mig i sista elsesatsen vare sig jag har fyllt i användarnamn eller inte.

MatteMedlem sedan aug. 20002 975 inlägg
#14

Vilken PHP-version använder du?

misan_lisanMedlem sedan juni 200319 inlägg
#15

Den senaste som finns att ladda ner från php.net

misan_lisanMedlem sedan juni 200319 inlägg
#16

Det är löst. Pinsamt fel som jag inte vågar berätta men tack alla för er hjälp.

misan_lisanMedlem sedan juni 200319 inlägg
#17

Time

Hej!

Varför funkar inte detta:

[KOD]
$sessionid = md5(uniqid(rand()));
$timeout = time()+3600;
SetCookie("sessionID", $sessionid, $timeout);
$time = time();
$query = "INSERT INTO session (sessionid, username, time) VALUES ('$sessionid', '" . $_REQUEST['user'] . "', '$time')";
mysql_query($query);

misan_lisanMedlem sedan juni 200319 inlägg
#18

Time

Hej!

Varför funkar inte detta:

$sessionid = md5(uniqid(rand()));
$timeout = time()+3600;
SetCookie("sessionID", $sessionid, $timeout);
$time = time();
$query = "INSERT INTO session (sessionid, username, time) VALUES ('$sessionid', '" . $_REQUEST['user'] . "', '$time')";
mysql_query($query);

Variabeln time blir bara 00:00:00. Varför?

/M

LarsGMedlem sedan dec. 200012 464 inlägg
#19

Om du vill lagra aktuellt datum och tid så kan du använda

$query = "INSERT INTO session (sessionid, username, time) VALUES ('$sessionid', '" . $_REQUEST['user'] . "', current_timestamp)";

Eftersom time returnerar ett heltal så försöker Mysql konvertera det till ett datum och när det misslyckas så lagras värdet 00:00:00. (Mysql borde säga fel i detta läge.)

131 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)