Funktion avulla voi lähettää esimerkiksi linkin avulla POST-lomaketietoja. Funktio ottaa määräämättömän määrän parametrejä, joten sillä voi lähettää hieman suurempiakin määriä tietoa. Funktiota käytetään siten, että joka toinen parametri on muuttujan nimi ja sitä seuraava parametri on muuttujan haluttu arvo.
Esimerkki linkistä:
<a href="javascript:laheta('sivu.php', 'muuttuja1', 'arvo1', 'muuttuja2', 'arvo2', 'muuttuja3', 'arvo3')">Lähetä</a>
Käyttäjän klikattua linkkiä, esim. PHP:lla on helppo hakea muuttujien arvot $_POST-taulukosta.
<?php echo($_POST["muuttuja1"]); // arvo1 echo($_POST["muuttuja2"]); // arvo2 echo($_POST["muuttuja3"]); // arvo3 ?>
Ei tätä varmaan missään hirveän arkaluontoisissa projekteissa kannata käyttää, mutta pienemmissä omissa projekteissa voi olla ihan hyödyllinen. 8-)
<script type="text/javascript"> function laheta(sivu) { // Luodaan uusi lomake var lomake = document.createElement("form"); // asetetaan kohdeosoite lomake.action = sivu; // asetetaan metodiksi POST lomake.method = "post"; // Käydään läpi funktion loput parametrit for (var i = 2; i < arguments.length; i += 2) { // Luodaan uusi kenttä var kentta = document.createElement("input"); // Piilotetaan kenttä kentta.type = "hidden"; // Asetetaan kentälle nimi kentta.name = laheta.arguments[i - 1]; // Asetetaan kentälle arvo kentta.value = laheta.arguments[i]; // Liitetään kenttä lomakkeeseen lomake.appendChild(kentta); } // Liitetään lomake sivuun document.body.appendChild(lomake); // Lähetetään lomake lomake.submit(); } </script>
Katos en tiennytkään että javascriptillä voi tehdä tuollaisiakin :o
Hyvää työtä
Eikös saman voisi tehdä:
<a href="sivu.php?muuttuja1=arvo&muuttuja2=arvo&muuttuja3=arvo">Lähetä</a>
->
$_GET['muuttuja1'] = arvo
Ymmärsinkö oikein, että tähän voi tunkea päälle vielä MD5-summaukset ym., jolloin salaamattomia salasanoja ei kulkisi verkon yli?
punppis: Tuo sinun tekniikkasi lähettäisi tiedot PHP:n $_GET taulukkoon, ei $_POST taulukkoon. Näillä kahdella taulukolla on sellainen ero, että get näkyy sivun osoitepalkissa, mutta post on ikään kuin "näkymätön".
moptim: Juuri kuten punppikselle, post taulukko ei näytä tietoja missään. Ne tosin tietääkseni lähtevät palvelimelle suojaamattomina. HTTP protokolla kyllä tietääkseni sisältää jonkinnäköisen enkoodauksen. JavaScript ei omasta mielestäni tue MD5 enkoodausta tai mitään muutakaan suojaustapaa, mutta sellaisen voi aina itse tehdä. Se tosin saattaa vaatia vähän aikaa...
Oma kommenttini on tämä, että oikeastaan funktiohan luo dokumenttiin HTML DOM:illa uuden lomakkeen ja lähettää sen. Miten "dynaaminen" pitäisi sitten tulkita?
No. Itse jokatapauksessa kirjoitan JavaScriptiä, mutta en ollut ikinä ajatellut tällaista tekniikkaa. Todella kätevä se kuitenkin on!
Malfunc kirjoitti:
JavaScript ei omasta mielestäni tue MD5 enkoodausta tai mitään muutakaan suojaustapaa, mutta sellaisen voi aina itse tehdä. Se tosin saattaa vaatia vähän aikaa...
Miksi tehdä itse kun on google :P
http://www.google.fi/search?rlz=1C1CHMZ_fiFI300
Aihe on jo aika vanha, joten et voi enää vastata siihen.