Pystyykö Javascriptillä mitenkää suorittaan PHP scriptiä palvelimella?
Pystyy ainakin niin, että siirrät käyttäjän tuolle suoritettavalle php-sivulle.
Minkähänlaisesta tarpeesta olisi kyse, jos voisit hieman paljastaa, niin tuolle toteutuksellekin voisi löytyä järkevä tapa.
Ajax?
No kun teen sellasta PHP sivua jossa vois testata Javascriptiä nii sitä varten ettei kukaan sit pääsis yllättää =)
Kelpaisko <noscript></noscript> ? Jos selaimessa ei ole js tukea tai se on kytketty pois tulostetaan noiden tagien sisällä oleva juttu, eli siihen sitten "Sulla ei kultsi oo javascriptii nyt olleskaa päällä"..
Ups... No siis tarkotin, että siellä vois testata noita javascript koodeja. Esimerkkiksi alert("HEi!"); tai ihan mitä vaan javascript koodia. Ja että pystyykö sillä sitten suorittaan jotain PHP koodia palvelimella jotenkin kikkailemalla.
Ainakaan minulle ei tule mieleen tapaa, jolla PHP-koodia voisi suorittaa palvelimella pelkän JavaScriptin kautta.
Vapaamuotosta koodia ei (ellei jossain PHP-skriptissä ole turva-aukkoa), mutta olemassaolevan PHP-skriptin kutsuminen onnistuu XMLHttpRequestilla ("Ajaxilla").
Eikö tuo onnistuisi siten, että teet vaikka framen, johon se koodi aina kirjoitetaan ihan javascriptillä? Vaihtoehtoisesti voit pyöräyttää sen koodin php:n kautta, joka yksinkertaisesti tekee sivun jossa on se annettu koodi.
Jos nyt ymmärsin oikein, että mitä tässä oikein haluttiin..
Sitten voi (menee ehkä hieman aiheen ulkopuolelle) javascriptin avulla suorittamaan PHP funktioita / skriptejä.
Esimerkiksi javascriptin if lauseen avulla:
<script type="text/javascript"> function jos(var jos) { if (jos) // Mikäli jos on true { document.write("<?php $tottako=1";?>); } else { // Jos jos on false document.write("<?php $tottako=0;?>"); } } </script> </head> <body> ... ... <p onmouseover="jos(1);" onmouseout="jos(0);">BlaaBlaa</p> ... <?php function totta($mitenon) { if ($mitenon) echo "Totta"; else echo "Tarua"; } ?> <?php totta($tottako); ?> ... ... ...
Toimivuudesta en tiedä, en ole kokeillut.
Edit: On muuten v a r s i n mielenkiintoinen tuo väritys, kun nuo kooditagit ovat koodiphp & /koodiphp ;)
No ei todellakaan toimi tuo edellinen koodinpätkä :) Sivu on jo selaimella kun JavaScript suoritetaan eikä siinä paljon enää auta php-blokkeja kirjoitella.
Juu mutta siihen ku liittää päivityksen, niin käyttäjän hermot menee, mutta toimii :)
Silleen toimis, että jokaselle eri jutulle /arvolle oma php funktio, joita sitten tulostetaan javascriptin avulla.
No ei kyllä toimi. Pistäpäs esimerkkiä tuosta, voi olla että jompikumpi ymmärtää jotain väärin.
<script type="text/javascript"> function jos(var jos) { if (jos) // Mikäli jos on true { document.write("<?php totta();?>); } else { // Jos jos on false document.write("<?php tarua();?>"); } } </script> </head> <body> ... ... ... <?php function totta() { echo "Totta"; } function tarua() { echo "Tarua"; } ?> ... ... <p onmouseover="jos(1);" onmouseout="jos(0);">BlaaBlaa</p> ...
Edit: Ai katos prkl... eihän se toimikkaan, joskus olen sen nimittäin jotenkin saanut toimimaan ☺ ;)
Noh noh, nyt kyllä puhut läpiä päähäsi :) Et varmasti ole saanut moista toimimaan ikinä.
PHP on jo tehnyt työnsä kun käyttäjä sivun näkee. Javascriptiä sen sijaan käpistellään vielä (ja vasta silloin) kun sivu on jo ladattu. Käyttäjän syöttämää PHP-koodia et voi mitenkään suorittaa javascriptillä, ellei sitten itse PHP-koodissa ole jokin hirvittävä aukko (kuten vaikka <?php eval($_GET['komento']); ?> tai vastaava, tämäkään ei nyt suoraan liity mitenkään javascriptiin). Helpoiten hahmotat asian kun siirrät tuon koodin PHP-palvelimelle, ja katsot selaimella sen PHP:n tuottaman version tuosta. Sielähän noita <?php hommia ei näy laisinkaan.
Tuon koodinhan nyt periaattessa pitäisi tuottaa käsittääkseni ihan oikein "totta" ja "tarua" tekstit (paitsi että käytät funktioita ennen niiden määritystä?), ja tarua tekstiä ei taida ulos saada mitenkään, kerta linkki häviää heti kun hiiren vie linkin päälle.
Eli pähkinänkuoressa: ensin suoritetaan PHP, mitenkään riippumatta JS:stä. Sitten suoritetaan JS, mitenkään riippumatta PHP:stä (tai voi tietenkin riippua siitä mitä se PHP tulostaa).
Kiitos tiedosta. Nyt voin pitää huoletta pitää sivua kuhan ensiksi varmistan että mitään aukkoja koodista ei löydy =D.
Aihe on jo aika vanha, joten et voi enää vastata siihen.