Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: parametrien välitys

Sivun loppuun

kk65926 [06.04.2004 08:36:34]

#

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.

ajv [06.04.2004 08:47:04]

#

Sessionit tai evästeet pevelelenevat tarkoituksiasi. Tai sitten käytät formia ja laitat ne piilokenttään talteen ja käytät post-metodia.

leftover [06.04.2004 09:34:29]

#

$_SERVER['QUERY_STRING'] sisältää koko hoidon joka esiintyy urlissa kysymysmerkin jälkeen.

kk65926 [06.04.2004 11:32:47]

#

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.

Olga [06.04.2004 12:19:07]

#

Onhan sinulla myös sivu2.php:ssa tuo session_start()? Se pitää olla joka sivulla, jossa haluaa sessiomuuttujia käyttää.

kk65926 [06.04.2004 13:59:51]

#

Siis tuo sama koodinpatkä löytyy molemmilta sivuilta.

Olga [06.04.2004 14:47:13]

#

Mutta mikä toi on toi $new_language? Eihän tuota alusteta missään vaiheessa.

kk65926 [06.04.2004 15:03:18]

#

se on parametri mikä saadaan sivulle tultaessa, jos käyttäjä on vaihtanut kieltä.

kk65926 [06.04.2004 15:04:55]

#

Kerro myös jos tiedät helpon tavan muuttaa sessionin arvoa, kun painetaan linkkiä.

Olga [06.04.2004 15:09:09]

#

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'].

kk65926 [06.04.2004 15:24:05]

#

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:

if(!isset($_SESSION["language"])){
//setting value for language
$_SESSION["language"] = "fi";
}

ja näin se alustaa sen arvoksi taas fi.

folio [06.04.2004 19:45:54]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta