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 Doh, nu var det jag som var rejält efterbliven. Ska klura på problemet...
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 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 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 {
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 Den här raden:
header ("Location: default.php");
...måste ligga överst på sidan. Inget annat för skickas till klienten innan.
Men då går sidan direkt till defaultsdian utan att gå in i ifsatsen som jag vill. Det går ju inte.
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 Du får ha PHP-kod innan header-informationen men inte HTML-kod eller dylikt. Inte ens ett mellanslag.
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 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
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 Vilken PHP-version använder du?
Den senaste som finns att ladda ner från php.net
Det är löst. Pinsamt fel som jag inte vågar berätta men tack alla för er hjälp.
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);
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 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.)