回精華區
作者appleboy.bbs@bbs.freestudio.twbbs.org (小惡魔) 看板: plan
標題[修正] BBS 與 Coppermine Photo Gallery 帳號同步
時間福利創意工作室 (2005/12/16 Fri 04:06:15) Updated: 2005/12/16
原作者是:Titan.bbs@KH.twbbs.org

這個部份 因為用到MySQL跟 php部份 所以修改請小心一點

而我是在底下的環境修改

FreeBSD 6.0release
apache 2.0.55
mysql-server-5.0.16
php5-5.1.1
我用 cpg 1.4.2 (stable)版

上面應該是 比較新的環境,我不敢確定其他平台,不過我想大致上都ok

以下是修改

: login.php

: 找到 $cookie_warning = ''; 在後面加上

function is_ok($string)  //rocet提供
{
  $flag = trim(preg_replace("/(^[+-])((.+))/", "\\1", $string));
  if ($flag == "+")
    return true;
  else if ($flag == "-")
    return false;
}

$socket = 0;  // socket 開啟完成
$user = 0;    // user 檢查通過
$pass = 0;    // pass 檢查通過
$ok = 0;      // socket/user/pass 都正確
$bbs_host = "" // 請填上 自己架設的bbs Domain

if (isset($HTTP_POST_VARS['submitted']))
{
  $fp = fsockopen($bbs_host, 110, $errno, $errstr, 30);
  if (!$fp)
  {
    echo "$errstr ($errno)<br />\n";
  }
  else
  {
    if (is_ok(fgets($fp)))
      $socket = 1;
    else
      echo "socket can't open";

    fputs($fp, "user " . addslashes($HTTP_POST_VARS['username']) . "\r\n");
    if (is_ok(fgets($fp)))
      $user = 1;
    fputs($fp, "pass " . addslashes($HTTP_POST_VARS['password']) . "\r\n");
    if (is_ok(fgets($fp)))
      $pass = 1;
    fputs($fp, "quit\r\n");

    if ($socket && $user && $pass)
      $ok = 1;

    $checkdata = cpg_db_query("SELECT user_id FROM {$CONFIG['TABLE_USERS']}
      WHERE user_name = '" . addslashes($HTTP_POST_VARS['username']) . " '");

    if (!(mysql_num_rows($checkdata)) && $ok == "1")
    {
      $checkvalue = cpg_db_query("SELECT user_id FROM {$CONFIG['TABLE_USERS']}
        ORDER BY `user_id` DESC");
      $count = mysql_fetch_array($checkvalue);
      $newcount = $count['user_id'] + 1;

      cpg_db_query("INSERT INTO {$CONFIG['TABLE_USERS']}
        (`user_id`, `user_group`, `user_active`, `user_name`,
         `user_password`, `user_lastvisit`, `user_regdate`,
         `user_group_list`, `user_email`, `user_actkey`)
        VALUES ('$newcount', '2', 'YES', '" .
        addslashes($HTTP_POST_VARS['username']) . "',
        '".addslashes(md5($HTTP_POST_VARS['password']))."',
        NOW(), NOW() , '', '','')");
    }

    $result = cpg_db_query("SELECT user_password FROM {$CONFIG['TABLE_USERS']}
      WHERE user_name = '" . addslashes($HTTP_POST_VARS['username']) . "'
      AND user_active ='YES'");

    $value = mysql_fetch_array($result);

    $HTTP_POST_VARS['password'] = $value['user_password'];

    fclose($fp);
  }
}

: 找到 $USER_DATA = $cpg_udb->login 這行 在底下不遠處

- if ( $USER_DATA = $cpg_udb->login( addslashes($_POST['username']),
-    addslashes($_POST['password']), isset($_POST['remember_me']) ) ) {

+ if ( ($USER_DATA = $cpg_udb->login( addslashes($_POST['username']),
+ addslashes($_POST['password']), isset($_POST['remember_me']) )) && $ok ==
+    "1") {

上面 很多php 都經過斷行 所以 請小心加上去 至少要懂一點點php

帳號同步,那就不需要修改密碼的選項了

找到這一行,約308行左右  把下面這段刪除

<input type="submit" name="change_pass"
          value="{$lang_register_php['change_pass']}" class="button">

或是註解起來,如:

<!-- <input type="submit" name="change_pass" value="{$lan
          value="{$lang_register_php['change_pass']}" class="button"> -->

如果有問題 請寄信跟我說

--
  Origin:  FreeBSD 惡魔工作站˙福利創意工作室  freestudio.twbbs.org 
  Author: appleboyFreeBSD.ee.CCU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻