Moi!
Tietääkö joku voinko välittää php:llä automaattisesti kaikki sivulle X annetut parametrit myös seuraavalle sivulle Y. Haluaisin tehdä tän ilman, että mun pitäis luetella ne kaikki parametrit taas uudelleen seuraavankin sivun linkin href kenttään.
Sessionit tai evästeet pevelelenevat tarkoituksiasi. Tai sitten käytät formia ja laitat ne piilokenttään talteen ja käytät post-metodia.
$_SERVER['QUERY_STRING'] sisältää koko hoidon joka esiintyy urlissa kysymysmerkin jälkeen.
Voisko juku vielä vähän neuvoa mua sessioneiden kanssa. Mä tein lällaisen systeemin:
Sivu1.php
<?php //stats the session session_start(); if($new_language=="fi"){ $_SESSION["language"] = "fi"; }else if($new_language=="en"){ $_SESSION["language"] = "en"; } if(!isset($_SESSION["language"])){ //setting value for language $_SESSION["language"] = "fi"; } if($id){ $_SESSION["person_id"] = $id; } ?>
Sitten kun siirryn linkistä sivulle sivu2.php niin siellä language arvo on taas tyhjä ja täten se alustetaan arvolla fi vaikka sivu1.php:ssä arvo on en.
Sitten kun palaan taas sivu1.php:lle niin language arvo on taas en. Mistä tämä johtuu? Miten sen saisi toimimaan niin, että jos sivu1.php:ssä vaihdetaan language arvo asentoon en, niin se olisi arvossa en myös sivulla sivu2.php.
Onhan sinulla myös sivu2.php:ssa tuo session_start()? Se pitää olla joka sivulla, jossa haluaa sessiomuuttujia käyttää.
Siis tuo sama koodinpatkä löytyy molemmilta sivuilta.
Mutta mikä toi on toi $new_language? Eihän tuota alusteta missään vaiheessa.
se on parametri mikä saadaan sivulle tultaessa, jos käyttäjä on vaihtanut kieltä.
Kerro myös jos tiedät helpon tavan muuttaa sessionin arvoa, kun painetaan linkkiä.
pistät linkin perään jonkun parametrin:
<a href='sivu.php?do=jotain'>linkki</a>
ja sit sivu.php:
if(isset($_GET['do']) && $_GET['do']=="jotain") $_SESSION['lerssi'] = 3;
Edit 2.5: Ja ei tueta niitä register_globalseja, vaan laitetaan $new_language:n tilalle $_GET['new_language'].
Jos tarkoitat $new_language -parametriä niin, ei. Se annetaan ainoastaa silloin kun käyttäjä on painanut linkkiä, joka muuttaa käytettyä kieltä. Siis mä käytän tossa just tota samaa tapaa muuttaa tota sessionia. Mä en vaan ota sitä tolla $_GET -jutulla vaan otan sen suoraan $new_language muuttujasta, koska mulla on määritelty päälle globaalit muuttujat.
Toi ei nyt kuitenkaan ole se mun pää ongelma, koska se ei mene tohon if hässäkkään, ellei kyseistä parametriä ole saatu.
Mun ongelma on se, että jostain syystä se kadottaa sivulla 1 asetetun en arvon tosta sessionista, kun mä siirryn linkin avulla toiselle sivulle. Eli se menee läpi tosta if lauseesta:
ja näin se alustaa sen arvoksi taas fi.
Kai muistat, että sessiot tarvistsevat evästeet toimiakseen.
Ja tuollaisen kielivalintajutun suosittelisin tekemään pelkän evästeen avulla. Huomattavasti nopeampaa ja yksinkertaisempaa kuin esim. sessioilla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.