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
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"; ?>
Jännää tässä on miksi suoritus jatkuu, vaikka funktiota ei löydy. Vai onko tuo joku oma funktiosi?
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ä?
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ä.
Edit. Kaatuikin palvelimen sisäiseen virheeseen, 500. No, mutta ongelma korjaantuu, kun laittaa start_session() "funktion" laittaa session_start():ksi.
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?
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ä (?).
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.
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);
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.
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".)
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).
Aihe on jo aika vanha, joten et voi enää vastata siihen.