作者 主題: 會員註冊完畢馬上確認的寫法?  (閱讀 3344 次)

0 會員 與 1 訪客 正在閱讀本文。

akou

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
會員註冊完畢馬上確認的寫法?
« 於: 2009-07-11 18:09 »
各位好

小弟最近在做報名頁面
我的構想是這樣的
先由A頁面填妥所有資料後,按鈕送出(此時已經寫入資料庫)
會進入B頁面再度SHOW一次剛剛的資料,供使用者觀看(寄送資料確認信也同時寫在這一頁)

但是現在有個問題就是,A頁面送出到B的時候
B頁面要如何正確顯示出剛剛註冊完畢的使用者呢?

小弟的方法,直接讓B頁面預設就是SHOW最新一筆資料!
這當然是個不好的方法…這樣誰到B頁面打網址進去都可以看到他人資訊!

第二個呢,我想到是否用SESSION的方法
首先在A頁面的時候先偷偷塞個SESSION,該值也同時在表單內,會寫入資料庫(假設欄位叫做SESSION_TEMP)!

這樣一路到了B頁面就可以使用「SESSION=資料庫的SESSION_TEMP欄位」
其實是可以成功的,原理而言…!

但是小弟用過DATE(YmdHis)作標籤,但……失敗!
因為時間下一秒就不同了,無法跟A頁面剛載入的時候一樣,到B頁面就走掉了

目前暫時的解決辦法是用使用者的IP位置作為SESSION值,暫時是可以!
可是總也覺得不是完美的辦法,想過用亂數等函式產生也是類同用時間函式一樣的失敗結果

不曉得,有沒有什麼方法可以取得該使用者唯一的值,紀錄在A頁面的SESSION,好讓我到B頁面就可以作獨一無二的篩選呢?

希望小弟的表達可以讓各位瞭解@@
若有闡述不夠好的地方,再請各位先進指教~感恩

PS:使用PHP+MYSQL
« 上次編輯: 2009-07-11 18:11 由 akou »

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: 會員註冊完畢馬上確認的寫法?
« 回覆 #1 於: 2009-07-11 18:40 »
在a頁一開始就建立uniqid() 做為 sessionid
http://tw.php.net/manual/en/function.uniqid.php

akou

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
回覆: 會員註冊完畢馬上確認的寫法?
« 回覆 #2 於: 2009-07-12 00:36 »
感謝很多熱心的鄉民朋友

尤其ptt網頁設計版上的chrisQQ大仔

我選用mysql_insert_id()這個辦法

首先mysql_insert_id()這個函式主要是在你插入資料表的時候

可以取得一個最新的資料庫id值,也就是主鍵~大家都常都設定auto產生那個



因此就達成我的目標,那就是取得一個獨一無二的值~可以在我的B頁面作比對

首先就是先設定變數 $_SESSION['insertId'] = mysql_insert_id();

這裡我搞了很久,chrisQQ大仔也很耐心的指導…

請注意這段變數要放置在插入資料表指令的後面!

也就是說你放最前頭第一行是沒用的,要放在所有INSERT全部指令之下

這樣就會在送出表單的時候可以瞬間紀錄最新的ID值到$_SESSION['insertId']



接著在B頁面就容易很多了…

select * form table where `id` = $_SESSION['insertId'];

設定你的ID欄位有等於剛剛設的$_SESSION['insertId']即可!


這真是太感謝了~~!!


以上希望可以給不曉得的新朋友作為參考

拿來作會員系統就可以用到,在馬上註冊完畢就馬上確認資料的方法


這真是太感謝了~~!!

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: 會員註冊完畢馬上確認的寫法?
« 回覆 #3 於: 2009-07-12 01:56 »
首先mysql_insert_id()這個函式主要是在你插入資料表的時候
可以取得一個最新的資料庫id值,也就是主鍵~大家都常都設定auto產生那個
因此就達成我的目標,那就是取得一個獨一無二的值~可以在我的B頁面作比對

對這個資料表來說是獨一無二的值沒錯
但是對程式碼來說並不是唯一的
而且只是簡單的數字而已
希望樓主不用讓這個值在網頁間傳遞
並靠這個值來判斷會員
不然, 在安全上只能說保重了~~

akou

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
回覆: 會員註冊完畢馬上確認的寫法?
« 回覆 #4 於: 2009-07-12 11:25 »
謝謝y大仔的關心

我想我僅僅讓這個session用在A頁面到B頁面這兩頁而已

目的只是馬上註冊就可以馬上SHOW出~~你就是剛剛註冊的那個人~~這就是我的目的

非常的感謝!!

neverwinter

  • 可愛的小學生
  • *
  • 文章數: 18
    • 檢視個人資料
回覆: 會員註冊完畢馬上確認的寫法?
« 回覆 #5 於: 2009-07-15 13:22 »
其實這類情況我都會用以下方法解決

先檢查有否接收到注冊資料來決定$IsRegister是true還是false,
如果是false,代表還未注冊完成,這樣就show出注冊表
如果是true,代表已經注冊,這樣就show出結果表

大概都是這樣:

代碼: [選擇]
<?php

if($_POST[&#39;xxxxx&#39;]){
    
$IsRegister TRUE;
}

if(
$IsRegister){
    
$result TRUE;
} else {
    
$register TRUE;
}

?>


<?php if($result){ ?>
//利用$_POST顯示出所有注冊資料
<?php } elseif($register) { ?>
//提供注冊表,form的action指定到自身頁面
<?php ?>

優點是一切步驟在一個頁檔內完成,不用分開檔案處理,而且不需要用到session跟mysql~

bill80362

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
回覆: 會員註冊完畢馬上確認的寫法?
« 回覆 #6 於: 2009-07-22 23:58 »
雖然問題已經解決...
SESSION不是有大小限制@@...