xoops直接複製使用

直接複製資料夾

cp -rf xoops xoops2

修改資料夾權限為777

chmod 777 -R cache templates_c xoops_data uploads

透過網頁版phpMyAdmin,下載資料庫 xoop.sql

再新增一個資料庫xoops2, 將xoops.sql匯入直接使用

回到xoops2內,修改兩個資料參數檔

vi mainfile.php

vi xoops_data/data/secure.php

完成後存檔,即可使用xoops2

xoops大量新增帳號(含密碼處理)

最近想讓全學年的學生使用xoops作一些活動,原先使用phpMyAdmin匯入匯出mysql資料庫的簡易方法,只能有順利帳號,但密碼也只能單一組。於上網找了另一方法,讓管理者可以控制帳號、密碼(經過md5安全編碼)。

一、將使用者資料填入users.csv,可使用LibreOffice來開啟utf-8的檔案

user;name;user@mail.com;password

二、編輯import_users.php,請將紅色更改為自己的資料

// variables
$bdd= "資料庫名稱";
$host= "localhost";
$user= "管理者";
$pass= "管理密碼";
$fichier = "users.csv"; // data file as : first name(pseudo);last name;email;password   
// remove line break on last record 增加下列,可以輸入中文

mysql_connect($host,$user,$pass) or die("Unable to connect Database");
mysql_select_db($bdd);
mysql_query("SET NAMES 'utf8' ");
// Open file for read
if (file_exists($fichier))
    $fp = fopen("$fichier", "r");
else{ // unknown file
    echo "File not found !<br>Import stopped.";
    exit();
}
echo 'Begin file import '.$fichier.'<br>';
// import line by line
while (!feof($fp)){
    $ligne = fgets($fp,4096);
    $liste = explode(";",$ligne); // create array
    $user = $liste[0]; //first field
    $name = $liste[1]; //second field
    $email= $liste[2];
    $pass= md5(trim($liste[3])); 

    // Add user in xoops_users table 請查詢資料庫開頭後更改
     $query = "insert into xoopsNUM_users  (uname, name, email, pass) VALUES ('$user', '$name','$email','$pass')";

     $result= mysql_query($query);
     $uid = mysql_insert_id();
   
    //Add user in group : users registered 請查詢資料庫開頭後更改;還有群組代號
    $numgroup ='2';
     $query = "INSERT INTO xoopsNUM_groups_users_link  (groupid, uid) VALUES('$numgroup', '$uid')";
     $result= mysql_query($query);

     if (mysql_error()){
      echo "Error in database : ".mysql_error();
      echo "<br>Importation stopp嶪.";
      fclose($fp);
      exit();
}else{
  echo "Record ".$uid." - ".$user." added<br> ";
 }
}

echo "<br>Import finished successfully.";

fclose($fp);

做完之後,才發現桃園縣中小學資訊教育成果網站有一個x_user模組不錯用(tad原著→my改版 ),有CSV批次匯入功能,好軟體就是幫忙很多,省下許多的設定檔。http://rd.tyc.edu.tw/viewtopic.php?p=1366

 

xoops官網:http://dev.xoops.org/modules/xfmod/project/showfiles.php?group_id=1061
http://dev.xoops.org/modules/xfmod/project/showfiles.php?group_id=1061&release_id=786&dl=2160

參考筆記:蛙來蛙去的異想世界 http://blog.hhjh.tn.edu.tw/biosomeday/?p=187

 

tad_form 3萬用表單的mail問題解決

本以為可以安心使用這個模組,作為報名系統,然後,完成報名後,再透過系統回信給所有報名人員。

結果確發現,開放匿名報名時,同一報名人,為學校報名多個隊伍。

導致mail的功能,只能回寄一次給填報人,那其他的報名資料怎麼回信呢?困擾啊!

最後研究解套結果,方法如下:

一、修改填報人,也就是改為賈伯斯a、賈伯斯b....

找到並匯出資料庫 xoops_tad_form_fill,修改後,清空原資料,再匯入。

二、可以另外應用填報人這個欄位,例如隊伍名稱,重複性的機率比較低

vi /var/www/html/xoops/modules/tad_form/language/tchinese/main.php

define("_MD_TADFORM_MAN_NAME","隊伍名稱");

以上,測試後,可以正常使用囉。

相關tad_form,可以參考米粒的億想世界: tad_form萬用表單

xoops亂碼問題

之前曾經處理過這個問題,但已經忘記作法,把今天的作法再紀錄一下。

XOOPS 的中文是用 latin1 將中文存到 phpMyAdmin,所以檢視時都是亂碼,真是討厭

所以,我們就來更正為utf8吧

一、顯示utf8中文,有時候設定沒用,本次就沒用啦^^!若出現正常中文,可以直接匯出使用。若不行,則用步驟二的方法。

vi /var/www/html/phpMyAdmin/libraries/select_lang.lib.php  

# 'utf-8'  => 'utf8',
'utf-8'  => 'latin1' 

二、用正規方法匯出資料庫,檢視是否為中文字體

mysqldump -u root  -pmysecret --default-character-set=latin1 xoops > xoops.sql

三、用編輯程式 NotePAD,開啟 scratch.sql 檔案,將裡面所有latin1取代為utf8,完成後,再匯入資料庫。

四、加入系統的參數,強制用 utf8 傳輸(紫色的語法

vi /var/www/html/xoops/class/database/mysqldatabase.php

@mysql_query("SET NAMES 'utf8'", $this->conn);

$result = mysql_query($sql, $this->conn)

 

PS:可以同步修改mysql的設定值

vi /etc/my.cnf

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
init_connect='SET NAMES utf8'
 

 

參考文件

http://halladay5364.pixnet.net/blog/post/1420364-xoops-%E5%9C%A8phpmyadmin-%E8%B3%87%E6%96%99%E5%BA%AB%E9%A1%AF%E7%A4%BA%E6%AD%A3%E5%B8%B8%E4%B8%AD%E6%96%87

tadgallery的Flash上傳亂碼問題解決

到系統內

找到./modules/tadgallery/class/plupload/js/i18n底下,中文檔設定

改tchinese.js為utf-8,問題就解決了

 

學校網站xoops公告升級筆記

學校網站公告升級(tadnews1.4 → tadnews2.0)

方法一:移除後安裝,仔細

先利用phpMyAdmin將tadnews相關資料表匯出。(總共有6個表) 

cd  /var/www/html

mv -R xoops/uploads/tadnews  xoops/uploads/tadnews--bk

到管理區,先反安裝 tadnews

mv -R xoops/modules/tadnews xoops/tadnews--14

利用FTP軟體上傳新版tadnews

再到管理區,安裝新版 tadnews

匯入tadnews相關6個資料表,大功告成!

 

方法二:直接升級,簡單,但有風險

備份舊版模組

mv -R xoops/modules/tadnews xoops/tadnews--14

FTP上傳新版模組 tadnews 到xoops/modules內

再到管理區,升級新版 tadnews 

大功告成!

 

讓xoops預設為utf-8傳送資料

一、設定mysql

  • vi /etc/my.cnf

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
init_connect='SET NAMES utf8'

 二:將資料轉為utf8後,彙回去,並且強制xoops傳送utf8

在xoops資料夾內修改參數

  • vi  /var/www/html/xoops/class/database/mysqldatabase.php 

@mysql_query("SET NAMES 'utf8'", $this->conn); //增加本行
$result = mysql_query($sql, $this->conn);

xoops使用「Xoops Protector 防護模組 」模組異常

啟用Xoops Protector 防護模組,就會出現下列異常字串。思考很久,突然想起來之前用2.55版本時,自己加了些補充語法。

Notice: Constant PROTECTOR_PRECHECK_INCLUDED already defined in /var/www/html/xoops/xoops_lib/modules/protector/include/precheck.inc.php on line 10

Notice: Constant PROTECTOR_VERSION already defined in /var/www/html/xoops/xoops_lib/modules/protector/include/precheck.inc.php on line 11

結果,比照下列網站,果然出現了訊息。當初舊版需要在「mainfile.php」自行加語法,導致系統一直警告出現雙重定義的訊息。去除後,就可以正常安裝防護模組了!

http://xoops.tn.edu.tw/modules/tadnews/index.php?nsn=84

創意xoops教學應用---大會考堂

100上學期帶領五年級社會,從第一次學生的社會成績來看,相當低落。於是,思考了幾個方法,希望能提昇學生的學習效能。藉由學生愛炫、耍酷、鬧人的心理,請學生能依據課本內容,自創題目,考考自己的競爭對手(同班同學)。因此,架設的【考倒同學去】的xoops,及使用模組tad_form(萬用表單) ,實際運作如下網址:

http://ha.shsps.kh.edu.tw/xoopsexam/

接下來,稍微說明快速新增帳號的方法

使用工具軟體:phpMyAdmin, Xoops, OpenOffice calc(可編utf8)

一、基本架設xoops後,再新增一名使用者(學生)、群組,然後再設定所屬群組。

二、匯出並修改 xxxxx_users.csv,完成後,清空原資料表xxxxx_users,將編輯完成的xxxxx_users.csv匯入資料表。

三、匯出並修改 xxxxx_groups_users_link.csv,完成後,清空原資料表xxxxx_groups_users_link,將編輯完成的xxxxx_users.csv匯入資料表。

上述ok後,重新進入系統看看吧!

***下載範例檔x508_xoops.zip,需要密碼***

xoops安裝新模組,輸入中文資料都卻出現??

今天安裝tad_assignment學生作業上傳模組,發現新加入的模組, 輸入中文主題後,資料出現「??」的字樣。測試幾次都一樣,以為是sql檔的問題,檢查後無問題,再檢查是否為utf-8的中文字碼問題,用convertz處理後,還是一樣有問題。

原來,新增資料庫的預設編碼變成[gernel_switch_latin1]那一類的字樣。

處理方式,就是進入phpMyAdmin內,

點選【管理】,再將下列【校對:】內將值改為→【utf8_general_ci】。

重新安裝模組後,輸入資料正常了!

Xoops系統主程式升級103-0116

0.升級前,最好將主程式和資料庫先備份一次,第一次實驗幸好有備份,錯誤幾次才成功。

或者,可以考慮先複製另一系統來實驗看看,就算完壞了,也沒關係。

重製主要系統

  • cd /var/www/html
  • cp -R  xoops xoops2

修改xoops2的資料庫連結相關設定

  • vi  /var/www/html/xoops2/mainfile.php

重製資料庫

  • cp -rf  /var/lib/mysql/xoops /var/lib/mysql/xoops2
  • chown -R mysql.mysql /var/lib/mysql/xoops2

1.下載最新版本 UP_htdocs_250tchinese,解壓後,把【upgrade】移動到【htdocs】文件夾內。

請注意:意舊版本的utf8中文資料夾為tchinese,吳宏凱版本皆為tchinese_utf8,需要更改所有utf8的資料夾為tchinese

2.刪除【htdocs】內的相關檔案

  1. mainfile.php
  2. 【cache】
  3. 【install】
  4. 【templates_c】
  5. 【themes】
  6. 【uploads】

另外,若PHP尚未升級到5.2版以上,暫時升級到版就好xoops_upto_2.4.zip

因為,沒有升級PHP,會導致進入管理區,出現許多空白頁啊!

3.使用FileZilla,把整理過的【htdocs】上傳到伺服器,強迫覆蓋原來的文件。

4.設定相關檔案可讀寫

  • cd /var/www/html/xoops
  • chmod -R 777 xoops_* mainfile.php cache templates_c uploads include/license.php

5. 使用瀏覽器設定升級系統

  • http://server.domain.kh.edu.tw/upgrade

6. 根據畫面指示,逐步完成更新動作

7. 完成後,刪除upgrade資料夾,並設定mainfile.php屬性唯讀

  • rm -rf  upgrade
  • chmod -R 444 mainfile.php

8. 從模組管理界面,先升級模組【系統管理:system】,測試穩定後,再升級相關的模組。

 ----------------其他補充---------------

若遇上【xoops_*】安全提示,可以將主程式資料夾內的重要設定檔搬出其他位置

  • cp -R xoops_* /var/www/
  • chown -R user.user /var/www/xoops_*
  • chmod -R 777 /var/www/xoops_*

修改mainfile.php的路徑設定檔

  • vi  mainfile.php

/var/www/html/xoops/xoops_data →  /var/www/xoops_data

/var/www/html/xoops/xoops_lib →  /var/www/xoops_lib

XOOPS完全整合LDAP--編輯使用者

作者:cosseto

讓XOOPS完全整合LDAP,就是說要可以更改密碼等等資訊到LDAP....。

更改部分如下

edituser.php
最尾端(或適當位置)加入函數宣告
常數部份請參考註冊HACK那篇

function UpdateLDAP($uid,$mail,$pass)
{
    
//die($uid);//
    
$ldap = ldap_connect(LDAP_HOST);
    
ldap_bind($ldap,LDAP_ADMIN_DN,LDAP_ADMIN_PW);
    
//這邊的條件避免誤刪LDAP內容
    
if(!empty($pass)) { $info['userPassword'] = "{md5}".base64_encode(pack("H*",md5($pass))); }
    if(!empty(
$mail)) { $info['mail'] = $mail; }
    
//更新LDAP
    
ldap_modify($ldap,sprintf(LDAP_BASE_DN,$uid),$info) or die(ldap_error($ldap));
    
//關閉連線
    
ldap_unbind($ldap);
    
ldap_close($ldap);
}


然後在

......
$attachsig = !empty($_POST['attachsig']) ? 1 : 0;
        
$edituser->setVar('attachsig', $attachsig);
        
$edituser->setVar('timezone_offset', $_POST['timezone_offset']);
        
$edituser->setVar('uorder', $_POST['uorder']);
        
$edituser->setVar('umode', $_POST['umode']);
        
$edituser->setVar('notify_method', $_POST['notify_method']);
        
$edituser->setVar('notify_mode', $_POST['notify_mode']);
        
$edituser->setVar('bio', xoops_substr($_POST['bio'], 0, 255));
        
$edituser->setVar('user_occ', $_POST['user_occ']);
        
$edituser->setVar('user_intrest', $_POST['user_intrest']);
        
$edituser->setVar('user_mailok', $_POST['user_mailok']);
        if (!empty(
$_POST['usecookie'])) {
            
setcookie($xoopsConfig['usercookie'], $xoopsUser->getVar('uname'), time()+ 31536000);
        } else {
            
setcookie($xoopsConfig['usercookie']);
        }


之後加入下面

//LDAP 更新
    
$uname = $edituser->getvar('uname');
    
UpdateLDAP($uname,$mail,$password);


這樣就完成囉!

XOOPS完全整合LDAP--直接註冊使用者到LDAP

作者:cosseto

讓XOOPS完全整合LDAP,就是說要可以更改密碼等等資訊到LDAP....。

(1)mainfile.php
加入下列定義


[size=medium]//Define LDAP HOST
define('LDAP_HOST', 'IP 或 網址');
define('LDAP_ADMIN_DN', '管理的DN');
define('LDAP_ADMIN_PW', '管理的密碼');
define('LDAP_BASE_DN', 'uid=%s,查詢user的dn');[/size]

寫入使用者的DN那個位置有個注意事項(格式)
uid=%s 是為了要增加使用者留下的位置。dn的屬性皆不可以留空白
其他看需要可能會再增加。

(2)register.php
加入下面的函數定義

[size=medium]
function
NewToLDAP($uname, $email, $pass)
{
    
//LDAP Regist STEP
    
$ldap = ldap_connect(LDAP_HOST) or die('1');
    
$ldap_bind = ldap_bind($ldap, LDAP_ADMIN_DN, LDAP_ADMIN_PW) or die('2');
    
//$uname, $email, $pass, $vpass
    
$info['cn'] = $uname;
    
$info['sn'] = $uname;
    
$info['mail'] = $email;
    
$info['userPassword'] = "{md5}".base64_encode(pack("H*",md5($pass)));
    
//objectClass: posixAccount, objectClass: top, objectClass: inetOrgPerson,
    
$info['objectClass'] = 'posixAccount';
    
$info['objectClass'] = 'top';
    
$info['objectClass'] = 'inetOrgPerson';
    
//To ADD
    
ldap_add($ldap, sprintf(LDAP_BASE_DN,$uname), $info)
        or die(
sprintf("%s(%s)",ldap_error($ldap),ldap_errno($ldap)));
    
//unbine, close
    
ldap_unbind($ldap);
    
ldap_close($ldap);
}
[/
size]


然後在下面區段之前

if ( empty($stop) ) {
        
$member_handler =& xoops_gethandler('member');
        
$newuser =& $member_handler->createUser();
        
$newuser->setVar('user_viewemail',$user_viewemail, true);
        
$newuser->setVar('uname', $uname, true);
        
$newuser->setVar('email', $email, true);


加入

[size=medium]//Add to LDAP
if( empty($stop) ) {
    
NewToLDAP($uname, $email, $pass);
}
[/
size]


以上僅在LDAP裡面登記基本的帳號密碼資料,之後再對細部的項目修改,畢竟主要需要認證的部份就只有帳號密碼而已。

接下來要改
(1)編輯使用者的部份(針對密碼、信箱等等)
(2)管理者編輯使用者部份(針對密碼、信箱等等)

xoops大量建立帳號-學生帳號與姓名

一、利用php語法立大量帳號,將lots.php上傳到xoops的根目錄內。(下載lots.zip)接著,透過網頁執行,即可建立大量預設帳號。不過還是需要一點技巧,密碼必須一致。
# 20行 改同一組密碼 $newuser->setVar('pass', md5(123456));

http://xxx.tw/xoops/lots.php

二、利用phpmyadmin,先匯出xoops的[xxx_users]備存用,失敗了可以載入回去。建議存成CSV格式比較好編輯。

三、利用OpenOffice的計算軟體(比Excel好用,方便utf8),主要修改「帳號」、「姓名」、「時區」 等即可。

四、修改完成後,利用phpmyadmin「清空」原先的[xxx_users],再把資料「載入」回去。

五、測試帳號是否正常,大功告成。

PS:另外,亦可參考(x_user修改版)桃園縣中小學資訊教育成果網站

http://rd.tyc.edu.tw/viewtopic.php?p=1491&sid=b9f1cf3b513fe9f33b8b147cbcee8257

「utf8_swedish_ci」轉碼「utf8_general_ci」

可以利用  NotePad工具將校對質「utf8_swedish_ci」轉成常見的「utf8_general_ci」

wget phpMyAdmin.tar.gz版 

vi /var/www/html/phpMyAdmin/libraries/select_lang.lib.php

#'utf-8' = 'utf8'
'utf-8' = 'latin1',

yum_phpMyAdmin2

vi /usr/share/phpMyAdmin/libraries/select_lang.lib.php
  • 找到 //MySQL charsets map

#'utf-8' = 'utf8'
'utf-8' = 'latin1',

yum_phpMyAdmin3

  • vi /usr/share/phpMyAdmin/libraries/database_interface.lib.php
  • 將內utf8的地方改成 latin1
//PMA_DBI_query("SET CHARACTER SET 'utf8';", $link, PMA_DBI_QUERY_STORE);

PMA_DBI_query("SET CHARACTER SET 'latin1';", $link, PMA_DBI_QUERY_STORE);

參考:http://hi.baidu.com/georgehoul/blog/item/958141dfab28091a495403a8.html

----------------------------------------------------------------------------------------------

單一資料庫匯出

  • mysqldump -uroot -p -a --default-character-set=utf8 xoops > xoops.sql

單一資料庫匯入

  • mysql xoops < xoops.sql -u root -p --default-character-set=utf8