Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: sessioni ei toimi

Sivun loppuun

eija [25.08.2009 18:25:40]

#

Laitan tiedoston alkuun:

start_session();

Sitten määrittelen

$_session["£aihenro"] = $aihenumero; //$aihenumero muuttujan arvo on 0 (printtasin)

Sitten käytän toisessa tiedostossa:

start_session();
$aihenro = $_session[$aihenro];

printtaamalla saan selville, että $aihenro = NULL

MIB [25.08.2009 18:27:27]

#

Korvaa start_session() session_start()-funktiolla. Mielestäni tuollaista start_sessio()a ei olekkaan.

Muistaakseni tuo kahden tiedoston käyttö tekee sen, että jokaisella sivulla on omat sessionit, jolloin pitää tehdä yksi tiedosto lisää:

<?php
//esimerkiksi ylaosa.php

//Tätä ennen ei saa tulostaa HTML:ää!
session_start();

//Määritetään sessionit
$_SESSION["huudahdus"] = "Jepadapaduu";
$_SESSION["nimi"] = "Pekka";
?>
<?php
//Sivu1.php

//Includetaan ylaosa.php
include("ylaosa.php");

echo $_SESSION["huudahdus"];
?>
<?php
//Sivu2.php

//Includetaan ylaosa.php
include("ylaosa.php");

echo $_SESSION["nimi"];
?>

trilog [25.08.2009 18:33:14]

#

Jännää tässä on miksi suoritus jatkuu, vaikka funktiota ei löydy. Vai onko tuo joku oma funktiosi?

MIB [25.08.2009 18:36:50]

#

trilog kirjoitti:

Jännää tässä on miksi suoritus jatkuu, vaikka funktiota ei löydy. Vai onko tuo joku oma funktiosi?

Jospa palvelimella on display_errors pois päältä?

trilog [25.08.2009 18:38:13]

#

MIB kirjoitti:

trilog kirjoitti:

Jännää tässä on miksi suoritus jatkuu, vaikka funktiota ei löydy. Vai onko tuo joku oma funktiosi?

Jospa palvelimella on display_errors pois päältä?

Käsittääkseni suoritus silti pystähtyy fatal erroriin, ilmoitusta ei vain näytetä.

MIB [25.08.2009 18:39:31]

#

Edit. Kaatuikin palvelimen sisäiseen virheeseen, 500. No, mutta ongelma korjaantuu, kun laittaa start_session() "funktion" laittaa session_start():ksi.

eija [25.08.2009 18:43:50]

#

Oli minulla koodissa tuo session_start() oikein kirjoitettuna. Kun näitä esimerkkejä katselen, niin tulee mieleen, että tuossa $aihenumero muuttujan sijoittamisessa $_SESSION -tauluun tulee jotain häikkää. Korjaantuukohan se jollain hipsuilla tai & tms. merkillä muuttujan edessä?


Tai laitetaanko tuo session_start() vain yhden tiedoston alkuun?

MIB [25.08.2009 18:45:11]

#

En tiedä, voiko sessionin nimessä olla tuota £ merkkiä, koita ottaa se pois.
Koita myös tehdä tuolla aikaisemmin ehdottamalla tavallani.

eija kirjoitti:

Tai laitetaanko tuo session_start() vain yhden tiedoston alkuun?

Kyllä (?).

eija [25.08.2009 19:14:45]

#

Tässä on nyt ongelma selvinnyt jonkin verran.(minulla on netti ja koodi eri koneilla, niin tähän on tullut kirjoitusvirheitä. Tuota £ -merkkiä en ole käyttänyt.

Kun koodaan

$_session["aihenro"] = $aihenumero;

sijoitan muuttujaan $aihenro muuttujan $aihenumero, enkä sen muuttujan $aihenumero arvoa, kuten pitäisi. (Eli kun otan tuolta taulukosta $aihenro muuttujalle arvon, se on $aihenumero eikä $aihenumeron arvo, joka on numeerinen)

Nyt testailin ja mokani selvisi.

Täytyy laittaa:

$_SESSION["aihenro"] = "$aihenumero";

niin menee oikein.

Kiitokset avuista.

Metabolix [25.08.2009 19:32:55]

#

Olet luultavasti kirjoittanut jotain väärin, ja viimeisimmässä viestissäsi taas puhut aivan kummia. Tekstillä "aihenro" ei ole mitään tekemistä muuttujan $aihenro kanssa.

<?php
session_start();
$nimi = "Pekka";

$luku = 10;
$_SESSION["xyz"] = 123;
$_SESSION[$nimi] = $luku;
// $_SESSION["Pekka"] = 10, koska $nimi === "Pekka" ja $luku === 10.
<?php
session_start();
$nimi = "Pekka";

$luku = $_SESSION[$nimi];
echo $luku; // 10
echo $_SESSION["Pekka"]; // 10
echo $_SESSION["xyz"]; // 123

// Nopea keino selvittää, mitä istunto sisältää:
var_dump($_SESSION);

eija [25.08.2009 19:42:19]

#

Joo. Tuossa tuo

$_SESSION[$NIMI] = $LUKU;

paikalle laittaisin minun php versiossa ...="$LUKU" eli siis lainausmerkkeihin. Kokeilepa, mitä tulee, jos echoat

echo $_SESSION[$nimi];

veikkaan, että tulos ei ole Pekka.

Tuo var_dump vihje on todella tarpeen.

Metabolix [25.08.2009 20:08:03]

#

eija kirjoitti:

laittaisin minun php versiossa ...="$LUKU"

Miksi ihmeessä? Tuosta ei ole yhtikäs mitään hyötyä, teoriassa mahdollisesti jopa haittaa.

eija kirjoitti:

veikkaan, että tulos ei ole Pekka.

Ei tarvitse kokeilla, kun tiedän tasan tarkkaan, että se on 10, kuten edellisessäkin viestissäni joka kerta sanon. (Tietenkin sillä edellytyksellä, että $nimi on "Pekka".)

tsuriga [25.08.2009 21:19:09]

#

Muuttujiahan ei tarvitse turhaan sulkea lainausmerkkien sisään, PHP kun on dynaamisesti tyypitetty. Ts. tyyppi on sidottu muuttujan arvoon, ei muuttujaan. Ts. PHP muuttaa tyypin automaagisesti tarvittaessa, esim. string(2) "10" * int(2) = int(20) (var_dumpin notaatiolla).


Sivun alkuun

Vastaus

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

Tietoa sivustosta