Koetan hakea includella omaa tiedostoani parin get-muuttujan kanssa ja tulee ilmoitus:
Palveluntarjoaja siis tieten hylkää tällaiset kutsut? Olen yrittänyt tutkia kaikenlaisia vaihtoehtoja miten saisin sisällytettyä php-tiedoston get-muuttujien kanssa johonkin sivun kohtaan, mutta mistään ei tunnu löytyvän ratkaisua. Miten tällaisen toiminnon saisi suoritettua?
Ainakin joskus web hotellissa on asetus jota muuttamalla tämän saa itsekkin käyttöön. Jos mahdollista niin älä sisällytä 'http://':ta includeen vaan pelkästään
$sivu = $_GET['sivu']; if (in_array($sivu,array('sivu1','sivu2))) include "sivut/$sivu" . ".php";
Toki voit etsiä aukkoja palveluntarjoajan estotoimista (esim. katsoa, onko myös socket-kikkailut estetty), mutta jos esto on tarkoituksellinen ja huolella toteutettu, et voi asialle mitään.
Lisäksi ihmettelen, onko tarkoituksesi oikeasti ajaa vieraalta palvelimelta koodia vai halusitko vain ladata ja näyttää tulosteen. PHP-tiedoston lähdekoodia et saa ladattua millään (edes includella); sen sijaan include ajaisi tuossa tapauksessa skriptin tulosteen, mikä on harvoin tarkoitus.
Ellen väärin ole ymmärtänyt, http:// täytyy sisällyttää includeen, jos haluaa tuoda sivun get-muuttujien kanssa. Includea en siis voi tähän tarkoitukseen käyttää, koska palveluntarjoaja estää sen.
Metabolix, en usko, että minulla osaaminen riittää minkäänlaiseen estotoimien aukkojen etsimiseen. En edes tiedä mitä nuo socket-kikkailut ovat.
Metabolix kirjoitti:
PHP-tiedoston lähdekoodia et saa ladattua millään (edes includella)
Ei liity kysymykseeni, mutta eikö file_get_contents -functiolla saa PHP-tiedoston lähdekoodin esille. Kyseistä funktiota kokeillessani näin ainakin pääsi käymään.
Tarkoitukseni todellakin on ajaa scriptin tuloste. Tämä kikkailu on kylläkin vain tällainen väliaikaisratkaisu eikä ratkaisun löytäminen ole elinehto koodauksilleni.
AkeMake kirjoitti:
Metabolix kirjoitti:
PHP-tiedoston lähdekoodia et saa ladattua millään (edes includella)
Ei liity kysymykseeni, mutta eikö file_get_contents -functiolla saa PHP-tiedoston lähdekoodin esille. Kyseistä funktiota kokeillessani näin ainakin pääsi käymään.
Varmaankin puhut nyt paikallisesta tiedostosta etkä netistä lataamisesta.
Juu, paikallisesta oli kyse. Netissä tämä ei siis onnistuisi. :P Ei taida olla mahdollista tuo php-tiedoston sivulle hakeminen get-muuttujien kanssa? Hiukan erikoista, ettei tuollainen onnistu, mutta ei kai sellaista normaalisti tarvitakaan.
AkeMake kirjoitti:
Ei taida olla mahdollista tuo php-tiedoston sivulle hakeminen get-muuttujien kanssa?
Siis onnistuuhan se, jos sitä ei ole estetty. Totesit itsekin alussa, että sinun palvelimellasi se on kuitenkin estetty. Oliko tässä vielä jotain epäselvää?
Jos maagisesti kuitenkin file_get_contents toimii nettiinkin päin eikä evalia ole estetty, voit ladata koodin ja ajaa sen evalilla.
Luultavasti kuitenkin tajusit minun tarkoittaneen, ettei se onnistu minun tapauksessani. Ei olisi tarvinnut irroittaa kysymystä asiayhteydestä.
Eikä tarvitse ehdotella näitä maagisia vaihtoehtoja, kun minä en osaa taikoa. :)
Edit:
Noo.. Tuo tokaisuni "Hiukan erikoista, ettei tuollainen onnistu..." oli kyllä vähän ajattelematon. Kyllähän se onnistuisi sillä includella, jos onnistuisi.. :P Mutta ei löydy mitään kiertoreittiä toteuttaa sitä?
Lisää edittiä:
Ei minulla tule hirveästi taas ajateltua asioita. Kyllähän minä sen php-tiedoston get-muuttujien kanssa saan tosiaan haettua file_get_contents:llä, mutta ainoastaan netissä. Sitten kun haluan MAMP:ssa samaa, niin täytyy kikkailla muulla tavoin, jotta saa samantyylisen lopputuloksen. Pääasia oli kuitenkin, että netissä pelittää.
AkeMake kirjoitti:
Mutta ei löydy mitään kiertoreittiä toteuttaa sitä?
Johan olen kahta ehdottanut: eval(file_get_contents($osoite)) ja toinen vastaava, jossa file_get_contentsin tilalla on itse kyhätty hakufunktio, joka käyttää socketteja. Jälkimmäisen toteuttamiseen löytyy malli ihan PHP:n manuaalista.
AkeMake kirjoitti:
Kyllähän minä sen php-tiedoston get-muuttujien kanssa saan tosiaan haettua file_get_contents:llä, mutta ainoastaan netissä. Sitten kun haluan MAMP:ssa samaa, niin täytyy kikkailla muulla tavoin, jotta saa samantyylisen lopputuloksen.
Onko tämä MAMP siis omalla koneellasi? Silloinhan voit itse säätää niitä palvelimen asetuksia. Taas kerran PHP:n manuaalista selviää, mitä pitäisi muuttaa.
Minulle jäi nyt sellainen kutina, että Ake yrittää includettaa samalla koneella olevaa skriptiä netin yli, jotta saisi syötettyä sille muuttujia. Olenhan väärässä?
Metabolix kirjoitti:
Johan olen kahta ehdottanut: eval(file_get_contents($osoite)) ja toinen vastaava, jossa file_get_contentsin tilalla on itse kyhätty hakufunktio, joka käyttää socketteja.
Ensimmäistä en saanut koneellani toimimaan. Sen sijaan netissä tuo toimi ilman evalia. Jälkimmäinen näyttää näin aluksi liian vaikealta alkaa opiskella, kun tämä ongelma ei edes ole niin vakava, että vaatisi ratkaisua.
Metabolix kirjoitti:
Onko tämä MAMP siis omalla koneellasi? Silloinhan voit itse säätää niitä palvelimen asetuksia.
On. Voisin säätää jos osaisin. Olen kyllä yrittänyt etsiä mistä niitä voi muuttaa, mutta en vain osaa eikä missään vaiheessa ole tullut vastaan niin kriittistä tilannetta, että asetuksia olisi aivan pakko opetella muuttamaan.
The Alchemist, olet väärässä. Yritin kyllä includettaa samalla koneella olevaa scriptiä, mutta en netin yli. Netissä olevassa tiedostossa koetin includettaa samalla palvelimella sijaitsevaa tiedostoa ja koneella olevassa versiossa koneella sijaitsevaa tiedostoa.
AkeMake kirjoitti:
Sen sijaan netissä tuo toimi ilman evalia.
Tästä nyt päästiin takaisin siihen alkupuolella kysymääni asiaan, että oliko tarkoitus suorittaa PHP-koodia vai vain lukea skriptin tuloste. Ilmeisesti tarkoitus ei sittenkään ollut suorittaa koodia vaan lukea se tuloste, vaikka olet kovasti väittänyt muuta.
Väännän vielä rautalangasta:
Skripti (eli tiedoston todellinen sisältö):
<?php echo "<?php tässä on virhe";
Skriptin tuloste:
<?php tässä on virhe
Skriptin tulosteen ajaminen:
Parse error: syntax error, unexpected T_STRING in - on line 1
Minkä näistä kolmesta haluat saada aikaan?
AkeMake kirjoitti:
mutta en netin yli
HTTP = "netin yli".
Jos tiedosto on samalla palvelimella, sen hakeminen HTTP:llä on yleensä väärä ratkaisu. Mikset vain laita tiedoston toimintoja johonkin funktioon, jota sitten voit kutsua sopivilla parametreilla?
En näköjään ole kunnolla ymmärtänyt mitä ovat skripti, skriptin tuloste ja skriptin tulosteen ajaminen. Rautalankamalli selkeytti sopivasti näiden eroa. Haluan siis saada ulos skriptin tulosteen. :) Sain netissä halutun tuloksen aikaiseksi tuolla HTTP-file_get_contents:lla ja koska en koneella saanut vastaavaa aikaiseksi niin hain sen saman netissä olevan tiedoston edelleen HTTP-file_get_contents:lla. Pääasia nyt kuitenkin oli, että sain sen skriptin tulosteen sivulle; olkoonpa sitten netistä tai koneelta.
Metabolix kirjoitti:
HTTP = "netin yli".
Oikeastaan minun olisi pitänyt tuo tietää, mutta jostain syystä ajatukset eivät kulje. Yritin siis kuitenkin hakea netin yli. :S
Metabolix kirjoitti:
Mikset vain laita tiedoston toimintoja johonkin funktioon, jota sitten voit kutsua sopivilla parametreilla?
Sivu, jota teen menee erään nettikaupan sivupohjaksi ja se pyörii erään verkkokauppaohjelman päällä. Kyseinen ohjelma ei hyväksy php-tiedostoja, joten ainoa tapa, jolla voin sivuille koodailla php:tä on kirjoittaa php-tiedostot toiselle palvelimelle ja hakea omalla tagilla halutun sivun sisältö sieltä. Tämä oma tagi siis lähettää halutut GET kutsut sinne ulkopuoliselle sivulle ja tulostaa saadun skriptin tulosteen (html:ää) verkkokaupan sivulle. Olisin vain koettanut hakea kyseisen tulosteen nyt kun sivupohja ei vielä ole verkkokaupassa enkä siis voi sitä tagilla hakea.
AkeMake kirjoitti:
Sivu, jota teen menee erään nettikaupan sivupohjaksi ja se pyörii erään verkkokauppaohjelman päällä. Kyseinen ohjelma ei hyväksy php-tiedostoja, joten ainoa tapa, jolla voin sivuille koodailla php:tä on kirjoittaa php-tiedostot toiselle palvelimelle ja hakea omalla tagilla halutun sivun sisältö sieltä. Tämä oma tagi siis lähettää halutut GET kutsut sinne ulkopuoliselle sivulle ja tulostaa saadun skriptin tulosteen (html:ää) verkkokaupan sivulle. Olisin vain koettanut hakea kyseisen tulosteen nyt kun sivupohja ei vielä ole verkkokaupassa enkä siis voi sitä tagilla hakea.
Sopiiko kysyä, että mikä ohjelma pyörii taustalla? Onko ohjelmalla olemassa ns. developer-sivua, jossa olisi dokumentoitua tietoa softasta?
Sopii kysyä. Kyseinen ohjelma on MyCashflow.
Haistan koko järjestelmän kaatumisen in 3... 2... 1...
AkeMake: Älä yritä edes sitä ja hyväksy vain verkkokauppasoftan omat rajoitukset ja elä niiden kanssa.
edit:
Eri asia on taas verkkokaupat, jotka vaikka pohjautuvat avoimeen lähdekoodiin ja joiden lähdekoodi ei ole suljettu.
MyCashFlow:n muokkaus perustuu "html"-sivupohjien ja css-tiedostojen muokkaamiseen ja asetusten vaihteluun. Älä siis turhaan yritä muutella sitä, saat vain verkkokauppasi rikki seuraavan päivityksen ilmaantuessa, sillä niitäkin saattaa tulla useampi peräkkäin.
Hetkinen nyt.. Eihän tämä mikään MyCashflown rajoitus ole. MyCashflow antaa mahdollisuuden tällaisten omien tagien tekemiseen sellaisissa tapauksissa, että haluaa koodata sivuille jotain monipuolisempaa kuin mitä html:n ja css:n avulla saa.
http://www.mycashflow.fi/interface/Interface tagien ohjelmointi
Tuollaisen purkkaviritelmän tarjoaminen ensisijaisena laajennuskeinona vie kyllä uskon koko verkkokauppaan. En varmaan uskaltaisi käyttää.
Edit: Tarkemmin katsoen kyseessä ei olekaan ohjelmisto vaan ulkoinen palvelu. Siinä tapauksessa viritelmässä on ehkä jotain rajallista järkeä. Kuitenkin jos tuota virittelyä tulee paljon, voisi olla helpompaa vain hankkia verkkokauppa kokonaan omalle palvelimelle.
Aihe on jo aika vanha, joten et voi enää vastata siihen.