Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Include ja parametrit skriptistä toiseen

Sivun loppuun

Paulus M [20.10.2009 14:51:36]

#

Sori ku joudun vaivaa tälläisilla tyhmillä kysymyksillä, mutta ku nettiä selattaessa tulee monesti oppittua väärin.

Eli, miten välittää php scriptiltä toiselle parametrejä? Onko pakkoo käyttää/tai viisainta GET tai POST metodeja?

Eli mun pitäisi tehdä seuraavaa:

<?php
plaa plaa...
$x = $y + 1;
include "/dfsdf/toinenscripti.php"; //ja välitä parametri x?
plaa..plaa
?>

joudun incluudaamaan toisen filen vain, koska dokumentointi helpottuisi. Eli toinen scripti suoritetaan, mutta selaimeen ei edes saa tulla mitään muutoksia.

ankzilla [20.10.2009 14:59:13]

#

Ekaksi, sulla on tuo koodi ihan ******...

<?php
$x = $y + 1;
include("/dfsdf/toinenscripti.php");
?>

Sit käytät vaikka sessioneita/evästeitä, mitä nyt ikinä haluatkaan tehdä.

Edit: Jaa korjasitkin jo.. :P Kandee varoa sen entterin kanssa ;)

Paulus M [20.10.2009 15:14:34]

#

Eli GET, POST, sessio tai eväste on vaihtoehdot?

EDIT: mitä suosittelet tähän tilanteeseen, toinenscripti tekee lähinnä vai pelkkää algoritmiä ja kenties palauttaa jotain?

tsuriga [20.10.2009 16:00:56]

#

Include on komentorakenne, ei funktio, joten sen parametrin ympärille ei tarvitse laittaa sulkuja. Sen toimintalogiikkaa selvitetään tarkemmin manuaalissa. Itse tilanteeseen sanoisin, että valota hieman tarkemmin tarkoitusperiäsi niin on helpompi vastata. Alustavasti suosittelen olioita ja parametrejä.

Paulus M [20.10.2009 17:45:02]

#

No tarkoitusperä on lisätä koodia siten, että koodiin tulee vain yksi include rivi lisää. Tämä käsky tuli ylemmältä taholta ja sen takia en voi laittaa funktioita ja oliota, vaan kaikki mun tekemät muutokset pitää löytyä erillisestä filestä.

tsuriga [20.10.2009 18:12:19]

#

Emmää kyllä vieläkään hahmota, että mikä ongelma tässä on. Tai että mikset voisi käyttää funkkareita ja olioita, koska muutokset pitää löytyä erillisestä tiedostosta.

herra_ylikersantin_koodit.php

<?php
include 'pauluksen_koodit.php';
?>

pauluksen_koodit.php

<?php
class A {
    public function bar() { }
}
?>

Toki jos skriptit pyörivät eri palvaimilla niin sitten sitä gettiä (haettaessa tietoa) tai postia (tehtäessä muutoksia tietoihin) tilanteen mukaan. Suluissa yleisesti ottaen, mutta poikkeuksia on.

Paulus M [20.10.2009 19:10:24]

#

Mutta mites tuossa esimerkissä nyt välitetään muuttujia? Eli pitäisi saada vielä tolle bar funktiolle tai luokka A:lle tavaraa tuolta ylikersantin php:ltä, esim toi $x muuttuja, joka on ensimmäisessä esimerkissäni.

Eli nyt on scriptit samalla palvelimella, eli ei tartte käyttää gettejä ja posteja?

Grez [20.10.2009 19:25:40]

#

No sehän välittyy ihan pyytämättäkin. Nehän on käytännössä yksi ja sama skripti.

tsuriga [20.10.2009 20:32:18]

#

Kirjoitin tästä jo aiempaan viestiin esimerkin, mutta koska asia on hieman monimutkaisempi näkyvyysalueiden kanssa, pyyhin esimerkin ja linkitin suosiolla manuaaliin. Katso manuaalin Esimerkki #2 ja tee muutamia testikoodeja.

Jos haluat käyttää yleisen näkyvyysalueen muuttujia funktioissasi/metodeissasi niin muuttujat tulee ensin tuoda uuteen näkyvyysalueeseen käyttämällä avainsanaa global.

ylikersantti.php

<?php
$a = 'a'; // $a on määritelty yleisessä näkyvyysalueessa
function foo()
{
    $b = 'b'; // $b on määritelty yleisen funktion foo() näkyvyysalueessa
}
include 'paulus.php';
?>

paulus.php

<?php
echo $a; // "a"
function bar()
{
    global $a;
    echo $a; // "a"
}
class Baz
{
    public function foo()
    {
        global $a;
        echo $a; // "a"
        global $b;
        echo $b; // "", koska b ei ole julkinen muuttuja
    }
}
?>

Paulus M [21.10.2009 15:42:50]

#

Aivan, eli kiitoksia, enpä osannut arvata, että muuttujat ovat jo defaulttina globaaleja molemmissa scripteissä.

Grez [21.10.2009 15:45:46]

#

Paulus M kirjoitti:

Aivan, eli kiitoksia, enpä osannut arvata, että muuttujat ovat jo defaulttina globaaleja molemmissa scripteissä.

Siksi onkin dokumentaatio, ettei tarvitse arvailla..

Paulus M [21.10.2009 16:48:14]

#

Totta :D, pitäisi vaan tietää mistä kohdin lukea.

Grez [21.10.2009 16:53:56]

#

Ihan loogisesti löytyy kohdasta variables scope
https://www.php.net/manual/en/language.variables.scope.php


Sivun alkuun

Vastaus

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

Tietoa sivustosta