第 1 頁 (共 1 頁)
[問題] 如何讓初登記者答對問題選項後才容許註冊登記?
發表於 : 2005-04-10 03:15
由 china2000
使用版本:phpBB 2.0.5,採用BMan1Blue為預設風格,Linux為操作系統,MySQL
4.0.15 ,租用外國的主機空間。
狀況描述:今天有空時安裝了這個東西
【註冊時,15秒後才能按下我同意】發覺非常實用,最少所有初登記的人都會看一看版規!晚上突然忽發奇想!不知能否這樣做?
就是我想那些初登記者都能記著一些最基本的規則!構思的方向就是現在當初登記者等候了15秒(*等候並不代表真的有看版規*)後便可以登記!但新法就是初登記者等候了15秒後不能直接跳至登記的版面去!而是按下任何鍵後跳至另一個必答問題版面(Q&A)去!這個必答問題版面會列出三至四個選項,問題內容都是和版規有關的!當中只有一個選項是真確的,答對了便能跳至登記的版面去!答錯了便跳回到主版面去或是先跳出一段信息(Warning),後按下任何鍵後再重新回到等候了15秒的版面重來!
由於我的論壇每天都有五十到八十人登記,為了掃除一些網上盲流才迫不得已想出此法!
有誰可以幫忙呢?
發表於 : 2005-04-10 10:06
由 DL
很好!在註冊的畫面加上即可!可以突然問一下某些版規是第幾條!
發表於 : 2005-04-10 10:47
由 china2000
DL學兄,那該如何弄呢?
發表於 : 2005-04-10 22:40
由 DL
我也在想辦法,我也十分需要
發表於 : 2005-04-10 22:42
由 DL
我想到一個方法是用JS
發表於 : 2005-04-10 22:47
由 DL
在確定的按鈕動手腳
發表於 : 2005-04-10 23:01
由 DL
好用的地方是真的要「抄」一次,不能奸詐的用複製\r
已更新,請使用下面的新版
發表於 : 2005-04-10 23:13
由 DL
到語系檔改一下版規,真的有夠抄死人,一見到要抄這麼多字都不想加入了
發表於 : 2005-04-11 13:49
由 china2000
DL學兄,謝謝你的方案

也是方法之一!但也有一點不便~ 就是論壇的會員有三份之一是來自外國的華人,很多都不懂得輸入法或沒有手寫板或能看得懂中文但不懂得寫,可是我的論壇又全以中文為主!我的第一個方案是比較合適的,能否改成用選項這樣子呢?
發表於 : 2005-04-14 13:34
由 DL
我改成輸入ABCD的
代碼: 選擇全部
<p><table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
<tr>
<td align="left"><span class="nav"><a class="nav" href="{U_INDEX}">{L_INDEX}</a></span></td>
</tr>
</table>
<table class="forumline" width="100%" cellspacing="1" cellpadding="3" border="0">
<tr>
<th class="thHead" height="25" valign="middle"><span class="tableTitle">{SITENAME} - {REGISTRATION}</span></th>
</tr>
<tr>
<td class="row1" align="center"><table width="80%" cellspacing="2" cellpadding="2" border="0" align="center">
<tr>
<td><p align="center">
{AGREEMENT}
<form action="register.cgi" method="post" name="agree">
<span class="genmed"><div align="center">
</div>
</span>
<tr>
<td>
<p align="center">請在下方輸入答案(只需輸入ABCD)
<p><input type="hidden" name="S1" size="20" value="ABCD">1.
請輸入A<p>2.請輸入B<p>3.請輸入C<p>4.請輸入D
<p><textarea rows="5" name="S2" cols="69" onclick="clearpaste()"></textarea></p>
<span class="genmed"><div align="center">
<input onclick=ok(); type="button" value="按下將立刻開始" name="agreeb" class="liteoption">
<input onclick=history.back(-1) type="reset" value="取消" name="agreeten" class="liteoption">
</form>
<p>
</table>
</body>
<script>
function clearpaste() {
setTimeout("window.clipboardData.setData('text','')",1);
}
function ok()
{
if (document.agree.S1.value==document.agree.S2.value){
alert('輸入正確!');
window.location="{U_AGREE_OVER13}";
}
else
{
alert('答錯了,重新再輸入一次!');
document.agree.S2.value=""
document.agree.S2.disabled=false;
document.agree.agreeb.disabled=true;
document.agree.agreeten.disabled=true;
\nfor(i=1;i<=secs;i++)
{
window.setTimeout("update(" + i + ")", i * 1000);
}
}
}
var secs = 5;
document.agree.agreeb.disabled=true;
document.agree.agreeten.disabled=true;
for(i=1;i<=secs;i++)
{
window.setTimeout("update(" + i + ")", i * 1000);
}
function update(num) {
if(num == secs) {
document.agree.agreeb.value ="時間到,停止輸入,請按此按鈕繼續!";
document.agree.S2.disabled=true;
document.agree.agreeb.disabled=false;
document.agree.agreeten.disabled=false;
}
else {
if ((secs-num)!==60&&(secs-num)!==120&&(secs-num)!==180&&(secs-num)!==240&&(secs-num)!==300)
{
printnr = secs-num;
document.agree.agreeb.value = "尚餘" + printnr +" 秒";
}
else
{
printnr = (secs-num)/60;
document.agree.agreeb.value = "尚餘" + printnr +" 分鐘";
}
}
}
</script>
發表於 : 2005-04-14 14:29
由 DL
我這次設定成5秒後便一定要把送出,輸入欄是鎖上,無法再輸入!
以上只供測試用,請把var secs = 5;改為你要的時間。
發表於 : 2005-04-14 14:35
由 DL
如不想會員看著版規回答:
===修改===
var secs = 5;改為回答時間+看版規時間
===找到===
{AGREEMENT}
<form action="register.cgi" method="post" name="agree">
===取代為===
<form action="register.cgi" method="post" name="agree">
<textarea rows="5" name="answer" cols="69" readonly>{AGREEMENT}</textarea>
===找到===
}
}
</script>
===之前加上===
if ((secs-num)>15)
{
document.agree.S2.disabled=true;
}
else
{
document.agree.answer.value="現在開始回答了!";
document.agree.S2.disabled=false;
}
===修改===
if ((secs-num)>15) 改為回答時間
發表於 : 2005-04-14 14:52
由 DL
補續....剛剛漏了一句:
===找到===
alert('答錯了,重新再輸入一次!');
document.agree.S2.value=""
document.agree.S2.disabled=false;
document.agree.agreeb.disabled=true;
document.agree.agreeten.disabled=true;
===後面加上===
document.agree.answer.value="{AGREEMENT}";
===EoM去===
測試能否使用