ll_libload wininet, "wininet.dll"
ll_getproc InternetSetCookie, "InternetSetCookieA", wininet
#define global ctype leapchk(%1 = 1900) ((%1 \ 400 = 0) | ((%1 \ 4 = 0) & (%1 \ 100 ! 0)))
#module
#deffunc dateinit int, int, int
mref year, 0 : mref month, 1 : mref day, 2
days = 365, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
kijun = year, month, day
if year = 0 : kijun = 1900
return
#deffunc adddays val, int
if kijun = 0 : dateinit
mref data, 48 : mref day, 1
data = kijun, kijun.1, kijun.2
if day < 0 {
repeat -day / days
if day + days + leapchk(data) <= 0 : break
day += days + leapchk(data)
data--
loop
repeat
if data.2 + day > 0 : break
if data.1 > 1 : data.1-- : else : data-- : data.1 = 12
i = data.1
day += (days.i + (data.1 = 2 & leapchk(data)))
loop
data.2 += day
} else {
repeat day / days
if day - days + leapchk(data) <= 0 : break
day -= (days + leapchk(data))
data++
loop
if data.1 > 2 & (leapchk(data) = 0) : day++
repeat
i = data.1
if data.2 + day <= (days.i + (data.1 = 2 & leapchk(data))) : break
day -= (days.i + (data.1 = 2 & leapchk(data)))
if data.1 < 12 : data.1++ : else : data++ : data.1 = 1
loop
data.2 += day
}
return
#deffunc setcookie val, str, int
mref url, 24 : mref savedata, 33 : mref period, 2
mref stt, 64
strlen i, savedata
sdim s, i + 50
if period {
dim date, 8
gettime date.0, 0
gettime date.1, 1
gettime date.2, 3
dateinit date.0, date.1, date.2
adddays date, period
i = date.0 - ((date.1 <= 2) * date.1), date.1 + ((date.1 <= 2) * 12), date.2
date = date.0, date.1, i.0 + (i.0 / 4) - (i.0 / 100) + (i.0 / 400) + (i.1 * 13 + 8 / 5) + i.2 \ 7, i.2 // 曜日算出
dateformat "%w, %d-%mo-%y %h:%mi:%s +0900", date, 4 + 8 // 強制的に日本時間
s = savedata + "; expires = " + refstr
} else {
s = savedata
}
ll_getptr url : ll_ret prm.0
prm.1 = 0
ll_getptr s : ll_ret prm.2
ll_callfunc prm, 3, InternetSetCookie@
ll_ret i : stt = i
return
#deffunc dateformat str, val, int
sdim fmt, 4, 9
sdim month, 10, 12
sdim week, 10, 7
mref format, 32 : mref date, 49 : mref option, 2
mref rstr, 65
fmt = "%y", "%mo", "%w", "%d", "%h", "%mi", "%s", "%ms"
if option & 4 {
if option & 16 {
month.0 = "January", "February", "March", "April", "May", "June"
month.6 = "July", "August", "September", "October", "November", "December"
} else {
month = "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
}
}
if option & 8 {
if option & 16 {
week = "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
} else {
week = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
}
} else {
week = "日", "月", "火", "水", "木", "金", "土"
}
rstr = format
i.1 = 0
repeat 9
instr i.1, rstr, fmt.cnt, i.1
if i.1 ! -1 {
strlen i.2, fmt.cnt
strlen i.3, rstr
if option & 1 : s = "" + date.cnt : i = 4 : else : s = "00" + date.cnt
if cnt = 0 & (option & 2 = 0) : i = 4 : else : if cnt = 7 : i = 3 : else : i = 2
strmid s, s, -1, i
if cnt = 1 & (option & 4 ! 0) : i = date.cnt - 1 : s = month.i
if cnt = 2 : i = date.cnt : s = week.i
strmid s1, rstr, , i.1
strmid s2, rstr, i.1 + i.2, i.3 - i.1 - i.2
rstr = s1 + s + s2
continue cnt
}
i.1 = 0
loop
return
#global
sdim address, 256
sdim key, 12
sdim buf, 1000
address = "http://hspbc.jp/"
key = "cookie_key"
buf = "test_value"
objsize 50, 25 : objmode 2
pos 10, 15 : mes "URL"
pos 40, 10 : input address, 540, 25
pos 580, 10 : button "Set", *set
pos 10, 50 : mesbox buf, 620, 420, 1
stop
*set
setcookie address, key + "=" + buf, 1
if stat : dialog "クッキーに保存しました" : else : dialog "保存に失敗しました", 1
stop
|