webForumDet fria alternativet

Olika värden för samma funktionsanrop?

PHP

1 svar · 228 visningar · startad av aasah

Medlem sedan mars 20034 471 inlägg
Frågan#1

I min login-fil sätter jag två sessionsvariabler för alla inloggade. Därefter anropar jag en funktion, countLogin, som sätter en tredje counted. Därefter skickar jag ut ett meddelande som talar om att man är inloggad och i debuggsyfte även värdet på $_SESSION['counted']:

login.php skrev:

Successfully logged in! 1

Eftersom "1" är ett lindrigt sagt förvånande värde, så lägger jag in lite spårutskrifter i min count.php där funktionen countLogin finns. Sedan anropar jag funktionen i fråga direkt från count.php, detta resulterar plötsligt i (korrekta):

session = 1024

???? VARFÖR får jag ett värde när jag anropar funktionen från login och ett annat från count?
Koden:

//Från login.php vid inloggning
if (mysql_num_rows($resGrant) == 1) {
      $_SESSION["sID"] = $sid;
      $_SESSION["sIP"] = getenv("REMOTE_ADDR");
      countLogin();   //Körs utan debugmode
      reportGoodNewsTo();
   }

function reportGoodNewsTo() {
   //diverse just nu ointressanta koller
   else header("Location: message.php?mess=Successfully logged in! ".
   $_SESSION["counted"]);
}

//Från count.php
//debugmode är avkommenterat vid anrop från login pga header strul.
function countLogin() {

   global $id;
   
   if (!admin()) {
      //Räkna sidan - men jag är admin
   }
   $_SESSION['counted'] = findBit('login'); 
   echo "<BR>session = ".$_SESSION['counted']."<BR>";       //Debugmode 
}
//Debugmode
include_once("/home/aasah/www/header.php");

//Ger bl.a. login => 1024
foreach ($id as $page => $nr){
  printCSS();
  echo "findBit(".$page.") = ".findBit($page); 
}
countLogin();

Det enda jag tycker skiljer anrop från login från anrop från count är diverse echon i count. Och eftersom header-info sticker iväg från login efter anropet till countLogin() kan jag inte ha dom där när login körs... :x

Medlem sedan mars 20034 471 inlägg
#2

Åtskilligt felsökande senare...

Visade sig bero på något som inte syns ovan. :( Nämligen att jag hade en include_once av count.php inuti funktionen login(). Det fungerar tydligen inte...

Sensmoral: Man kan ha include-filer varsomhelst, bara inte i funktioner....

272 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)