changeset 2386:45c5943f570f

leaf.rb redirect url changed
author FUJIKAWA Kosuke <c111126@g.koeki-u.ac.jp>
date Wed, 12 Nov 2014 19:32:19 +0900
parents 0cebfa44f2e0
children 8aa155082ae2
files fujix/add.rb fujix/leaf.rb fujix/redirect.html
diffstat 3 files changed, 101 insertions(+), 52 deletions(-) [+]
line wrap: on
line diff
--- a/fujix/add.rb	Wed Nov 12 16:41:09 2014 +0900
+++ b/fujix/add.rb	Wed Nov 12 19:32:19 2014 +0900
@@ -4,27 +4,43 @@
 require'cgi'
 require'sqlite3'
 
-cgi = CGI.new(:accept_charset => "UTF-8")
-name = cgi["name"]
+c = CGI.new(:accept_charset => "UTF-8")
+adname = c["name"]
 
 db = SQLite3::Database.new("sql/test.sq3")
 
-begin
-  db.execute("insert into main(name,lon,lat) values('#{name}',0,0)");
-rescue
-  db.execute("create table main(id integer PRIMARY KEY AUTOINCREMENT,name,lon,lat)");
-  db.execute("insert into main(name,lon,lat) values('#{name}',0,0)");
-  data = db.execute("select * from main");
+cookieuke = Hash.new               # cookie値保存用のHash
+if (c=ENV['HTTP_COOKIE'])       # 環境変数 HTTP_COOKIE にcookieリストがある
+  c.split(/[;,]\s+/).each do |exp|      # (セミコロンかカンマ)+空白 で分解
+    if /(.*)=(.*)/ =~ exp       # =の前後で分解 「変数=値;」
+      key       = CGI::unescape($1)     # 変数も値もエスケープされているので
+      value     = CGI::unescape($2)     # 元に戻す
+      cookieuke[key] = CGI::unescape(value)
+    end
+  end
 end
 
-count = db.execute("select max(id) from main");
-
-expires = (Time.now.gmtime+3600*24).strftime("%a, %d %b %Y %H:%M:%S GMT")
+name = cookieuke["name"]
+id = cookieuke["id"].to_i
 
-print"Content-type: text/html charset=UTF-8\n"
+if name == nil && id == 0
+  begin
+    db.execute("insert into main(name,lon,lat) values('#{adname}',0,0)");
+  rescue
+    db.execute("create table main(id integer PRIMARY KEY AUTOINCREMENT,adname,lon,lat)");
+    db.execute("insert into main(name,lon,lat) values('#{adname}',0,0)");
+    data = db.execute("select * from main");
+  end
+  
+  count = db.execute("select max(id) from main");
+  
+  expires = (Time.now.gmtime+3600*24).strftime("%a, %d %b %Y %H:%M:%S GMT")
+  
+  printf("Set-Cookie:id=%d; expires=%s\n",count[0][0],expires)
+  printf("Set-Cookie:name=%s; expires=%s\n",adname,expires)
+end
 
-printf("Set-Cookie:id=%d; expires=%s\n",count[0][0],expires)
-printf("Set-Cookie:name=%s; expires=%s\n\n",name,expires)
+print"Content-type: text/html charset=UTF-8\n\n"
 
 printf"<!DOCTYPE html>
 <html>
@@ -32,7 +48,7 @@
 <title>add page's</title>
 <script language=\"javascript\">
 time = 1;
-url = \"http://skip.koeki-prj.org/fujix/redirect.html\";
+url = \"http://roy.e.koeki-u.ac.jp/~c111126/mycgi/sotsu/redirect.html\";
 function jumpPage() {
   location.href = url;
 }
--- a/fujix/leaf.rb	Wed Nov 12 16:41:09 2014 +0900
+++ b/fujix/leaf.rb	Wed Nov 12 19:32:19 2014 +0900
@@ -4,16 +4,11 @@
 print"Content-type: text/html charset=UTF-8\n\n"
 
 require'sqlite3'
-require 'cgi'
+require'cgi'
 c = CGI.new(:accept_charaset => "UTF-8")
 db = SQLite3::Database.new("sql/test.sq3")
 db.results_as_hash = true
 
-lon = ARGV[0].to_f
-lat = ARGV[1].to_f
-
-data = Hash.new
-
 cookieuke = Hash.new               # cookie値保存用のHash
 if (c=ENV['HTTP_COOKIE'])       # 環境変数 HTTP_COOKIE にcookieリストがある
   c.split(/[;,]\s+/).each do |exp|      # (セミコロンかカンマ)+空白 で分解
@@ -27,26 +22,54 @@
 name = cookieuke["name"]
 id = cookieuke["id"].to_i
 
-begin
-  db.execute("select * from main");
-rescue
-  db.execute("create table main(id INTEGER PRIMARY KEY AUTOINCREMENT,name,lon,lat)");
-  db.execute("insert into main(name,lon,lat) values('NAME','LON','LAT')");
-end
-
-sql = "update main set name=?,lon=?,lat=? where id=?"
-
-begin
-  db.execute(sql,name,lon,lat,id)
-rescue
-  db.execute("insert into main(name,lon,lat) values('#{name}','#{lon}','#{lat}')");
-end
-
-db.execute("select * from main") do |load|
-  data[load['id']] = [load['name'],load['lon'],load['lat']]
-end
-
-printf(<<_EOS_,lon.to_f,lat.to_f)
+if ARGV[0] == "error" || ARGV[1] == nil || (name == "" && id == 0)
+  message = ""
+  redirect = "redirect"
+  if (name == "" && id == 0)
+    redirect = "add"
+    message = "登録されていないため登録ページへ飛びます"
+  elsif ARGV[0] == "error"
+    message = "位置情報が正しく取れなかったため、もう一度取り直します"
+  elsif ARGV[1] == nil
+    message = "想定されないアクセスがされたため登録ページに戻ります"
+    redirect = "add"
+  end
+  printf(<<_EOS_)
+<!DOCTYPE html>
+<html>
+<head>
+<title>MISS</title>
+<meta http-equiv="refresh" content="1;#{redirect}.html">
+</head>
+<body>
+<p>#{message}</p>
+<p>移動しない場合は<a href="#{redirect}.html">こちら</p>から移動してください</p>
+</body>
+</html>
+_EOS_
+else
+  lon = ARGV[0].to_f
+  lat = ARGV[1].to_f
+  data = Hash.new
+  begin
+    db.execute("select * from main");
+  rescue
+    db.execute("create table main(id INTEGER PRIMARY KEY AUTOINCREMENT,name,lon,lat)");
+    db.execute("insert into main(name,lon,lat) values('NAME','LON','LAT')");
+  end
+  
+  sql = "update main set name=?,lon=?,lat=? where id=?"
+  
+  begin
+    db.execute(sql,name,lon,lat,id)
+  rescue
+    db.execute("insert into main(name,lon,lat) values('#{name}','#{lon}','#{lat}')");
+  end
+  
+  db.execute("select * from main") do |load|
+    data[load['id']] = [load['name'],load['lon'],load['lat']]
+  end
+  printf(<<_EOS_,lon.to_f,lat.to_f)
 <!DOCTYPE html>
 <html>
 <head>
@@ -75,12 +98,12 @@
     attribution: '&copy; OpenStreetMap contributors'
   }).addTo(hmap);
 _EOS_
-
-for id in data.keys
-  if data[id][1] == "LON"
-    next
-  else
-    printf(<<_EOS_,data[id][1].to_f,data[id][2].to_f,data[id][0])
+  
+  for id in data.keys
+    if data[id][1] == "LON"
+      next
+    else
+      printf(<<_EOS_,data[id][1].to_f,data[id][2].to_f,data[id][0])
   L.marker([%f,%f],{
            clickable:true,
            draggable:true,
@@ -93,10 +116,11 @@
   .bindPopup('%s')
   .addTo(hmap);
 _EOS_
+    end
   end
-end
-
-print"
+  
+  print"
 </script>
 </body>
 </html>\n"
+end
--- a/fujix/redirect.html	Wed Nov 12 16:41:09 2014 +0900
+++ b/fujix/redirect.html	Wed Nov 12 19:32:19 2014 +0900
@@ -1,11 +1,14 @@
+<!DOCTYPE html>
 <html>
 <head>
 <title>たいとる</title>
 </head>
 <script language="javascript">
+
 time = 1;
 
-url = "http://skip.koeki-prj.org/fujix/leaf.rb";
+url = "http://roy.e.koeki-u.ac.jp/~c111126/mycgi/sotsu/leaf.rb";
+curl = "http://roy.e.koeki-u.ac.jp/~c111126/mycgi/sotsu/leaf.rb";
 
 if (navigator.geolocation) {
   navigator.geolocation.getCurrentPosition(
@@ -14,10 +17,11 @@
       var lon = hoge.coords.latitude;
       var lat = hoge.coords.longitude;
       url += "?" + lon + "+" + lat;
+
     },
 
     function (error) {
-
+      
       var message = "";
 
       switch (error.code) {
@@ -40,9 +44,14 @@
   );
 }
 
+if (url == curl){
+  url += "?error";
+}
+
 function jumpPage() {
   location.href = url;
 }
+
 setTimeout("jumpPage()",time*1000)
 </script>
 <body>

yatex.org