mheddaMedlem sedan feb. 2000385 inlägg Hejsan!
Har ett litet skumt problem med inloggning.
När jag öppnar webbläsaren och loggar in första gången så får jag upp meddelandet "Måste logga in..! " nästa gång så går det bra. Vad är det för fel på min kod?
Brygga:
<?session_start();
ob_start();
include("funktioner/funktioner.php");
my_checkUser($txt_User,$txt_Pass);
?>
Inloggnings function:
function my_checkUser($txt_User,$txt_Pass)
{
session_start();
global $valid,$conn,$PHP_SELF,$my_id,$sess_User,$sess_Pass,$sess_namn;
//If session doesn't exist..
if($valid != "yes")
{
if(($txt_User != "") && ($txt_Pass != ""))
{
openConn();
$checkUserSQL = "SELECT COUNT(*) FROM tbl_tiduser WHERE username = '$txt_User' AND password = '$txt_Pass'";
//$num = odbc_prepare($conn,$checkUserSQL);
//$checkUserResult = @odbc_exec($conn,$checkUserSQL) or die ("Couldn't execute query..");
$num = odbc_do($conn, $checkUserSQL);
$answer = odbc_result($num, 1);
// If user exists..
if($answer != 0)
{
$checkStatSQL = "SELECT* FROM tbl_tiduser WHERE username = '$txt_User' AND password = '$txt_Pass'";
$result_stat = odbc_do($conn, $checkStatSQL);
$stat = odbc_result($result_stat, 4);
if($stat=="1")
{
session_start();
$sess_User = odbc_result($result_stat,2);
$sess_Pass = odbc_result($result_stat,3);
$sess_namn = odbc_result($result_stat,5);
$valid="yes";
session_register("sess_User");
session_register("sess_Pass");
session_register("sess_namn");
session_register("valid");
header("Location:stat_1/index.php");
}
if($stat=="2")
{
session_start();
$sess_User = odbc_result($result_stat,2);
$sess_Pass = odbc_result($result_stat,3);
$sess_namn = odbc_result($result_stat,5);
$valid="yes";
session_register("sess_User");
session_register("sess_Pass");
session_register("sess_namn");
session_register("valid");
header("Location:stat_2/index.php");
}
}
else
{
print "<br><br><a href='../inlogg.php'><span class='brodtext'><center><i>Fel loginuppgifter..!</center></i></span></a>";
}
}
elseif(($txt_User == "") && ($txt_Pass == ""))
{
print "<br><br><a href='../inlogg.php'><span class='brodtext'><center><i>Måste logga in..!</center></i></span></a>";
}
}
}
Vad kan det vara??
MVH Hedda
mheddaMedlem sedan feb. 2000385 inlägg När jag loggar ut och loggar in på kontot igen eller ett annat konto då går det bra.
Tills för en stund sen då fick jag detta felmeddelande i bottenframen:
---------------------------------------------------------------------------------
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
----------------------------------------------------------------------------------
Är det någon annan som fått liknande felmeddelande?
MVH Hedda
mheddaMedlem sedan feb. 2000385 inlägg Varför registrerar den inte dessa sessions?
förrän andra gången man loggar in??
Jag blir tokig.
Session_start();
$valid="yes";
$sess_User = odbc_result($result_stat,2);
$sess_Pass = odbc_result($result_stat,3);
$sess_namn = odbc_result($result_stat,5);
session_register("valid");
session_register("sess_User");
session_register("sess_Pass");
session_register("sess_namn");
mheddaMedlem sedan feb. 2000385 inlägg Hej igen!
Jag blir inte riktigt klok på detta första gången sätter den ingen session men andra gången man loggar in. Den går ju in i if satsen och skickar mig vidare till stat_2/index.php så då har den väl gått igenom session_register kan man tycka, jätte mysko tycker jag:-0
Vad kan det vara, någon som vet??
if($stat=="2")
{
session_start();
$sess_User = odbc_result($result_stat,2);
$sess_Pass = odbc_result($result_stat,3);
$sess_namn = odbc_result($result_stat,5);
$valid="yes";
session_register("sess_User");
session_register("sess_Pass");
session_register("sess_namn");
session_register("valid");
header("Location:stat_2/index.php");
}
MVH Hedda
monAmourMedlem sedan dec. 2002258 inlägg Vet inte om det är detta som är den hela lösningen, men session_start() ska alltid ligga högst upp i koden och ingenting annat får köras innan den..
i.e:
<?
session_start();
//resterande kod kommer här
?>
Så lägg den högst upp och plocka bort den i dina if satser och funktioner..
mheddaMedlem sedan feb. 2000385 inlägg Hej igeen!
Nu har jag kollat med detta.
Jag skickar till form.php vilket ligger i topframen då funkar det, men inte när jag skickar till index.php vilket är ett frameset med topframe där form.php ligger och en bottenframe där show.php ligger.
Vad sjutton kan det vara??
Jag blir tokig på dessa sessions.
if($stat=="2")
{
//session_start();
$valid="yes";
$sess_User = odbc_result($result_stat,2);
$sess_Pass = odbc_result($result_stat,3);
$sess_namn = odbc_result($result_stat,5);
//$HTTP_SESSION_VARS['sess_User'] = odbc_result($result_stat,2);
//$HTTP_SESSION_VARS['sess_Pass'] = odbc_result($result_stat,3);
session_register("valid");
session_register("sess_User");
session_register("sess_Pass");
session_register("sess_namn");
header("Location:stat_2/form.php?".SID);
}
Please är det någon som kan hjälpa mig?
Är det kanske någon som haft ett liknande problem och löst det på ett lysande sätt :-)
ByByHedda
mheddaMedlem sedan feb. 2000385 inlägg Är det ingen som haft problem med frames och sessions
Jag kan lösa det till dig på smidigaste sätt, men inte nu. Ger mig på det om nån timme.
mheddaMedlem sedan feb. 2000385 inlägg Det skulle vara lysande.
Tack på förhand Hydr0matic.
MVH Hedda
tänkte börja pilla lite nu.... En fråga bara - ska funktionen my_checkUser göra ngt annat än att kolla inloggningen ? Förstår inte riktigt denna raden ->
global $valid,$conn,$PHP_SELF,$my_id,$sess_User,$sess_Pass,$sess_namn;
Varför behöver du de variablerna globalt ? Har du skrivit hela funktionen själv eller har du kopierat vissa delar ?
Vilken PHP version kör du ?
mheddaMedlem sedan feb. 2000385 inlägg Jag har kopierat vissa delar global variablarna hänger kvar med allt loborerande dom kan vi nog glömma.
Men jag har nu kikat och sett att första gången man loggar in så sätter den en session
valid|s:3:"yes";sess_User|s:3:"joe";sess_Pass|s:5:"%eoj%";sess_namn|s:12:"Joe Formgren";
Men man måste ändå logga in en gång till och då kan jag även logga in som någon annan och då funkar det.
Mystiskt eller något generalfel från min sida?
ok... jo, det är inte med sessionen det är fel utan själva ordningen på koden. Du skickar iväg headers till browsern lite hur som helst.
Har du färdigställt sidan ifrån vilken man loggar in ? Isf kan du väl posta den htmln så kan jag pilla in lite variabler där och fixa så man kommer tillbax dit om loginuppgifterna är fel.
mheddaMedlem sedan feb. 2000385 inlägg Jag har kollat och första gången sätter den även en tom session fil och när jag loggar ut med
function logout()
{
global $PHP_SELF,$valid;
session_start();
session_unregister($valid);
session_destroy();
//print "<span class='brodtext'><center><i>Du är nu utloggad..!</center></i></span>";
//header("Location:index.php?action=error&msg=".htmlentities(urlencode("Du är nu utloggad..!")));
header("Location:inlogg.php");
}
Så dödar den ingen session däremot andra gången jag loggar in så sätter den en ny session med nya uppgifter om man loggar in som någon annan
valid|s:3:"yes";sess_User|s:3:"seb";sess_Pass|s:5:"%bes%";sess_namn|s:12:"Sven-Erik Backman";
Och därmed skriver den över den tomma sessionen som setts vid första inloggningen. Och då först visas uppgifterna på sidan.
det hade varit lättare om du mailat berörda scripts till mig så hade fått en bättre helhetsbild.
matte@insector.se
Jag antar att my_checkUser() ska ligga i funktioner/funktioner.php ?
mheddaMedlem sedan feb. 2000385 inlägg Eller rättare sakt på index.php, form.php, show.php står det rätt
include("../funktioner/funktioner.php");
För när man loggar in så kommer man in i mappen stat_2 och mappen funktioner ligger utanför stat_2 direkt i huvudmappen.
if($stat=="2")
{
//session_start();
$valid="yes";
$sess_User = odbc_result($result_stat,2);
$sess_Pass = odbc_result($result_stat,3);
$sess_namn = odbc_result($result_stat,5);
session_register("valid");
session_register("sess_User");
session_register("sess_Pass");
session_register("sess_namn");
header("Location:stat_2/index.php");
}
MVH Hedda
oki... har mailat tillbax filerna nu så du får ändra det själv.
Jag är här en stund till om du behöver fråga ngt....
function logout() {
session_start();
session_destroy();
header("Location:inlogg.php");
}