Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: JavaScript: Linkin kautta POST-lähetys

siirappi [27.07.2006 09:59:55]

#

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>

Quirzo [27.09.2006 21:39:23]

#

Katos en tiennytkään että javascriptillä voi tehdä tuollaisiakin :o
Hyvää työtä

punppis [11.10.2006 23:36:22]

#

Eikös saman voisi tehdä:

<a href="sivu.php?muuttuja1=arvo&muuttuja2=arvo&muuttuja3=arvo">Lähetä</a>

->

$_GET['muuttuja1'] = arvo

moptim [16.05.2007 20:03:17]

#

Ymmärsinkö oikein, että tähän voi tunkea päälle vielä MD5-summaukset ym., jolloin salaamattomia salasanoja ei kulkisi verkon yli?

Malfunc [13.09.2007 13:46:16]

#

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!

Short Php [08.12.2008 18:54:54]

#

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&sourceid=chrome&ie=UTF-8&q=javascript md5

Vastaus

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

Tietoa sivustosta