チェンジセット 94: trunk/install/php/foltialib.php
- コミット日時:
- 2010/02/28 22:28:26 (15 年前)
- ファイル:
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
trunk/install/php/foltialib.php
r89 r94 93 93 } 94 94 } 95 96 /* LIKE 用の文字列のエスケープ */ 97 function escape_like($sql, $quote = TRUE) { 98 return ($quote ? "'" : "") . 99 str_replace(array("\\\\", "%" , "_" ), 100 array("\\\\\\\\", "\\\\%", "\\\\_"), 101 pg_escape_string($sql)) . 102 ($quote ? "'" : ""); 103 } 104 95 105 96 /* SQL 文字列のエスケープ */ 106 97 function escape_string($sql, $quote = FALSE) { … … 108 99 return "null"; 109 100 } 101 if (preg_match("/^pgsql/", DSN)){ 110 102 return ($quote ? "'" : "") . 111 103 pg_escape_string($sql) . 112 104 ($quote ? "'" : ""); 113 } 105 }else if (preg_match("/^sqlite/", DSN)){ 106 /* return ($quote ? "'" : "") . 107 sqlite_escape_string($sql) . 108 ($quote ? "'" : ""); 109 */ 110 return($sql); 111 }else{ 112 return "null"; 113 } 114 } 114 115 115 116 /* SQL 数値のエスケープ */ … … 124 125 } 125 126 126 /* PostgreSQL サーバに接続 */127 /* DBに接続 */ 127 128 function m_connect() { 128 /* $con = @pg_connect("host=".DBHOST ." dbname=".DATABASE_NAME . 129 " user=".USER_NAME . 130 " password=".USER_PASSWORD); 131 */ 132 $con = @pg_pconnect("host=".DBHOST ." dbname=".DATABASE_NAME . 133 " user=".USER_NAME . 134 " password=".USER_PASSWORD); 135 136 137 if (!$con) { 138 die_exit("データベースに接続出来ませんでした。"); 129 try { 130 $dbh = new PDO(DSN); 131 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 132 return($dbh); 133 } catch (PDOException $e) { 134 die_exit($e->getMessage() . ": データベースに接続出来ませんでした。"); 139 135 } 140 136 /* データベースと、PHP の内部文字コードが違う場合 */ 141 return($con);142 137 } 143 138 144 139 /* データベースとの接続を切り離す */ 145 function m_close($con) { 146 return @pg_close($con); 147 } 148 149 /* SQL 文を実行 */ 150 function m_query($con, $query, $errmessage) { 151 $rtn = @pg_query($con, $query); 152 if (!$rtn) { 140 function m_close($dbh) { 141 return null; 142 } 143 144 //旧関数 sql_queryに置き換え 145 function m_query($dbh, $query, $errmessage) { 146 try { 147 $rtn = $dbh->query($query); 148 return($rtn); 149 } catch (PDOException $e) { 153 150 /* エラーメッセージに SQL 文を出すのはセキュリティ上良くない!! */ 154 151 $msg = $errmessage . "<br>\n" . 155 @pg_last_error($con) . "<br>\n" . 152 $e->getMessage() . "<br>\n" . 153 var_export($e->errorInfo, true) . "<br>\n" . 156 154 "<small><code>" . htmlspecialchars($query) . 157 155 "</code></small>\n"; 158 $rtn = @pg_query($con, "rollback");//04.4.8 159 m_close($con);156 // $dbh->rollBack(); 157 $dbh = null; 160 158 die_exit($msg); 161 159 } 160 } 161 /* SQL 文を実行 */ 162 function sql_query($dbh, $query, $errmessage,$paramarray) { 163 try { 164 $rtn = $dbh->prepare("$query"); 165 $rtn->execute($paramarray); 162 166 return($rtn); 167 } catch (PDOException $e) { 168 /* エラーメッセージに SQL 文を出すのはセキュリティ上良くない!! */ 169 $msg = $errmessage . "<br>\n" . 170 $e->getMessage() . "<br>\n" . 171 var_export($e->errorInfo, true) . "<br>\n" . 172 "<small><code>" . htmlspecialchars($query) . 173 "</code></small>\n"; 174 // $dbh->rollBack(); 175 $dbh = null; 176 die_exit($msg); 177 } 163 178 } 164 179 … … 166 181 function m_showtable($rs) { 167 182 /* 検索件数 */ 168 $maxrows = pg_num_rows($rs);183 $maxrows = 0; 169 184 170 if ($maxrows == 0) { 185 $rowdata = $rs->fetch(); 186 if (! $rowdata) { 171 187 echo("<p class=\"msg\">データが存在しません</p>\n"); 172 188 return 0; … … 174 190 175 191 /* フィールド数 */ 176 $maxcols = pg_num_fields($rs);192 $maxcols = $rs->columnCount(); 177 193 ?> 178 194 <table class="list" summary="データ検索結果を表示" border="1"> … … 183 199 for ($col = 1; $col < $maxcols; $col++) { 184 200 /* pg_field_name() はフィールド名を返す */ 185 $f_name = htmlspecialchars(pg_field_name($rs, $col)); 201 $meta = $rs->getColumnMeta($col); 202 $f_name = htmlspecialchars($meta["name"]); 186 203 echo("<th abbr=\"$f_name\">$f_name</th>\n"); 187 204 } … … 192 209 <?php 193 210 /* テーブルのデータを出力 */ 194 for ($row = 0; $row < $maxrows; $row++) { /* 行に対応 */ 211 do { 212 $maxrows++; 213 195 214 echo("<tr>\n"); 196 /* pg_fetch_row で一行取り出す */197 $rowdata = pg_fetch_row($rs, $row);198 215 /* 1列目にリンクを張る */ 199 216 echo("<td><a href=\"edit.php?q_code=" . … … 204 221 } 205 222 echo("</tr>\n"); 206 }223 } while ($rowdata = $rs->fetch()); 207 224 ?> 208 225 </tbody> … … 212 229 } 213 230 214 /* 指定したコードのデータを表示 */ 215 function m_viewdata($con, $code) { 216 /* コードに該当するデータを検索 */ 217 $query = " 231 232 function m_viewdata($dbh, $code) { 233 234 /*これ使ってないよね? 235 236 $query = " 218 237 select p.code 219 238 ,p.name … … 222 241 ,s.name as job 223 242 ,p.profile 224 , to_char(p.editdate, 'YYYY/MM/DD HH24:MI:SS') as editdate243 ,datetime(p.editdate) as editdate 225 244 from inet_profile p left join inet_job s on p.job = s.code 226 245 where p.code = $code"; 227 $rs = m_query($con, $query, "個人情報の取得に失敗しました。"); 228 if (pg_num_rows($rs) == 0) { 246 $rs = m_query($dbh, $query, "個人情報の取得に失敗しました。"); 247 $rowdata = $rs->fetch(); 248 if (! $rowdata) { 229 249 echo("<p class=\"msg\">データが存在しません</p>\n"); 230 250 return FALSE; 231 251 } 232 252 233 /* フィールド数 */ 234 $maxcols = pg_num_fields($rs); 235 /* 先頭行 */ 236 $rowdata = pg_fetch_row($rs, 0); 253 // フィールド数 254 $maxcols = $rs->columnCount(); 237 255 ?> 238 256 <table class="view" summary="データベース上のデータを表示" border="1"> 239 257 <tr> 240 <td class="name"><?= htmlspecialchars(pg_field_name($rs, 1)) ?></td> 258 <?php $meta = $rs->getColumnMeta(1); ?> 259 <td class="name"><?= htmlspecialchars($meta["name"]) ?></td> 241 260 <td><a href="edit.php?q_code=<?= $rowdata[0] ?>" 242 261 ><?= htmlspecialchars($rowdata[1]) ?></a></td> 243 262 </tr> 244 <?php for ($col = 2; $col < $maxcols; $col++) { ?> 263 <?php for ($col = 2; $col < $maxcols; $col++) { 264 $meta = $rs->getColumnMeta($col); ?> 245 265 <tr> 246 <td class="name"><?= htmlspecialchars(pg_field_name($rs, $col)) ?></td>266 <td class="name"><?= htmlspecialchars($meta["name"]) ?></td> 247 267 <td><?= htmlspecialchars($rowdata[$col]) ?></td> 248 268 </tr> … … 250 270 </table> 251 271 <?php 252 /* クエリーを解放 */ 253 pg_free_result($rs); 254 272 // クエリーを解放 273 $rs = null; 255 274 return TRUE; 275 */ 256 276 } 257 277 … … 294 314 "; 295 315 $rs = m_query($con, $query, "DBクエリに失敗しました"); 296 $ maxrows = pg_num_rows($rs);297 if ($maxrows == 0) {316 $rowdata = $rs->fetch(); 317 if (! $rowdata) { 298 318 print("番組データがありません<BR>"); 299 319 }else{ … … 301 321 //print "<ul><!-- ($maxrows) $query -->\n"; 302 322 303 for ($row = 0; $row < $maxrows; $row++) { 304 305 $rowdata = pg_fetch_row($rs, $row); 306 323 do { 307 324 $printstarttime = substr($rowdata[0],8,2) . ":" . substr($rowdata[0],10,2); 308 325 $tdclass = "t".substr($rowdata[0],8,2) . substr($rowdata[0],10,2); … … 323 340 </li>\n"; 324 341 */ 325 }//for 342 } while ($rowdata = $rs->fetch());//do 326 343 //print "</ul>\n"; 327 344 print "</table>\n"; … … 429 446 global $recfolderpath,$recfolderpath; 430 447 431 exec ( "df -h $recfolderpath | grep $recfolderpath", $hdfreearea); 432 $freearea = preg_split ("/[\s,]+/", $hdfreearea[0]); 448 // exec ( "df -h $recfolderpath | grep $recfolderpath", $hdfreearea); 449 // $freearea = preg_split ("/[\s,]+/", $hdfreearea[0]); 450 exec ( "df -hP $recfolderpath", $hdfreearea); 451 $freearea = preg_split ("/[\s,]+/", $hdfreearea[count($hdfreearea)-1]); 433 452 434 453 return $freearea; … … 557 576 "; 558 577 $useraccount = m_query($con, $query, "DBクエリに失敗しました"); 559 $useraccountrows = pg_num_rows($useraccount); 560 561 if ($useraccountrows == 1 ){ 562 $rowdata = pg_fetch_row($useraccount, 0); 578 $rowdata = $useraccount->fetch(); 579 if (! $rowdata) { 580 header("HTTP/1.0 401 Unauthorized"); 581 redirectlogin(); 582 } 583 563 584 $memberid = $rowdata[0]; 564 585 $userclass = $rowdata[1]; 565 586 $username = $rowdata[2]; 566 587 $dbpasswd = $rowdata[3]; 567 }else{ 588 589 $rowdata = $useraccount->fetch(); 590 if ($rowdata) { 568 591 header("HTTP/1.0 401 Unauthorized"); 569 //print "<!-- DEBUG DB record error ($useraccountrows)-->";570 592 redirectlogin(); 571 }//end if 572 593 } 573 594 574 595 // passwdをdbから取りだし … … 627 648 "; 628 649 $useraccount = m_query($con, $query, "DBクエリに失敗しました"); 629 $useraccountrows = pg_num_rows($useraccount); 630 631 if ($useraccountrows == 1 ){ 632 $rowdata = pg_fetch_row($useraccount, 0); 633 //$userclass = $rowdata[1]; 634 return ($rowdata[1]); 635 }else{ 636 return (99);//エラー 637 }//end if 650 $rowdata = $useraccount->fetch(); 651 if (! $rowdata) { 652 return (99); 653 } 654 655 $userclass = $rowdata[1]; 656 657 $rowdata = $useraccount->fetch(); 658 if ($rowdata) { 659 return (99); 660 } 661 662 return ($userclass); 638 663 639 664 }else{ … … 655 680 "; 656 681 $useraccount = m_query($con, $query, "DBクエリに失敗しました"); 657 $useraccountrows = pg_num_rows($useraccount); 658 659 if ($useraccountrows == 1 ){ 660 $rowdata = pg_fetch_row($useraccount, 0); 661 //$userclass = $rowdata[1]; 662 return ($rowdata[0]); 663 }else{ 682 $rowdata = $useraccount->fetch(); 683 if (! $rowdata) { 664 684 return (-1);//エラー 665 }//end if 685 } 686 687 $memberid = $rowdata[0]; 688 689 $rowdata = $useraccount->fetch(); 690 if ($rowdata) { 691 return (-1); 692 } 693 694 return ($memberid); 666 695 667 696 }else{ … … 682 711 "; 683 712 $useraccount = m_query($con, $query, "DBクエリに失敗しました"); 684 $useraccountrows = pg_num_rows($useraccount); 685 686 if ($useraccountrows == 1 ){ 687 $rowdata = pg_fetch_row($useraccount, 0); 688 return ($rowdata[2]); 713 $rowdata = $useraccount->fetch(); 714 if (! $rowdata) { 715 return ("");//エラー 716 } 717 718 $name = $rowdata[2]; 719 720 $rowdata = $useraccount->fetch(); 721 if ($rowdata) { 722 return (""); 723 } 724 725 return ($name); 726 689 727 }else{ 690 return ("");//エラー728 return (""); 691 729 }//end if 692 693 }else{694 return ("");695 }//end if696 697 698 730 699 731 }//end function getmemberid2name