{"id":240,"date":"2015-09-17T12:41:39","date_gmt":"2015-09-17T10:41:39","guid":{"rendered":"https:\/\/moijari.com\/?p=240"},"modified":"2015-09-20T13:54:17","modified_gmt":"2015-09-20T11:54:17","slug":"istuntomuuttujat","status":"publish","type":"post","link":"https:\/\/moijari.com\/?p=240","title":{"rendered":"Login"},"content":{"rendered":"<p>Haukkasin liian suuren palan edellisess\u00e4 postissa, vaikka suurin osa koodista olikin jo olemassa. Aloitan uudestaan login palalla. T\u00e4st\u00e4 puuttuu viel\u00e4 kenttien pituuksien rajoituiksia, t\u00e4m\u00e4 on vasta ensimm\u00e4inen versio. Salasanat ovat viel\u00e4 selv\u00e4kielisi\u00e4.<\/p>\n<p>T\u00e4t\u00e4 samaa rutiinia k\u00e4ytet\u00e4\u00e4n k\u00e4ytt\u00e4j\u00e4n tietojen tarkistuksessa, session id:n m\u00e4\u00e4rittelyss\u00e4 ja login n\u00e4yt\u00f6n tulostuksessa.<\/p>\n<p>Lis\u00e4sin loppuun viel\u00e4 html-parametrien k\u00e4sittelyn. Se on pala, joka muuttaa html-n\u00e4yt\u00f6n parametrit terttu muotoon. (katso userid ja password kent\u00e4t logon n\u00e4yt\u00f6ll\u00e4)<\/p>\n<p>Kaikki oikeudet tietenkin pid\u00e4tet\u00e4\u00e4n.<\/p>\n<pre>int get_session(char *sessionid)\r\n{\r\n int c,ok,comp;\r\n char userid2[32],password2[32],password3[32],bones[64];\r\n struct set *sets,*setp,*setusers;\r\n time_t now;\r\n unsigned char timebuf[128];\r\n\r\n ok=0;\r\n *sessionid='\\0';\r\n *userid2='\\0';\r\n *password2='\\0';\r\n sets=NULL;\r\n setusers=NULL;\r\n\r\n \/* luetaan html datasta sessionid *\/\r\n set_get_element(\"sessionid\",&amp;comp,sessionid,htmlparams);\r\n\r\n \/* Jos id l\u00f6ytyi, tarkistetaan istunnon olemassaolo *\/\r\n if(*sessionid!='\\0') {\r\n  if(exists_session_var(\"SESSION\"))\r\n    ok=1;\r\n  else\r\n    sessionid[0]='\\0';\r\n }\r\n\r\n\u00a0if(*sessionid=='\\0') {\r\n  \/* luetaan n\u00e4yt\u00f6lt\u00e4 k\u00e4ytt\u00e4j\u00e4tunnus ja k\u00e4ytt\u00e4j\u00e4n sy\u00f6tt\u00e4m\u00e4 salasana *\/\r\n  skk_fetch_sets(&amp;sets,\"'userid', 'password'\",setscreen); \/* ennen skk_fetch2() JariK 20150917 *\/\r\n\r\n  \/* N\u00e4it\u00e4 pareja l\u00f6ytyy vain yksi (katso lopun n\u00e4yt\u00f6n tulostus *\/\r\n  if(skk_count_sets(sets)==1) {\r\n   set_get_element(\"userid\",&amp;comp,userid2,sets-&gt;data);\r\n   set_get_element(\"password\",&amp;comp,password2,sets-&gt;data);\r\n  }\r\n\r\n  if(*userid2!='\\0' || password2!='\\0') {\r\n   \/* Haetaan m\u00e4ts\u00e4\u00e4v\u00e4 tunnus tertusta *\/\r\n   sprintf(bones,\"'userid'=\\\"%s\\\", 'password'\",userid2);\r\n   skk_fetch_sets(&amp;setusers,bones,skk-&gt;first);\r\n\r\n   if(skk_count_sets(setusers)==1) {\r\n    \/* Jos l\u00f6ytyi vaan yksi *\/\r\n    set_get_element(\"password\",&amp;comp,password3,setusers-&gt;data);\r\n\r\n    \/* Verrataan salasanoja, jos samat,luodaan sessionid,\r\n       talletetaan se ja userid *\/\r\n    if(!strcmp(password2,password3)) {\r\n     get_session_id(sessionid);\r\n     set_session_var(\"session\",sessionid);\r\n     set_session_var(\"userid\",userid);\r\n     ok=1;\r\n    }\r\n   }\r\n  }\r\n }\r\n\r\n \/* Jos sessionidt\u00e4 ei l\u00f6ytynyt\/saatu aikaiseksi,\r\n  * tulostetaan login n\u00e4ytt\u00f6 k\u00e4ytt\u00e4j\u00e4lle:\r\n  *\/\r\n if(*sessionid=='\\0') {\r\n  html=html1;\r\n  html[0]='\\0';\r\n\r\n  html_printf(\"HTTP\/1.0 200 OK\\r\\n\");\r\n  html_printf(\"Location: \\r\\n\");\r\n  html_printf(\"Server: %s\\r\\n\",programname);\r\n  now = time(NULL);\r\n  strftime(timebuf, sizeof(timebuf), HTMLTIMEFORMAT, gmtime(&amp;now));\r\n\r\n  html_printf(\"Date: %s\\r\\n\",timebuf);\r\n\r\n  html=html2;\r\n  html[0]='\\0';\r\n  html_printf(\"\\n&lt;!DOCTYPE html&gt;\\r\\n\");\r\n  html_printf(\"&lt;html lang=\\\"fi\\\"&gt;\");\r\n\r\n  html_printf(\"&lt;head&gt;\");\r\n  html_printf(\"&lt;meta charset=\\\"UTF-8\\\"&gt;\");\r\n  html_printf(\"&lt;title&gt;Terttu&lt;\/title&gt;\");\r\n  html_printf(\"&lt;meta name=\\\"author\\\" content=\\\"Jari Kuivaniemi\\\"&gt;\");\r\n  html_printf(\"&lt;link href=\\\"terttu.css\\\" rel=\\\"stylesheet\\\" type=\\\"text\/css\\\"&gt;\");\r\n  html_printf(\"&lt;\/head&gt;\");\r\n  html_printf(\"&lt;body&gt;\");\r\n\r\n  html_printf(\"&lt;form action=\\\"logon\\\" method=\\\"post\\\"&gt;\");\r\n  html_printf(\"&lt;input type=\\\"hidden\\\" name=\\\"sessionid\\\" value=\\\"%s\\\"&gt;\",sessionid);\r\n  html_printf(\"&lt;table border=\\\"0\\\"&gt;\");\r\n  html_printf(\"&lt;tr&gt;\");\r\n  html_printf(\"Testiohjelmaan lokkaantuminen Userid=testi, password=testaus\");\r\n  html_printf(\"&lt;\/tr&gt;\");\r\n  html_printf(\"&lt;tr&gt;\");\r\n  html_printf(\"&lt;\/tr&gt;\");\r\n  html_printf(\"&lt;td&gt;\");\r\n  html_printf(\"Userid\");\r\n  html_printf(\"&lt;\/td&gt;\");\r\n  html_printf(\"&lt;td&gt;\");\r\n\r\n  html_printf(\"&lt;input type=\\\"char\\\" name=\\\"userid-0\\\" value=\\\"%s\\\"&gt;\",userid2);\r\n  html_printf(\"&lt;\/td&gt;\");\r\n  html_printf(\"&lt;\/tr&gt;\");\r\n\r\n  html_printf(\"&lt;tr&gt;\");\r\n  html_printf(\"&lt;td&gt;\");\r\n  html_printf(\"Password\");\r\n  html_printf(\"&lt;\/td&gt;\");\r\n  html_printf(\"&lt;td&gt;\");\r\n  html_printf(\"&lt;input type=\\\"password\\\" name=\\\"password-0\\\" value=\\\"%s\\\"&gt;\",password2);\r\n  html_printf(\"&lt;\/td&gt;\");\r\n\r\n  html_printf(\"&lt;tr&gt;\");\r\n  html_printf(\"&lt;input type=\\\"submit\\\" value=\\\"Submit\\\"&gt;\");\r\n  html_printf(\"&lt;\/tr&gt;\");\r\n\r\n  html_printf(\"&lt;\/table&gt;\");\r\n  html_printf(\"&lt;\/form&gt;\");\r\n\r\n  html_printf(\"&lt;br&gt;\");\r\n  html_printf(\"T\u00e4m\u00e4 on kesken olevan projektin \\\"lelusovellus\\\", eik\u00e4 se ole tarkoitettu tuotteiden tilaamiseen.&lt;br&gt;\");\r\n  html_printf(\"&lt;br&gt;\");\r\n  html_printf(\"Saat listan toiminnoista leijumalla Terttu -sanan p\u00e4\u00e4ll\u00e4.&lt;br&gt;\");\r\n  html_printf(\"&lt;br&gt;\");\r\n  html_printf(\"Raportti sovelluksen rakentamisesta l\u00f6ytyy osoitteesta moijari.com.&lt;br&gt;\");\r\n  html_printf(\"&lt;br&gt;\");\r\n  html_printf(\"&lt;br&gt;\");\r\n  html_printf(\"&lt;\/body&gt;\");\r\n }\r\n return(ok);\r\n}\r\n\r\nhtml_get_screen_params(struct set **set)\r\n{\r\n int id,first;\r\n char *p,*q;\r\n unsigned char name[64],value[64];\r\n struct set *setu;\r\n\r\n \/* hae html parametrien sijaintiosoite *\/\r\n p=html_get_param2_addr();\r\n\r\n while(*p!='\\0') {\r\n  \/* Hae parametrin nimi ja arvo *\/\r\n  html_get_param2(&amp;p,name,sizeof(name)-1,value,sizeof(value)-1);\r\n\r\n  \/* osoite parametrin nimen loppuun *\/\r\n  q=name+strlen(name)-1;\r\n  id=0;\r\n\r\n  \/* Haetaan parametrin nimen lopussa olevan numeron alku *\/\r\n  if(isdigit(*q)) {\r\n   while(isdigit(*(q-1))) {\r\n   q--;\r\n  }\r\n\r\n  \/* rivinumeron lis\u00e4ksi parametrin nimen lopussa pit\u00e4\u00e4 olla '-'.\r\n   * esimerkiksi 'userid-0'.\r\n   *\/\r\n  if(*(q-1)==rowidchar)\r\n   *(q-1)='\\0';\r\n   \/* rivin numero inttimuuttujaan *\/\r\n   id=atoi(q);\r\n  } else {\r\n   id=-1;\r\n  }\r\n\r\n  if(id&gt;=0) {\r\n   \/* Talletetaan kentt\u00e4 oikealle riville. *\/\r\n   set_add_element_id(set,id,name,value);\r\n  }\r\n  \/* Ohitetaan parametrien v\u00e4liss\u00e4 oleva '&amp;' merkki. *\/\r\n  if(*p=='&amp;') {\r\n   p++;\r\n  }\r\n }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Haukkasin liian suuren palan edellisess\u00e4 postissa, vaikka suurin osa koodista olikin jo olemassa. Aloitan uudestaan login palalla. T\u00e4st\u00e4 puuttuu viel\u00e4 kenttien pituuksien rajoituiksia, t\u00e4m\u00e4 on vasta ensimm\u00e4inen versio. Salasanat ovat viel\u00e4 selv\u00e4kielisi\u00e4. T\u00e4t\u00e4 samaa rutiinia k\u00e4ytet\u00e4\u00e4n k\u00e4ytt\u00e4j\u00e4n tietojen tarkistuksessa, session id:n m\u00e4\u00e4rittelyss\u00e4 ja login n\u00e4yt\u00f6n tulostuksessa. Lis\u00e4sin loppuun viel\u00e4 html-parametrien k\u00e4sittelyn. Se on pala, joka&hellip; <a class=\"more-link\" href=\"https:\/\/moijari.com\/?p=240\">Continue reading <span class=\"screen-reader-text\">Login<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/240"}],"collection":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=240"}],"version-history":[{"count":12,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/240\/revisions"}],"predecessor-version":[{"id":252,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/240\/revisions\/252"}],"wp:attachment":[{"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}