$value) { if (is_array($value)) cleanup_magic_quotes($value); else $array[$key] = stripslashes($value); } } if (get_magic_quotes_gpc()) { if (isset($_GET)) cleanup_magic_quotes($_GET); if (isset($_POST)) cleanup_magic_quotes($_POST); } function fatal_error($string) { header('Content-Type: text/plain'); // workaround for php editors on windows, without this, // the error is not displayed but opened in an editor header('Content-Disposition: inline; filename=error.txt;'); logit('fatal error: '.$string); exit; } // log to user and to logfile function logit($string) { global $data, $logfile; $datetime = date("Y-m-d H:i:s", time()); if ($fp = fopen($data.$logfile, 'a+')) { fprintf($fp, $datetime.' '.$string."\n"); fclose($fp); } echo($datetime.' '.$string."\n"); } function fopen_or_fail($filename) { if ($fp = fopen($filename, 'r')) return $fp; fatal_error('opening file: '.$filename); } require_once('MDB2.php'); function mdb2_open($dsn) { global $server_type; $mdb2 = MDB2::connect($dsn); if (MDB2::isError($mdb2)) fatal_error($mdb2->getMessage()); $mdb2->setOption('portability', MDB2_PORTABILITY_ERRORS); if ($server_type == 'mysql') { mdb2_exec($mdb2, "SET SESSION group_concat_max_len = 65536"); } return $mdb2; } function mdb2_last_insert_id($db) { global $server_type; if ($server_type == 'mysql') return $db->lastInsertId(); return mdb2_single_val($db, "SELECT SCOPE_IDENTITY()"); } function mdb2_res_table($res) { $no_columns = $res->numCols(); $columns = $res->getColumnNames(); //print_r($columns); if ($no_columns == 0) return; ?> $value) { ?>fetchRow(MDB2_FETCHMODE_ORDERED)) { ?>
NULL'); else echo($data); ?>
seek(); // reset row pointer } // format characters // %% -> % // %q -> string to be escaped, must already be insides 's in $format // %w -> string to be escaped, must already be insides 's in $format, also escapes wildcard characters // %i -> positive integer function mdb2_vprintf($mdb2, $format, $args) { $out = ''; $arg = 0; while (($pos = strpos($format, '%')) !== FALSE) { $out .= substr($format, 0, $pos); switch ($format[$pos + 1]) { case '%': $out .= '%'; break; case 'q': if (count($args) <= $arg) fatal_error('te weinig argumenten'); $out .= $mdb2->escape($args[$arg]); $arg++; break; case 'w': if (count($args) <= $arg) fatal_error('te weinig argumenten'); $out .= $mdb2->escape($args[$arg], true); $arg++; break; case 'i': if (count($args) <= $arg) fatal_error('te weinig argumenten'); $val = (int)$args[$arg]; if ($val == NULL) { $out .= 'NULL'; } else { if ($val != $args[$arg]) fatal_error('SQL argument is geen integer'); if ($val <= 0) fatal_error('SQL argument is geen positieve integer: '.$val); $out .= $val; } $arg++; break; default: fatal_error('onzinnig format character'); break; } $format = substr($format, $pos + 2); } if ($arg != count($args)) fatal_error('te veel argumenten voor format string '.$out.$format); //logit($out.$format); return $out.$format; } function mdb2_printf($format) { $args = func_get_args(); array_shift($args); return mdb2_vprintf($format, $args); } function mdb2_vquery($mdb2, $format, $args) { $res = $mdb2->query(mdb2_vprintf($mdb2, $format, $args)); if (MDB2::isError($res)) { $errorInfo = $mdb2->errorInfo($res); fatal_error($res->getMessage().': '.$errorInfo[2]); } return $res; } function mdb2_query($mdb2, $format) { $args = func_get_args(); array_shift($args); array_shift($args); return mdb2_vquery($mdb2, $format, $args); } function mdb2_vexec_error($mdb2, $err, $format, $args) { $affected = $mdb2->exec(mdb2_vprintf($mdb2, $format, $args)); if (MDB2::isError($affected)) { if (MDB2::isError($affected, $err)) return false; else { $errorInfo = $mdb2->errorInfo($affected); //fatal_error($affected->getMessage().': '.$errorInfo[2]); fatal_error($affected->getCode().' '.$affected->getMessage().': '.$errorInfo[2]); } } return true; } function mdb2_exec_error($mdb2, $err, $format) { $args = func_get_args(); array_shift($args); array_shift($args); array_shift($args); return mdb2_vexec_error($mdb2, $err, $format, $args); } function mdb2_vexec($mdb2, $format, $args) { $affected = $mdb2->query(mdb2_vprintf($mdb2, $format, $args)); if (MDB2::isError($affected)) { $errorInfo = $mdb2->errorInfo($affected); fatal_error($affected->getMessage().': '.$errorInfo[2]); } } function mdb2_exec($mdb2, $format) { $args = func_get_args(); array_shift($args); array_shift($args); mdb2_vexec($mdb2, $format, $args); } function mdb2_vsingle_row($mdb2, $mode, $format, $args) { $res = mdb2_vquery($mdb2, $format, $args); $array = $res->fetchRow($mode); $res->free(); return $array; } function mdb2_single_row($mdb2, $mode, $format) { $args = func_get_args(); array_shift($args); array_shift($args); array_shift($args); return mdb2_vsingle_row($mdb2, $mode, $format, $args); } function mdb2_single_array($mdb2, $format) { $args = func_get_args(); array_shift($args); array_shift($args); return mdb2_vsingle_row($mdb2, MDB2_FETCHMODE_ORDERED, $format, $args); } function mdb2_single_assoc($mdb2, $format) { $args = func_get_args(); array_shift($args); array_shift($args); return mdb2_vsingle_row($mdb2, MDB2_FETCHMODE_ASSOC, $format, $args); } function mdb2_single_val($mdb2, $format) { $args = func_get_args(); array_shift($args); array_shift($args); $res = mdb2_vquery($mdb2, $format, $args); $array = $res->fetchRow(); $res->free(); if (isset($array[0])) return $array[0]; else return NULL; } function get_baselink() { $pos = strrpos($_SERVER['PHP_SELF'], '/'); if ($pos === false) fatal_error('geen / gevonden in PHP_SELF'); return 'http://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, $pos + 1); } ?>