Prax3 lisamemo

Allikas: Lambda

Kolmanda praksi memo: 16 nov kaugõppe loeng

Erinevad teemad.

Mis järjekorras praksi teha

  • "hello world"
 serverisse katseproge nimega
 sonad.py
 
 urlilt ..../sonad.py siis ta vastab ka
 
  • sonad.py annaks mulle teise praksi htmli muutmata kujul


 sonad.py loeb serverist prax3.html faili
 ja trükib selle välja
 
  • serveris segiaetud sona tegemine?
    • sonad.py teeb segiaetud sõna, ja katsetame, et tegelt töötab
    • ..... var segisona="ASENDASONA";
 sonad.py ASENDAB stringi ASENDASONA
 enda tehtud segiaetud sõnaga
 
 tahan kontrollida, kas sõna mis kokku ajasin,
 oli õige.
 
 Nupp juba on.
 
 Nime jaoks vormivälja 
 
 <form >
   <input type="text" name="nimi">
   
   <input type="submit">
 </form>
 
 
  • server peaks faili kirjutama

Kaks äärmusvarianti veebirakenduse jaoks

  • serveriproge ehitab htmli valmis


  • ainult üks staatiline leht
 javascript sellelt lehel saadab
 data serverisse, loeb serverist datat,
 ja ehitab lehe htmli pidevalt ümber
 

Alternatiiv 1: vormilt data serverisse

Vaata http://dijkstra.cs.ttu.ee/~tammet/cgi-bin/loeng/tst8.py



sona="lennuk";

function insertword() {
  document.getElementByID("sona").value=sona;
  return true;
}

<form action="?" method="GET">
a <input type="text" name="nimi"></input><br>
b <input id="sona" type="hidden" name="sona"></input><br>
<input type="submit" onsubmit="insertword();">
</form>

Avab urli a la http://dijkstra.cs.ttu.ee/~tammet/cgi-bin/loeng/tst8.py?name=tanel&sona=lennuk


Alternatiiv 2: javascriptiga data serverisse


sona="lennuk";

function sendword() {
  var url;
  
  url="http://..../save.py?sona="+
    encodeURIComponent(sona)+"&name=";
  url=url+encodeURIComponent(
      document.getElementByID("nimi").value);
  document.location=url;
  

}

<form action="?" method="GET">
a <input id="nimi" type="text" name="nimi">jüri ü=&di</input><br>
</form>

<button onclick="sendword();">

Faili kirjutamine

Variant 1: /tmp kataloogis a la "/tmp/suva_tanel_tammet.txt"

Variant 2: tee oma kataloogi fail ntx sonad.txt ja siis tee

chmod a+rw sonad.txt


Cross-server javascript

Ei ole selles praksis vajalik. Aga, kui tahta kasutada, siis on kaks varianti:


  • Erinevad imemeetodid lahenduseks. Parem mitte nendega jännata.
  • Mainstream meetod toetub kahele vaalale:
    • padded json:
     - myfun({"name": "jaan", "age": 23});
     
     - ...&pad=myfun&
  
    • script tag injection
     <script src="...">
     

Hea mõte on kasutada jquery-t abiks.