PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
sessioon ja mõistus otsas
Postitaja: mumuu 2010-07-26 20:45:54

PHP kood:
 
public 
function getMessages(){
$msg $_SESSION['messages'];
unset(
$_SESSION['messages']);
return 
$msg;
}


idee on siis selles, et ma saaks tagasi sessiooni seatud teated ja peale seda resettida vastav muutuja.

Probleem on aga selles, et kaduma läheb ka $msg.


PHP kood:
 
public 
function getMessages(){
$msg $_SESSION['messages'];
return 
$msg;
}


nõndaviisi on kõik korras. Mõistus täitsa otsas, mis imet ma pean siis tegema, et saada $_SESSION['messages'] teise muutujasse nii et ma saaks $_SESSION[messages] nulli lüüa ja seal varem asunud muutujad oleks uues muutujas $msg ...
RE: sessioon ja mõistus otsas
Postitaja: tsahh 2010-07-26 22:34:37
$msg = $_SESSION['messages']. ' ';
nii äkki ?

RE: sessioon ja mõistus otsas
Postitaja: 0010101 2010-07-26 22:42:08
Paistab täiesti tip-top kood. Ise olen ka nii teinud ja siiani on töödanud. Proovisin igaks juhuks veel üle ja minu PHP 5.3.2 versiooniga töötab.


PHP kood:
 
<?php

class Trivial{

  
public function __construct(){
    
session_start();
    
$_SESSION['messages'] = array("foo","bar","baz","bat");
  }

  
public function getMessages(){ 
    
$msg $_SESSION['messages']; 
    unset(
$_SESSION['messages']); 
    return 
$msg
  }

}

$t = new Trivial();

array_map(function($line){ 
  echo 
$line PHP_EOL;
},
$t->getMessages());

?>
RE: sessioon ja mõistus otsas
Postitaja: mumuu 2010-07-26 23:02:55
TSITEERITUD:
$msg = $_SESSION['messages']. ' ';
nii äkki ?



messages on massiiv ... ja mis se tühiku lõppu lisamine aitab? et pole päris identne enam ... hmmm.

Mul on endal kuri kahtlus, et seda funktsiooni kusagil kutsutakse veel välja ilma outputi andmata ja sellest säärane mure. Igatahes väga haige probleem. Ei aita mind ka selle muutuja reseti tõstmine üldse sellest meetodist väljapoole. TUlemus on ikka sama. Ükskõik kus ma unseti teen, lakkab see massiiv olemast.

Mul on index.php fail läbi mille siis kõik requestid ruuditakse. Seal on umbes selline konstruktsioon sees


PHP kood:
 
if ($_REQUEST['context'] != 'ajax') {    
print 
$APPLICATION->getPage('index.tpl.php');
}


isegi kui ka teen sessioonimuutuja unseti selle faili viimase asjana, kui kogu leht on juba välja "sülitatud" on tulemus sama. KUidas selline asi üldse võimalik on ma ei saa aru :D

eee. sellest mõttekäigust vist oli abi. ma olen ikka ise sooda .... osad kontrollerid teevad header ümbersuunamise tavalise lehe kuvaminse kontekstis, loomulikult järgmisel lehel ei saagi enam olla vastavaid muutujaid olemas (dumb-dumb-dumb miiiii).




RE: sessioon ja mõistus otsas
Postitaja: kalavana 2010-07-26 23:54:41
TSITEERITUD:

PHP kood:
 
public 
function getMessages(){
$msg $_SESSION['messages'];
unset(
$_SESSION['messages']);
return 
$msg;
}




Provi natsa debugida

PHP kood:
 
public 
function getMessages(){
$msg $_SESSION['messages'];
unset(
$_SESSION['messages']);
print 
$msg "test <br>";
return 
$msg;
}


Vaata mitu korda seda test kirja näed ;)
RE: sessioon ja mõistus otsas
Postitaja: blaa 2010-07-27 00:42:30
aga pane session_start() ka kuskile koodi algusesse, see on 90% sessioonijamade lahenduseks
RE: sessioon ja mõistus otsas
Postitaja: mumuu... 2010-07-27 01:51:11
TSITEERITUD:


Provi natsa debugida

PHP kood:
 
public 
function getMessages(){
$msg $_SESSION['messages'];
unset(
$_SESSION['messages']);
print 
$msg "test <br>";
return 
$msg;
}


Vaata mitu korda seda test kirja näed ;)


sai proovitud, tulemus sama - juhe täiesti kokku jooksis. Tegelik probleem oli selles, et "kodukootud" MVC implemetatsioonis controller suunas edasi. Aga output tehti enne valmis. Nüüd controlleris ümbersuunamine oli tehtud enne väljundi kuvamist, AGA (lubamatult) peale selle genereerimist.

Seega vahepeal genereeriti läbi templiidisüsteemi kogu lehe output valmis ja siis controller suunas headeriga edasi, ning kogu output genreeriti uuesti. Selleks ajaks aga oli sessioonimuutuja juba ammu tühi.

Ehk siis tuli luua kontektst, kus edasisuunav kontroller action outoputi ei genereeri (mis on ju nö "normaalne") ja saigi kõik korda.
Kusagil kuklas see nagu koputas ka, aga siia kirjutamisega jõudis probleem aktiivse mõtte kihti :D

Ehk siis tegelikult puhas loogika praak või lohakus. Loogiline ju on, et kui outpouti ei vajata, siis teda ka ei genereerita....






Leheküljed: 1

©2002-2010 Martin Rebane & PHP.ee kaasautorid
  0.661347150803