mysql DB Class

/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +——————————————————–+
// | PHP version 4.3.x |
// +——————————————————–+
// | Copyright (c) 2003 Song Hyo-Jin |
// +——————————————————–+
// | This source file is GPL. |
// +——————————————————–+
// | Author : Song Hyo-Jin |
// | (MSN Messengerable) |
// +——————————————————–+
//
// $Id: mysql.inc, v 0.01 2004/01/15 11:40:00 crosser Exp $
//
// MySQL database control

/*
$test = new MyDB(‘access_file.ini’, [transaction bool]);
$test->query(‘sql query’);
$test->close();
$data = mysql_fetch_object($test->result);

Want query error report
$test->err_report = true;
$test->query(‘sql query’);

With transaction
$test = new MyDB(‘access_file.ini’, true);
$test->query(‘sql query’);
$test->query(‘sql query’);
$test->query(‘sql query’);
if(not good)
$test->close_error(‘error message’);
// or exit(‘error message’); auto rollback;

access_file.ini

ip = localhost
user = sql_user
pass = sql_pass
db = sql_db
*/

// MySQL Unsigned Limit
define(‘MyBIGINT’, ‘18446744073709551615’);
define(‘MyINT’, 4294967295);
define(‘MyMEDIUMINT’, 16777215);
define(‘MySMALLINT’, 65535);
define(‘MyTINYINT’, 255);

$db_set_file = array();

class MyDB
{
var $conn, $transaction, $result, $err_report, $query_count;

function MyDB($db_setting, $transaction = false)
{
$this->err_report = false;
$this->transaction = $transaction;
$this->query_count = 0;
static $db_set_file = array();

if(false === array_key_exists($db_setting, $db_set_file))
$db_set_file[$db_setting] = parse_ini_file($db_setting);
$myset = &$db_set_file[$db_setting];
$this->conn = mysql_connect($myset[‘ip’], $myset[‘user’], $myset[‘pass’]) or exit(‘mysql_connect error’);
mysql_select_db($myset[‘db’], $this->conn) or exit(‘mysql_select_db error’);
if($transaction) {
mysql_query(‘SET AUTOCOMMIT=0’, $this->conn) or exit(‘mysql_transaction_autocommit error’);
mysql_query(‘BEGIN’, $this->conn) or exit(‘mysql_transaction_begin error’);
register_shutdown_function(array(&$this, ‘close_error’));
}
return true;
}

function close()
{
if($this->transaction)
mysql_query(‘COMMIT’, $this->conn) or exit(‘mysql_transaction_commit error’);
mysql_close($this->conn) or exit(‘mysql_close error’);
$this->conn = false;
return true;
}

function close_error($message = ‘mysql_error exit’)
{
if($this->transaction)
mysql_query(‘ROLLBACK’, $this->conn) or exit(‘mysql_transaction_rollback error’);
mysql_close($this->conn) or exit(‘mysql_close_error error’);
exit($message);
return true;
}

function query($query)
{
$this->query_count ++;
$this->result = mysql_query($query, $this->conn) or $this->close_error($this->err_report?’query < '.$query.' > error (count : ‘.$this->query_count.’ ) : ‘.mysql_error($this->conn):’query error (count : ‘.$this->query_count.’ )’);
return true;
}
}

?>

사용법

연결
$test = new MyDB(‘access_file.ini’);

트랜잭션용 연결
$test = new MyDB(‘access_file.ini’, true);

쿼리
$test->query(‘sql query’);

종료 (트랜잭션시 자동 COMMIT)
$test->close();

받아온값
$data = mysql_fetch_object($test->result);

오류출력 원할시
$test->err_report = true;
$test->query(‘error query’);

오류있을시에 종료 (트랜잭션시 자동 ROLLBACK)
$test->close_error(‘error message’);

exit() 만 해도 무조건 ROLLBACK (아마 $test->close() 안하고 종료되도 ROLLBACK)

mysql_insert_id 등의 함수 사용시에 $test->conn 링크 사용.
$idx = mysql_insert_id($test->conn);

다이렉트로 택배용지 송장 프린트하는 ActiveX

목장갑
http://20021201.com
Http://www.20021201.com/zone/TaePrint.html
Http://www.20021201.com/zone/TaePrint.cab

아직 많은 테스트단계를 거치진 못했지만, 유저님들의 사용기를 듣고 싶이 이렇게 올려봅니다.
초간단 무식한 프린트를 하지요.
프린터 선택다이얼로그도 뜨지 않습니다. (처음에는 보이게 하려다가 귀찮아서 안뜨게 해버렸습니다.)
윈도우 기본프린터가 택배용지에 물려있어야합니다. 아직 다른 도트프린터에서 확인해보지는 못했지만, 제일정밀의 구닥다리 도트프린터에서 테스트 마치고 올려봅니다.
부족하더라도 어여삐(? ^^;) 봐주시길..ㅋㅋ
뭐, 사용법은 간단합니다.
파라미터 값에 적절한 값을 넣어주고 웹페이지에 삽입시키면 택배용지 규격에 맞게 프린트 됩니다.

단, 주의하실점!
1. 택배용지 프린터를 윈도우즈 기본프린터로 설정해 놓아야합니다.
2. 익스플로어 보안설정은 기본값으로 두고 페이지를 열어주십시오.
3. 설치 인증페이지는 최초 1회만 보여집니다.

허접하지만 혹시 저같이 택배용지때문에 고생하시는 분이 계실지 모른다는 정말 어이없는(?) 생각에 올려놓아봅니다.
배포 무료,카피무료 입니다. 마음대로 가져가서 쓰세요~ ^^

(예제)










1269206351.cab

Qmail + Vpopmail + MySQL ???

글쓴이:Aki_Rose

Aki_Rose
http://www.nweaver.com

### 1. Qmail + Vpopmail + MySQL 설치

조민기 (akirose@iz4u.com) 2003/11/10

테스트환경 : Redhat 7.3 , Kernel 2.4.21

이 문서는 RedHat Linux 7.3을 기반으로 설명하였습니다.

Qmail 설치하기가 여간 힘든게 아니죠? 저도 처음에 좌절과 쓴맛을 보았고 많은 분들이 그러셧으리라 생각됩니다. 제가 설치해본 결과 vpopmail의 설치미스 또는 실행스크립트가 대부분 이더군요. 이 문서를 참고 하셔서 꼭 성공하시기를 빕니다. _(_ _)_

다음과 같은 소스를 준비합니다.
http://webmail.kldp.org/qmail/qmail-1.03.tar.gz
http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
http://kldp.org/~eunjea/qmail/patch/mysql/qmail-ej-cocktail-10+mysql-0.7.4.patch

1.Qmail에 필요한 유저 , 그룹을 추가합니다.

groupadd -f -g nofiles
useradd -c “Mail Server” -g nofiles -u 81 -s /bin/false -r -d /var/qmail qmaild
useradd -c “Mail Server” -g nofiles -u 86 -s /bin/false -r -d /var/qmail qmaill
useradd -c “Mail Server” -g nofiles -u 82 -s /bin/false -r -d /var/qmail/alias alias
useradd -c “Mail Server” -g nofiles -u 87 -s /bin/false -r -d /var/qmail qmailp
groupadd -f -g qmail
useradd -c “Mail Server” -g qmail -u 83 -s /bin/false -r -d /var/qmail qmailq
useradd -c “Mail Server” -g qmail -u 84 -s /bin/false -r -d /var/qmail qmailr
useradd -c “Mail Server” -g qmail -u 85 -s /bin/false -r -d /var/qmail qmails

2.SSL의 설치
OpenSSL을 최신버전의 RPM을 구하여 설치합니다. (http://rpmfind.net)

3.Qmail 패치
일단 qmail 소스의 압축을 풀어줍니다.
$ tar -zxvf qmail-1.03.tar.gz
$ cd qmail-1.03

미리 준비한 임은재님의 칵테일 패치를 적용합니다.
$ patch -p1 < ../qmail-ej-cocktail-10+mysql-0.7.4.patch $ make
$ make setup check

$ ./config-fast nweaver.com
위 명령에서 뒤의 nweaver.com은 qmail에서 사용할 기본 도메인을 지정하여 주는 것입니다. 각자 사용하실 기본 도메인을 적어주시면 됩니다.
위의 명령이 제대로 되었다면 /var/qmail/control/ 안에 qmail이 정상적으로 작동하기 위한 설정 파일들이 생성됩니다. 만약 그렇지 않다면 서버의 DNS 설정(MX 레코드)에 문제가 있는 것입니다.

4.Qmail에 필요한 패키지들 설치 (ucspi-tcp , daemontools)
[ucspi-tcp]
$ tar xzf ucspi-tcp-0.88.tar.gz
$ cd ucspi-tcp-0.88
$ make
$ make setup check
$ chmod 0510 /usr/bin/tcpserver
$ chmod 0510 /usr/bin/tcpclient

[daemontools]
$ mkdir /usr/package
$ chmod 1755 /usr/package
$ tar -zxvf daemontools-0.76.tar.gz -C /usr/package/
$ cd /usr/package/admin/daemontools-0.76/
$ package/install

5.Vpopmail 설치
vpopmail에 필요한 그룹과 유저를 추가합니다.
$ groupadd vchkpw
$ useradd -g vchkpw -d /home/mail vpopmail

vpopmail 소스
http://inter7.com/vpopmail/vpopmail-5.2.1.tar.gz

소스의 압축을 해재합니다.
$ tar -zxvf vpopmail-5.2.1.tar.gz
$ cd vpopmail-5.2.1

[*] 선택사항 ############################################################
아래 패치는 vmysql.h 파일을 편집하여 mysql의 정보를 컴파일 하지 않고 설정파일로 사용할 수 있게 하는 패치 입니다. 패치를 적용하게 되면 vpopmail의 홈디렉토리에 ‘mysqlconn.dat’라는 파일을 생성하신 후 파일 안에 다음과 같은 형태의 택스트를 저장하면 됩니다.
MYSQL_SERVER|MYSQL_USER|MYSQL_PASSWORD|MYSQL_DATABASE|
예제) localhost|test|test1234|test|
————————————————————————
http://kldp.org/~eunjea/qmail/patch/vpopmail/vpopmail-5.2.1-vmysql.patch
————————————————————————
만약 이 패치를 적용하고 mysqlconn.dat 파일을 생성하셧다면 다음과 같이 권한을 설정합니다.
$ chown root.vchkpw ~vpopmail/mysqlconn.dat
$ chmod 640 ~vpopmail/mysqlconn.dat
#########################################################################

위 패치를 적용하지 않으셧다면 소스에서 vmysql.h 파일의 다음과 같은 내용을 수정하여야 합니다.

#define MYSQL_UPDATE_SERVER “localhost”
#define MYSQL_UPDATE_USER “vpopmail”
#define MYSQL_UPDATE_PASSWD “secret”

#define MYSQL_READ_SERVER “localhost”
#define MYSQL_READ_USER “vpopmail”
#define MYSQL_READ_PASSWD “secret”

#define MYSQL_VPORT 0
#define MYSQL_DEFAULT_TABLE “vpopmail”
#define MYSQL_DATABASE “vpopmail”
#define MYSQL_DOT_CHAR ‘_’
#define MYSQL_LARGE_USERS_TABLE “users”

위에 적은 정보를 바탕으로 mysql에 vpopmail에 사용할 DB와 계정을 등록해 두어야 합니다. 필자는 vpopmail 이라는 DB와 계정을 만들었습니다. 테이블은 만들지 않아도 됩니다.
mysql -u root -p 디비루트비번
CREATE DATABASE vpopmail;
use mysql;
grant CREATE,INSERT,SELECT,DELETE,UPDATE on vpopmail.* to vpopmail;
grant CREATE,INSERT,SELECT,DELETE,UPDATE on vpopmail.* to vpopmail@localhost;
set password for ‘vpopmail’@’%’=password(‘패스워드’);
set password for ‘vpopmail’@’localhost’=password(‘패스워드’);
flush privileges

그리고 설치에 앞서 vpopmail의 홈 폴더에 etc폴더를 미리 만들어줍니다.
미리 만들어두지 않으면 inc_deps , lib_deps 파일이 생성되지 않습니다.
mkdir -p ~vpopmail/etc
chmod 777 ~/vpopmail/etc

[*] 설치 ————————————————–
$ ./configure –enable-default-domain=nweaver.com
–enable-mysql=y
–enable-roaming-users=y
–enable-tcprules-prog=/usr/local/bin/tcprules
———————————————————–
[#] 설정이 끝나면 한가지 확인할 것이 있습니다.
설정이 끝났다면 config.h 라는 파일이 생성되어 있을 것입니다. 이 파일을 열어서 다음 사항을 확인합니다.
가끔 아래의 라인이 #define TCP_FILE “/etc/tcp.smtp” 라고 되어 있는 경우가 있는데 이런 경우 아래와 같이 수정합니다.
–> #define TCP_FILE “/home/vpopmail/etc/tcp.smtp”
———————————————————–

[#] 컴파일
$ make
$ make install-strip
———————————————————–

[#] tcprule 파일 생성
/home/vpopmail/etc/tcp.smtp를 다음과 같이 생성
———————————————————–
127.0.0.1:allow,RELAYCLIENT=””
———————————————————–
$ chown vpopmail.vchkpw ~vpopmail/etc/tcp.smtp
$ ~vpopmail/bin/clearopensmtp

[#] 크론탭에 다음과 같은 내용 등록
$ crontab -e
40 * * * * /home/vpopmail/bin/clearopensmtp

[#] cdb 파일 생성
$ tcprules ~vpopmail/etc/tcp.smtp.cdb ~vpopmail/etc/tcp.smtp.tmp < ~vpopmail/etc/tcp.smtp
———————————————————–

6.실행스크립트 생성
/var/qmail/rc를 아래와 같은 내용으로 생성
———————————————–
#!/bin/bash
exec env – PATH=”/var/qmail/bin:$PATH”
qmail-start ./Maildir/
———————————————–

$ mkdir -p /var/qmail/supervise/qmail-send/log
$ mkdir -p /var/qmail/supervise/qmail-smtpd/log
$ chmod +t /var/qmail/supervise/qmail-send
$ chmod +t /var/qmail/supervise/qmail-smtpd

/var/qmail/supervise/qmail-send/run를 아래와 같은 내용으로 생성
———————————————–
#!/bin/sh
exec /var/qmail/rc
———————————————–

/var/qmail/supervise/qmail-send/log/run를 아래와 같은 내용으로 생성
———————————————–
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill
/usr/local/bin/multilog t /var/log/qmail
———————————————–

/var/qmail/supervise/qmail-smtpd/run를 아래와 같은 내용으로 생성
—————————————————————————–
#!/bin/sh
Q_UID=`id -u vpopmail`
Q_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 7340032
/usr/local/bin/tcpserver -vRH -l 0 -x /home/vpopmail/etc/tcp.smtp.cdb
-u $Q_UID -g $Q_GID 0 25
/var/qmail/bin/qmail-smtpd nweaver.com
/home/vpopmail/bin/vchkpw /bin/true 2>&1
—————————————————————————–

/var/qmail/supervise/qmail-smtpd/run를 아래와 같은 내용으로 생성
—————————————————
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill
/usr/local/bin/multilog t /var/log/qmail/smtpd
—————————————————

[#] vpopmail 실행스크립트
mkdir /var/qmail/supervise/vpop

/var/qmail/supervise/vpop/run를 아래와 같은 내용으로 생성
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
——————————————————————————
exec /usr/local/bin/softlimit -m 2500000
tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110
/var/qmail/bin/qmail-popup nweaver.com
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
——————————————————————————

생성한 스크립트 파일들의 퍼미션 변경
$ chmod 755 /var/qmail/supervise/qmail-send/run
$ chmod 755 /var/qmail/supervise/qmail-send/log/run
$ chmod 755 /var/qmail/supervise/qmail-smtpd/run
$ chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
$ chmod 755 /var/qmail/supervise/vpop/run

임은재님이 만드신 실행 스크립트를 가져옵니다.
$ cd /etc/rc.d/init.d/
$ wget http://kldp.org/~eunjea/qmail-startup.txt
$ mv qmail-startup.txt qmail
$ chmod 755 qmail
$ chkconfig –add qmail
$ chkconfig –level 345 qmail on

Sendmail을 사용하기 위해서 링크를 생성합니다.
$ ln -s /var/qmail/bin/sendmail /usr/lib
$ ln -s /var/qmail/bin/sendmail /usr/sbin

7.로그기록폴더 생성
mkdir -p /var/log/qmail/smtpd
chown qmaill /var/log/qmail /var/log/qmail/smtpd

[!] 서비스 시작
$ service qmail start
$ ln -s /var/qmail/supervise/vpop /service

처음쓰는 글이고 글재주가 부족하여 설명도 부족하고 부족한 점이 많습니다. 제가 하루종일 설치하며 실패하며 얻은결과이며 성공하기까지의 과정입니다.

다음번은 courier-imap, qmailadmin, SquirrelMail, Procmail의 설치를 다루도록 하겠습니다.

imcrazy 딴지!!!
./config
해서 설정 파일이 생성 되지 않을때가 MX설정이 잘못되었을 때 입니다.( 저는 djbdns 사용해서 설정이 제대로 되었다고 생각했는데도 안되더군요..)

./config-fast nweaver.com
이것은 ./config 로 자동 설정 되지 않을때.. 강제로 도메인을 지정해 주는 것 입니다.

mysql 다중검색

// TEMPORARY TABLE MAKE

$tmp_make=mysql_query(“create temporary table tmp (

sid int NOT NULL DEFAULT ‘0’ auto_increment,

board varchar(20) NOT NULL,

bid int(11) NOT NULL,

subject varchar(255) NOT NULL,

content text,

signdate int(10) NOT NULL,

PRIMARY KEY(sid)

)”);

// 게시판 환경 설정 테이블에서 각 게시판 BOARD 가져오기

$total_result =mysql_query(“select board from board_config where limit_user_level < $admin_level"); $board_total = mysql_num_rows($total_result); // BOARD 별로 게시판 돌면서 검색한다 for($i=0;$i<$board_total;$i++) { mysql_data_seek($total_result,$i); $board = mysql_fetch_array($total_result); $search=mysql_query(“select bid,subject,content,signdate from $board[board] where name like ‘%$key%’ or subject like ‘%$key%’ or content like ‘%$key%'”); $search_total=mysql_num_rows($search); // 검색 결과를 TEMPORARY 테이블에 집어 넣는다 for($j=0;$j<$search_total;$j++) { mysql_data_seek($search,$j); $row = mysql_fetch_array($search); $insert=mysql_query(“insert into tmp (board,bid,subject,content,signdate) values (‘$board[board]’,’$row[bid]’,’$row[subject]’,’$row[content]’,’$row[subject]’) “); } } // TEMPORARY 테이블 정보 가져오기 $result=mysql_query(“select * from tmp order by signdate”); $total=mysql_num_rows($result); echo “

“;

// 보여주기

for($k=0;$k<$total;$k++) { mysql_data_seek($result,$k); $board=mysql_fetch_array($result); $board[subject]=stripslashes($board[subject]); $board[content]=stripslashes($board[content]); $board[content]= htmlspecialchars($board[content]); $board[signdate]=date(“Y/m/d”,$board[signdate]); $board[content] = shortenStr($board[content],200,”
more…..”);

$board[subject] = shortenStr($board[subject],60,”…..”);

$board[subject] = eregi_replace(“($key)”,”1“,$board[subject]);

$board[content] = eregi_replace(“($key)”,”1“,$board[content]);

echo “

“;

}

$drop=mysql_query(“drop table tmp”);

스핀버튼 컨트롤

쇼핑몰 카트 만들다가 값 증감시키는 버튼을 매번 만들려면 디쟈이너들이 템플릿 작업하기에도 문제가 있을꺼같아 htc로 하나 만들어봤습니다.

htc를 사용하는 여러 방법중에 css를 이용하는 방법을 선택했습니다.

사용하기 전에 위와같이 정의하시면 로드와함께 클래스이름에 행동자(behavior)가 달라붙습니다.
그다음 스핀버튼을 사용하고자 하는 input 태그에 spinbtn 이라는 클래스 이름을 주면 끝입니다.

그 외에 사용할 수 있는 속성에는
maxvalue와 step 이 있습니다.
잘 아실꺼라 믿고, 예제 보시면 이해 갈껍니다.




스핀버튼

기본 스핀버튼:

값이 미리정해짐:

3씩 증감:

최대값 5:



1284676250.htc

© 2025 갤러리 POMODORO - 테마: Patus 제작자 FameThemes.

검 색 어 $key$total 개의 게시물이 검색 되었습니다

$board[subject] ——- $board[signdate]

$board[content]