アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。

ご教示お願い致します。

<input type="text" name="uname">
に、名前を記憶させておきたいのですが、
どのようにすればいいのでしょうか??

現時点で
名前入力→特定の位置にあいさつみたいな感じで出力
というのまで、あるサイトを参考にできたのですが、

テキストに出力が
いろんなサイトを見て参考にしてみているものの
上手いこといきません・・



--------------test.pl--------------
#!/usr/bin/perl

print "Content-type: text/html; charset=UTF-8\n\n";

print <<END;
<!DOCTYPE>
<html>
<head>
<meta name="robots" content="noindex">
<title>テストページ</title>
<script type="text/javascript" src="test.js"></script>
</head>
<body>

<script language="JavaScript">
<!--
// 名前の呼び出し
name = loadCookie();
if(name == "") document.write("初めまして");
else document.write("ようこそ<FONT color=#990000>" + name + "</FONT>さん。");
//-->
</script>


<form name="form" action="#" method="post">
<input type="text" name="uname">
<input type="submit" name="send" value="送信" onClick="saveCookie(this.form.uname.value)">
</form>

</body>
</html>
END
exit;
1;

function saveCookie(dValue) {
cName = "uName="; // ユーザー名
cDays = 365; // データの保存日数
setPre = new Date();
setPre.setTime(setPre.getTime() + (cDays*1000*24*3600));
prd = setPre.toGMTString();
document.cookie = cName + escape(dValue) + ";expires=" + prd;
}
--------------test.pl--------------

--------------test.js--------------
function loadCookie() {
cData = "";
cName = "uName="; // ユーザー名
cCookie = document.cookie+";";
str = cCookie.indexOf(cName);
if(str != -1) {
end = cCookie.indexOf(";",str);
cData = unescape(cCookie.substring(str + cName.length, end));
}
return cData;
}
--------------test.js--------------

A 回答 (5件)

こんな感じです



<script>
window.onload=function(){
var v=getCookie('uname');
document.querySelector('[name=uname]').value=v;
}
function save(n,v){
setCookie(n,v);
}
function setCookie(key,val,url){
tmp = key+"="+escape(val)+";";
tmp += "expires=Fri, 31-Dec-2030 23:59:59;";
if(url){
tmp += "domain="+getDomain(url)+";";
tmp += "path="+getDomainPath(url)+";";
}
document.cookie = tmp;
};
function getCookie(key){
tmp = document.cookie+";";
tmp1 = tmp.indexOf(key,0);
if(tmp1 != -1){
tmp = tmp.substring(tmp1,tmp.length);
start = tmp.indexOf("=",0);
end = tmp.indexOf(";",start);
return(unescape(tmp.substring(start+1,end)));
}
return("");
};

function delCookie(key){
expiredate = new Date();
expiredate.setYear(expiredate.getYear()-1);
tmp = key+"=;";
tmp += "expires="+expiredate.toGMTString();
document.cookie = tmp;
};

</script>

<input type="text" name="uname" onchange="save(this.name,this.value)">
    • good
    • 0
この回答へのお礼

ありがとうございます!
できました!

もう1つ教えてください・・・
tmp += "expires=Fri, 31-Dec-2030 23:59:59;";

これってここまでが期限ですよってことですか?

お礼日時:2017/06/30 15:27

No.3です。



> 当ホームページに掲示板があり

ログインの無い(=利用者登録を必要としない)掲示板なのですね?
でしたら氏名ではなくニックネーム(=ハンドル名)を使用することとし(←ニックネーム欄に本名を使うかどうかは投稿者の自由)、Cookieにニックネームをセットすて返せばよいかと思います。
利用者が再度同掲示板を訪問するとそのCookieが付いて来るので、サーバ側の投稿画面を生成するプログラムは常に該当Cookieの取り出しを試み取得できればその値を該当欄の初期値としてセットし、取得できなければ空欄のままとするようにすればよいです。

ということでJavaScriptでCookieを扱う必要は無いです。
参考まで。
    • good
    • 0

> これってここまでが期限ですよってことですか?



そうですね、当該の期日は昔からよく使われている未来日の代表です
    • good
    • 0

No.2です。



ちなみにJavaScriptで画面上の入力欄に初期値をセットする、しかもCookieから取得してセットするという仕様はちょっと考えると変です。必然性が無い。。。
なぜその画面を生成するhttpサーバー上のプログラムでセット出来ないのか?
なぜWebブラウザ上で動くJavascriptでセットせねばならないか?

参考まで。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>>仕様を明確にする
すみません・・・
ただ、ちょっとその他についてがわからないです・・・
(理解力がない;;)


当ホームページに掲示板があり

入力してもらう

次回から同じ名前を入力しなくてもいいようにです

というようなことをしたかったのです。

お礼日時:2017/06/30 15:31

> <input type="text" name="uname">


> に、名前を記憶させておきたいのですが、
> どのようにすればいいのでしょうか??

HTMLではそれは出来ません。
「記憶させておきたい」とは具体的にどのようなユーザインタフェースを作りたいのでしょう?
ご質問にあうるようなコードベースで話をするのではなく日本語(会話などで通常使用している言語)でそこをハッキリ記述することが大切です。つまり「仕様を明確にする」のです。

ある画面上の氏名欄にある値を入力して処理を終えた場合、次回以降に同じ画面を表示すると前回入力した値が初期値として表示されているということであれば、サーバー側のファイルやデータベースのテーブルにその値を保持しておくか、Cookieを利用して利用者のブラウザ側に保持させておくかです。
しかし、氏名ということですと実現方式として後者はまずあり得ないでしょう。Webブラウザとhttpサーバ間の通信がhttpsで暗号化されていたとしてもです。

どのようなWebサイトなのかわかりませんが、ログインがあるのであればhttpサーバーの後ろにはデータベースサーバーがあって利用者の情報を保持するテーブルがあるのが一般的ですから、ログイン情報をCookieか匿名変数で引き回し、その情報で利用者の情報を保持するテーブルを検索して氏名を取り出して画面生成時に該当フィールドの初期値としてセットすればよいだけでしょう。

参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!