Index: trunk/install/php/foltialib.php =================================================================== --- trunk/install/php/foltialib.php (リビジョン 89) +++ trunk/install/php/foltialib.php (リビジョン 94) @@ -93,14 +93,5 @@ } } - - /* LIKE 用の文字列のエスケープ */ - function escape_like($sql, $quote = TRUE) { - return ($quote ? "'" : "") . - str_replace(array("\\\\", "%" , "_" ), - array("\\\\\\\\", "\\\\%", "\\\\_"), - pg_escape_string($sql)) . - ($quote ? "'" : ""); - } - + /* SQL 文字列のエスケープ */ function escape_string($sql, $quote = FALSE) { @@ -108,8 +99,18 @@ return "null"; } + if (preg_match("/^pgsql/", DSN)){ return ($quote ? "'" : "") . pg_escape_string($sql) . ($quote ? "'" : ""); - } + }else if (preg_match("/^sqlite/", DSN)){ + /* return ($quote ? "'" : "") . + sqlite_escape_string($sql) . + ($quote ? "'" : ""); + */ + return($sql); + }else{ + return "null"; + } + } /* SQL 数値のエスケープ */ @@ -124,41 +125,55 @@ } - /* PostgreSQL サーバに接続 */ + /* DBに接続 */ function m_connect() { -/* $con = @pg_connect("host=".DBHOST ." dbname=".DATABASE_NAME . - " user=".USER_NAME . - " password=".USER_PASSWORD); -*/ - $con = @pg_pconnect("host=".DBHOST ." dbname=".DATABASE_NAME . - " user=".USER_NAME . - " password=".USER_PASSWORD); - - - if (!$con) { - die_exit("データベースに接続出来ませんでした。"); + try { + $dbh = new PDO(DSN); + $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + return($dbh); + } catch (PDOException $e) { + die_exit($e->getMessage() . ": データベースに接続出来ませんでした。"); } /* データベースと、PHP の内部文字コードが違う場合 */ - return($con); } /* データベースとの接続を切り離す */ - function m_close($con) { - return @pg_close($con); - } - - /* SQL 文を実行 */ - function m_query($con, $query, $errmessage) { - $rtn = @pg_query($con, $query); - if (!$rtn) { +function m_close($dbh) { + return null; + } + +//旧関数 sql_queryに置き換え +function m_query($dbh, $query, $errmessage) { + try { + $rtn = $dbh->query($query); + return($rtn); + } catch (PDOException $e) { /* エラーメッセージに SQL 文を出すのはセキュリティ上良くない!! */ $msg = $errmessage . "
\n" . - @pg_last_error($con) . "
\n" . + $e->getMessage() . "
\n" . + var_export($e->errorInfo, true) . "
\n" . "" . htmlspecialchars($query) . "\n"; - $rtn = @pg_query($con, "rollback");//04.4.8 - m_close($con); +// $dbh->rollBack(); + $dbh = null; die_exit($msg); } + } +/* SQL 文を実行 */ +function sql_query($dbh, $query, $errmessage,$paramarray) { + try { + $rtn = $dbh->prepare("$query"); + $rtn->execute($paramarray); return($rtn); + } catch (PDOException $e) { + /* エラーメッセージに SQL 文を出すのはセキュリティ上良くない!! */ + $msg = $errmessage . "
\n" . + $e->getMessage() . "
\n" . + var_export($e->errorInfo, true) . "
\n" . + "" . htmlspecialchars($query) . + "\n"; +// $dbh->rollBack(); + $dbh = null; + die_exit($msg); + } } @@ -166,7 +181,8 @@ function m_showtable($rs) { /* 検索件数 */ - $maxrows = pg_num_rows($rs); + $maxrows = 0; - if ($maxrows == 0) { + $rowdata = $rs->fetch(); + if (! $rowdata) { echo("

データが存在しません

\n"); return 0; @@ -174,5 +190,5 @@ /* フィールド数 */ - $maxcols = pg_num_fields($rs); + $maxcols = $rs->columnCount(); ?> @@ -183,5 +199,6 @@ for ($col = 1; $col < $maxcols; $col++) { /* pg_field_name() はフィールド名を返す */ - $f_name = htmlspecialchars(pg_field_name($rs, $col)); + $meta = $rs->getColumnMeta($col); + $f_name = htmlspecialchars($meta["name"]); echo("\n"); } @@ -192,8 +209,8 @@ \n"); - /* pg_fetch_row で一行取り出す */ - $rowdata = pg_fetch_row($rs, $row); /* 1列目にリンクを張る */ echo(" @@ -212,8 +229,10 @@ } - /* 指定したコードのデータを表示 */ - function m_viewdata($con, $code) { - /* コードに該当するデータを検索 */ - $query = " + +function m_viewdata($dbh, $code) { + +/*これ使ってないよね? + + $query = " select p.code ,p.name @@ -222,27 +241,28 @@ ,s.name as job ,p.profile - ,to_char(p.editdate, 'YYYY/MM/DD HH24:MI:SS') as editdate + ,datetime(p.editdate) as editdate from inet_profile p left join inet_job s on p.job = s.code where p.code = $code"; - $rs = m_query($con, $query, "個人情報の取得に失敗しました。"); - if (pg_num_rows($rs) == 0) { + $rs = m_query($dbh, $query, "個人情報の取得に失敗しました。"); + $rowdata = $rs->fetch(); + if (! $rowdata) { echo("

データが存在しません

\n"); return FALSE; } - /* フィールド数 */ - $maxcols = pg_num_fields($rs); - /* 先頭行 */ - $rowdata = pg_fetch_row($rs, 0); + // フィールド数 + $maxcols = $rs->columnCount(); ?>
$f_name\n"); - } + } while ($rowdata = $rs->fetch()); ?>
- + getColumnMeta(1); ?> + - + getColumnMeta($col); ?> - + @@ -250,8 +270,8 @@
fetch(); + if (! $rowdata) { print("番組データがありません
"); }else{ @@ -301,8 +321,5 @@ //print "\n"; print "\n"; @@ -429,6 +446,8 @@ global $recfolderpath,$recfolderpath; - exec ( "df -h $recfolderpath | grep $recfolderpath", $hdfreearea); - $freearea = preg_split ("/[\s,]+/", $hdfreearea[0]); +// exec ( "df -h $recfolderpath | grep $recfolderpath", $hdfreearea); +// $freearea = preg_split ("/[\s,]+/", $hdfreearea[0]); + exec ( "df -hP $recfolderpath", $hdfreearea); + $freearea = preg_split ("/[\s,]+/", $hdfreearea[count($hdfreearea)-1]); return $freearea; @@ -557,18 +576,20 @@ "; $useraccount = m_query($con, $query, "DBクエリに失敗しました"); - $useraccountrows = pg_num_rows($useraccount); - - if ($useraccountrows == 1 ){ - $rowdata = pg_fetch_row($useraccount, 0); + $rowdata = $useraccount->fetch(); + if (! $rowdata) { + header("HTTP/1.0 401 Unauthorized"); + redirectlogin(); + } + $memberid = $rowdata[0]; $userclass = $rowdata[1]; $username = $rowdata[2]; $dbpasswd = $rowdata[3]; - }else{ + + $rowdata = $useraccount->fetch(); + if ($rowdata) { header("HTTP/1.0 401 Unauthorized"); - //print ""; redirectlogin(); - }//end if - + } // passwdをdbから取りだし @@ -627,13 +648,17 @@ "; $useraccount = m_query($con, $query, "DBクエリに失敗しました"); - $useraccountrows = pg_num_rows($useraccount); - - if ($useraccountrows == 1 ){ - $rowdata = pg_fetch_row($useraccount, 0); - //$userclass = $rowdata[1]; - return ($rowdata[1]); - }else{ - return (99);//エラー - }//end if + $rowdata = $useraccount->fetch(); + if (! $rowdata) { + return (99); + } + + $userclass = $rowdata[1]; + + $rowdata = $useraccount->fetch(); + if ($rowdata) { + return (99); + } + + return ($userclass); }else{ @@ -655,13 +680,17 @@ "; $useraccount = m_query($con, $query, "DBクエリに失敗しました"); - $useraccountrows = pg_num_rows($useraccount); - - if ($useraccountrows == 1 ){ - $rowdata = pg_fetch_row($useraccount, 0); - //$userclass = $rowdata[1]; - return ($rowdata[0]); - }else{ + $rowdata = $useraccount->fetch(); + if (! $rowdata) { return (-1);//エラー - }//end if + } + + $memberid = $rowdata[0]; + + $rowdata = $useraccount->fetch(); + if ($rowdata) { + return (-1); + } + + return ($memberid); }else{ @@ -682,18 +711,21 @@ "; $useraccount = m_query($con, $query, "DBクエリに失敗しました"); - $useraccountrows = pg_num_rows($useraccount); - - if ($useraccountrows == 1 ){ - $rowdata = pg_fetch_row($useraccount, 0); - return ($rowdata[2]); + $rowdata = $useraccount->fetch(); + if (! $rowdata) { + return ("");//エラー + } + + $name = $rowdata[2]; + + $rowdata = $useraccount->fetch(); + if ($rowdata) { + return (""); + } + + return ($name); + }else{ - return ("");//エラー + return (""); }//end if - -}else{ - return (""); -}//end if - - }//end function getmemberid2name