[問題]會員註冊出現問題!!(已解決)

phpBB Installation & Usage Support
phpBB 2 安裝於各類型作業平台之問題討論;外掛問題,請到相關版面依發問格式發表!
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
Hsuing
星球普通子民
星球普通子民
文章: 26
註冊時間: 2004-12-15 20:53

[問題]會員註冊出現問題!!(已解決)

文章 Hsuing »

小弟論壇從lycos搬家到acsite後...
會員註冊功能就出現了問題....
本人測試都無法完成註冊動作.....
但是在舊論壇上測試是ok的.....

我有將我的論壇備份檔對二個論壇個自重新上傳...
舊論壇可以註冊,但新的還是無法完成

以下是我二個論壇的註冊連結....
舊論壇註冊
新論壇註冊

請問這是哪裡出了問題呢???
感謝回答
最後由 Hsuing 於 2005-02-07 11:44 編輯,總共編輯了 1 次。
baboo
星球公民
星球公民
文章: 79
註冊時間: 2004-02-11 10:23

文章 baboo »

剛剛稍微測試了一下... 問題應該是這個吧?

新論壇註冊會一直顯示 "您必須確實填寫標示有*的項目" 即使所有項目都完全填入...

比較了一下兩個檔案, 之中的不同只有 style 跟 language, 新論壇沒有可以default style 跟 default language 可選...

問題可能是出在那個 language 上面...
可以先試試:

1. 還原 language 的檔案夾, (應該跟 lycos 的目錄一樣...)
確定有這兩個
\lang_english
\lang_chinese_traditional_taiwan

2. 系統管理控制台\基本組態\預設語系\r
應該為 "Chinese [ Traditional - Twiwan ]"

3. 還原 style 的檔案夾, (應該跟 lycos 的目錄一樣...)
確定有:
\templates\sky
\templates\subSilver

:-o ...
Hsuing
星球普通子民
星球普通子民
文章: 26
註冊時間: 2004-12-15 20:53

文章 Hsuing »

感謝baboo幫忙測試及回覆
剛才我加入了lang_english及subSilver後
發現註冊還是有問題
我想應該是php的bug的吧.....
實在是搞不定啊 =.=|||


lycos 資料庫基本資料如下
phpMyAdmin : version 2.2.1-dev
MySQL-Dump
PHP Version: 4.3.8

acsite 資料庫基本資料如下
phpMyAdmin : version 2.6.1-rc1
MySQL : 4.0.22-standard
PHP Version: 4.3.10
Hsuing
星球普通子民
星球普通子民
文章: 26
註冊時間: 2004-12-15 20:53

文章 Hsuing »

我發現我將以上程式碼拿掉

代碼: 選擇全部

	else if ( $mode == 'register' )
	{
		if ( empty($username) || empty($new_password) || empty($password_confirm) || empty($email) || empty($userrealname) || empty($commend) || empty($mobilephone) || empty($address) )
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
		}
	}
還是會出現 您必須確實填寫標示有*的項目 這串文字.......
baboo
星球公民
星球公民
文章: 79
註冊時間: 2004-02-11 10:23

文章 baboo »

啊... 原來如此...
把 (profile_add_body.tpl) 裡面的
下面這個部份修改一下("手機號碼?" 跟 "居住地址?" 是我亂加的 :roll: ):
實際內容會有出入, 不過找有 "icq" 的地方就是了~

<td class="row1"><span class="gen">(手機號碼?)</span></td>
<td class="row2">
<input type="text" name="icq" class="post"style="width: 100px" size="10" maxlength="15" value="{(手機號碼?)}" />
</td>
</tr>
<tr>
<td class="row1"><span class="gen">{(居住地址?)}:</span></td>
<td class="row2">
<input type="text" class="post"style="width: 150px" name="aim" size="20" maxlength="255" value="(居住地址?)" />

icq ===> mobilephone
aim ===> address



然後也要改 (usercp_register.php) 裡面的這一行:

$strip_var_list = array('username' => 'username', 'email' => 'email', 'icq' => 'icq', 'aim' => 'aim', 'msn' => 'msn', 'yim' => 'yim', 'website' => 'website', 'location' => 'location', 'occupation' => 'occupation', 'interests' => 'interests');

改成
'mobilephone' => 'mobilephone'

'address' => 'address'
Hsuing
星球普通子民
星球普通子民
文章: 26
註冊時間: 2004-12-15 20:53

文章 Hsuing »

我發現問題所在了
php 4.3.10 對我以下的程式碼無法判斷\r

代碼: 選擇全部

    //check gradeclass start 期班的選擇
	
	
	if ( $mode == 'register' )
	{
	    if ( $usergradeclass_1 != '' && ( $usergradeclass_2 != '' || $usergradeclass_3 != '' || $usergradeclass_4 != '' ))
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['gradeclass_double'];
		}
		else if ( $usergradeclass_2 != '' && ( $usergradeclass_3 != '' || $usergradeclass_4 != '' ))
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['gradeclass_double'];
		}
		else if ( $usergradeclass_3 != '' && $usergradeclass_4 != '' )
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['gradeclass_double'];
		}
		
		
		
		if (!$error)
		{
		    if ( $usergradeclass_1 != '' )
		    {
		     	 $usergradeclass = $usergradeclass_1;
		    }
		    else if ( $usergradeclass_2 != '' )
		    {
		     	 $usergradeclass = $usergradeclass_2;
		    }
		    else if ( $usergradeclass_3 != '' )
		    {
		     	 $usergradeclass = $usergradeclass_3;
		    }
		    else if ( $usergradeclass_4 != '' )
		    {
		     	 $usergradeclass = $usergradeclass_4;
		    }
		 }
		 
		if ( empty($usergradeclass) )
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
		}
	}
		
    //check gradeclass end
但是在 php 4.3.8 上是可以執行的...... :-?
想辦法修改中 :roll:
Hsuing
星球普通子民
星球普通子民
文章: 26
註冊時間: 2004-12-15 20:53

文章 Hsuing »

應該是以下的程式碼出現了問題

代碼: 選擇全部

 		
		if (!$error)
		{
		    if ( $usergradeclass_1 != '' )
		    {
		     	 $usergradeclass = $usergradeclass_1;
		    }
		    else if ( $usergradeclass_2 != '' )
		    {
		     	 $usergradeclass = $usergradeclass_2;
		    }
		    else if ( $usergradeclass_3 != '' )
		    {
		     	 $usergradeclass = $usergradeclass_3;
		    }
		    else if ( $usergradeclass_4 != '' )
		    {
		     	 $usergradeclass = $usergradeclass_4;
		    }
		 }
		 
因為我將以下程式碼拿掉

代碼: 選擇全部

		if ( empty($usergradeclass) )
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
		}
	}
		
    //check gradeclass end
即可完成註冊....
但是在SQL裡usergradeclass欄位裡確沒有看見任何資料
baboo
星球公民
星球公民
文章: 79
註冊時間: 2004-02-11 10:23

文章 baboo »

一下也看不出來有什麼問題..... :(

試試看這個吧:

代碼: 選擇全部

if ( $mode == 'register' ) 
{
	$usergradeclass = '';	
	if (($usergradeclass_1 != '') && ($usergradeclass_2 == '') && ($usergradeclass_3 == '') && ($usergradeclass_4 == ''))
		$usergradeclass = $usergradeclass_1;
	else if (($usergradeclass_1 == '') && ($usergradeclass_2 != '') && ($usergradeclass_3 == '') && ($usergradeclass_4 == ''))
		$usergradeclass = $usergradeclass_2;
	else if (($usergradeclass_1 == '') && ($usergradeclass_2 == '') && ($usergradeclass_3 != '') && ($usergradeclass_4 == ''))
		$usergradeclass = $usergradeclass_3;
	else if (($usergradeclass_1 == '') && ($usergradeclass_2 == '') && ($usergradeclass_3 == '') && ($usergradeclass_4 != ''))
		$usergradeclass = $usergradeclass_4;
	else 
		$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['gradeclass_double'];
	if (empty($usergradeclass))
	{
		$error = TRUE;
		$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
	}
}
Hsuing
星球普通子民
星球普通子民
文章: 26
註冊時間: 2004-12-15 20:53

文章 Hsuing »

我修改為以下程式碼\r

代碼: 選擇全部

if ( $mode == 'register' ) 
{ 
   $usergradeclass = '';   
   if (($usergradeclass_1 != '') && ($usergradeclass_2 = '') && ($usergradeclass_3 = '') && ($usergradeclass_4 = '') && ($usergradeclass_5 = '')) 
      $usergradeclass = $usergradeclass_1; 
   else if (($usergradeclass_1 = '') && ($usergradeclass_2 != '') && ($usergradeclass_3 = '') && ($usergradeclass_4 = '') && ($usergradeclass_5 = '')) 
      $usergradeclass = $usergradeclass_2; 
   else if (($usergradeclass_1 = '') && ($usergradeclass_2 = '') && ($usergradeclass_3 != '') && ($usergradeclass_4 = '') && ($usergradeclass_5 = '')) 
      $usergradeclass = $usergradeclass_3; 
   else if (($usergradeclass_1 = '') && ($usergradeclass_2 = '') && ($usergradeclass_3 = '') && ($usergradeclass_4 != '') && ($usergradeclass_5 = '')) 
      $usergradeclass = $usergradeclass_4; 
   else if (($usergradeclass_1 = '') && ($usergradeclass_2 = '') && ($usergradeclass_3 = '') && ($usergradeclass_4 = '') && ($usergradeclass_5 != '')) 
      $usergradeclass = $usergradeclass_5; 
   else if (($usergradeclass_1 = '') && ($usergradeclass_2 = '') && ($usergradeclass_3 = '') && ($usergradeclass_4 = '') && ($usergradeclass_5 = '')) 
      $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty']; 
   else 
      $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['gradeclass_double']; 
} 
雖然可以順利完成註冊.....
但是選單裡的值好像無法順利上傳至$usergradeclass :roll:

以下為profile_add_body.tpl的程式碼\r

代碼: 選擇全部

	<!-- BEGIN switch_namechange_allowed -->
<tr> 
    <td class="row1" width="20%"><span class="gen">{L_USERGRADECLASS}: *</span><br />
    <span class="gensmall">{L_USERGRADECLASS_EXPLAIN}</span></td>
    <td class="row2">
     常士<select class="post" style="width:100px" name="usergradeclass_1">
         <option>
         <option>常士85年班\r
         <option>常士86年班\r
         <option>常士87年班\r
         <option>常士88年班\r
         <option>常士89年班\r
         <option>常士90年班\r
         <option>常士91年班</select>
     士二專<select class="post" style="width:100px" name="usergradeclass_2">
         <option>
         <option>士二專85年班\r
         <option>士二專86年班\r
         <option>士二專87年班\r
         <option>士二專88年班\r
         <option>士二專89年班\r
         <option>士二專90年甲班\r
         <option>士二專90年乙班\r
         <option>士二專91年班\r
         <option>士二專92年班</select>
     專科<select class="post" style="width:100px" name="usergradeclass_3">
         <option>
         <option>專科85年班\r
         <option>專科86年班\r
         <option>專科87年班\r
         <option>專科88年班\r
         <option>專科89年班\r
         <option>專科90年甲班\r
         <option>專科90年乙班\r
         <option>專科91年班\r
         <option>專科92年班</select>
     二技<select class="post" style="width:100px" name="usergradeclass_4">
         <option>
         <option>二技93年班\r
         <option>二技94年班\r
         <option>二技95年班\r
         <option>二技96年班\r
         <option>二技97年班</select>
         自填<input type="text" class="post" style="width:100px" name="usergradeclass_5" size="25" maxlength="25" value="{USERGRADECLASS_5}" /></td>
</tr>
	<!-- END switch_namechange_allowed -->
努力除錯中..... :-?
Hsuing
星球普通子民
星球普通子民
文章: 26
註冊時間: 2004-12-15 20:53

文章 Hsuing »

我剛才測試了一下
將code改為以下

代碼: 選擇全部

if ( $mode == 'register' ) 
{ 
   $usergradeclass == $usergradeclass_1;    

} 
然後進入註冊,選第一個選項
發現 $usergradeclass = $usergradeclass_1;
是沒有作用的................
這要怎麼改啊!!!!!!!! :-o
Hsuing
星球普通子民
星球普通子民
文章: 26
註冊時間: 2004-12-15 20:53

文章 Hsuing »

我又測試了一下
我確定是\r

代碼: 選擇全部

 if (($usergradeclass_1 != '') && ($usergradeclass_2 == '') && ($usergradeclass_3 == '') && ($usergradeclass_4 == '') ) 
發生了錯誤.....
程式根本就無法判斷 '' 裡的東西
baboo
星球公民
星球公民
文章: 79
註冊時間: 2004-02-11 10:23

文章 baboo »

這段程式前面加上這個試試看, 可能是中文的問題...

代碼: 選擇全部

$usergradeclass_1 = $HTTP_POST_VARS['usergradeclass_1']
$usergradeclass_2 = $HTTP_POST_VARS['usergradeclass_2']
$usergradeclass_3 = $HTTP_POST_VARS['usergradeclass_3']
$usergradeclass_4 = $HTTP_POST_VARS['usergradeclass_4']
if ($HTTP_POST_VARS['usergradeclass_5'] != null)
$usergradeclass_5 = "'" + $HTTP_POST_VARS['usergradeclass_5'] + "'";
還有, 那些 == '' 的比較改成 == null
if (string != '') ===> if (string != null)
and
if (string == '') ===> if (string == null)
baboo
星球公民
星球公民
文章: 79
註冊時間: 2004-02-11 10:23

文章 baboo »

噢... 抱歉, 上面那兩個 "+" 應該改成 "." :oops:
Hsuing
星球普通子民
星球普通子民
文章: 26
註冊時間: 2004-12-15 20:53

文章 Hsuing »

感謝baboo的指導
選單已經可以正常工作了 :-D

但是還是有二個小bug...
1.

代碼: 選擇全部

if ($HTTP_POST_VARS['usergradeclass_5'] != null) 
$usergradeclass_5 = "'" + $HTTP_POST_VARS['usergradeclass_5'] + "'"; 
無法上傳字串至sql

2.

代碼: 選擇全部

   else if (($usergradeclass_1 == null) && ($usergradeclass_2 == null) && ($usergradeclass_3 == null) && ($usergradeclass_4 == null) && ($usergradeclass_5 = null)) 
      $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty']; 
就算5個選單都留空白 ,還是可以完成註冊...
baboo
星球公民
星球公民
文章: 79
註冊時間: 2004-02-11 10:23

文章 baboo »

代碼: 選擇全部

if ($HTTP_POST_VARS['usergradeclass_5'] != null) 
$usergradeclass_5 = "'" + $HTTP_POST_VARS['usergradeclass_5'] + "'"; 
剛剛上面打錯了, 應該是用"點"(.) 而不是 "加"(+)

代碼: 選擇全部

   else if (($usergradeclass_1 == null) && ($usergradeclass_2 == null) && ($usergradeclass_3 == null) && ($usergradeclass_4 == null) && ($usergradeclass_5 = null)) 
      $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty']; 
記得比較相同的時候是用雙等號 (==), 上面有只用單等號(=)的...
還有, 應該改成

代碼: 選擇全部

   else if (($usergradeclass_1 == null) && ($usergradeclass_2 == null) && ($usergradeclass_3 == null) && ($usergradeclass_4 == null) && ($usergradeclass_5 == null)) 
{
      $error = TRUE; 
      $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty']; 
}
再試試看吧 ~ :oops:
主題已鎖定

回到「phpBB 2 安裝與使用」