ntunnel mysql.php_ntunnel_mysql.php

//set allowTestMenu to false to disable System/Server test page

$allowTestMenu = true;

$use_mysqli = function_exists("mysqli_connect");

header("Content-Type: text/plain; charset=x-user-defined");

error_reporting(0);

set_time_limit(0);

function phpversion_int()

{

list($maVer, $miVer, $edVer) = preg_split("(/|\.|-)", phpversion());

return $maVer*10000 + $miVer*100 + $edVer;

}

if (phpversion_int() < 50300)

{

set_magic_quotes_runtime(0);

}

function GetLongBinary($num)

{

return pack("N",$num);

}

function GetShortBinary($num)

{

return pack("n",$num);

}

function GetDummy($count)

{

$str = "";

for($i=0;$i

$str .= "\x00";

return $str;

}

function GetBlock($val)

{

$len = strlen($val);

if( $len < 254 )

return chr($len).$val;

else

return "\xFE".GetLongBinary($len).$val;

}

function EchoHeader($errno)

{

$str = GetLongBinary(1111);

$str .= GetShortBinary(202);

$str .= GetLongBinary($errno);

$str .= GetDummy(6);

echo $str;

}

function EchoConnInfo($conn)

{

if ($GLOBALS['use_mysqli']) {

$str = GetBlock(mysqli_get_host_info($conn));

$str .= GetBlock(mysqli_get_proto_info($conn));

$str .= GetBlock(mysqli_get_server_info($conn));

echo $str;

} else {

$str = GetBlock(mysql_get_host_info($conn));

$str .= GetBlock(mysql_get_proto_info($conn));

$str .= GetBlock(mysql_get_server_info($conn));

echo $str;

}

}

function EchoResultSetHeader($errno, $affectrows, $insertid, $numfields, $numrows)

{

$str = GetLongBinary($errno);

$str .= GetLongBinary($affectrows);

$str .= GetLongBinary($insertid);

$str .= GetLongBinary($numfields);

$str .= GetLongBinary($numrows);

$str .= GetDummy(12);

echo $str;

}

function EchoFieldsHeader($res, $numfields)

{

$str = "";

for( $i = 0; $i < $numfields; $i++ ) {

if ($GLOBALS['use_mysqli']) {

$finfo = mysqli_fetch_field_direct($res, $i);

$str .= GetBlock($finfo->name);

$str .= GetBlock($finfo->table);

$type = $finfo->type;

$length = $finfo->length;

$str .= GetLongBinary($type);

$intflag = $finfo->flags;

$str .= GetLongBinary($intflag);

$str .= GetLongBinary($length);

} else {

$str .= GetBlock(mysql_field_name($res, $i));

$str .= GetBlock(mysql_field_table($res, $i));

$type = mysql_field_type($res, $i);

$length = mysql_field_len($res, $i);

switch ($type) {

case "int":

if( $length > 11 ) $type = 8;

else $type = 3;

break;

case "real":

if( $length == 12 ) $type = 4;

elseif( $length == 22 ) $type = 5;

else $type = 0;

break;

case "null":

$type = 6;

break;

case "timestamp":

$type = 7;

break;

case "date":

$type = 10;

break;

case "time":

$type = 11;

break;

case "datetime":

$type = 12;

break;

case "year":

$type = 13;

break;

case "blob":

if( $length > 16777215 ) $type = 251;

elseif( $length > 65535 ) $type = 250;

elseif( $length > 255 ) $type = 252;

else $type = 249;

break;

default:

$type = 253;

}

$str .= GetLongBinary($type);

$flags = explode( " ", mysql_field_flags ( $res, $i ) );

$intflag = 0;

if(in_array( "not_null", $flags )) $intflag += 1;

if(in_array( "primary_key", $flags )) $intflag += 2;

if(in_array( "unique_key", $flags )) $intflag += 4;

if(in_array( "multiple_key", $flags )) $intflag += 8;

if(in_array( "blob", $flags )) $intflag += 16;

if(in_array( "unsigned", $flags )) $intflag += 32;

if(in_array( "zerofill", $flags )) $intflag += 64;

if(in_array( "binary", $flags)) $intflag += 128;

if(in_array( "enum", $flags )) $intflag += 256;

if(in_array( "auto_increment", $flags )) $intflag += 512;

if(in_array( "timestamp", $flags )) $intflag += 1024;

if(in_array( "set", $flags )) $intflag += 2048;

$str .= GetLongBinary($intflag);

$str .= GetLongBinary($length);

}

}

echo $str;

}

function EchoData($res, $numfields, $numrows)

{

for( $i = 0; $i < $numrows; $i++ ) {

$str = "";

$row = null;

if ($GLOBALS['use_mysqli'])

$row = mysqli_fetch_row( $res );

else

$row = mysql_fetch_row( $res );

for( $j = 0; $j < $numfields; $j++ ){

if( is_null($row[$j]) )

$str .= "\xFF";

else

$str .= GetBlock($row[$j]);

}

echo $str;

}

}

function doSystemTest()

{

function output($description, $succ, $resStr) {

echo "

$description

echo ($succ)? "class=\"TestSucc\">$resStr[0]

" : "class=\"TestFail\">$resStr[1]";

}

output("PHP version >= 4.0.5", phpversion_int() >= 40005, array("Yes", "No"));

output("mysql_connect() available", function_exists("mysql_connect"), array("Yes", "No"));

output("mysqli_connect() available", function_exists("mysqli_connect"), array("Yes", "No"));

if (phpversion_int() >= 40302 && substr($_SERVER["SERVER_SOFTWARE"], 0, 6) == "Apache" && function_exists("apache_get_modules")){

if (in_array("mod_security2", apache_get_modules()))

output("Mod Security 2 installed", false, array("No", "Yes"));

}

}

/

if (phpversion_int() < 40005) {

EchoHeader(201);

echo GetBlock("unsupported php version");

exit();

}

if (phpversion_int() < 40010) {

global $HTTP_POST_VARS;

$_POST = &$HTTP_POST_VARS;

}

if (!isset($_POST["actn"]) || !isset($_POST["host"]) || !isset($_POST["port"]) || !isset($_POST["login"])) {

$testMenu = $allowTestMenu;

if (!$testMenu){

EchoHeader(202);

echo GetBlock("invalid parameters");

exit();

}

}

if (!$testMenu){

if ($_POST["encodeBase64"] == '1') {

for($i=0;$i

$_POST["q"][$i] = base64_decode($_POST["q"][$i]);

}

if (!function_exists("mysql_connect") && !function_exists("mysqli_connect")) {

EchoHeader(203);

echo GetBlock("MySQL not supported on the server");

exit();

}

$errno_c = 0;

$hs = $_POST["host"];

if ($use_mysqli) {

if( $_POST["port"] )

$conn = mysqli_connect($hs, $_POST["login"], $_POST["password"], '', $_POST["port"]);

else

$conn = mysqli_connect($hs, $_POST["login"], $_POST["password"]);

$errno_c = mysqli_connect_errno($conn);

if (phpversion_int() >= 50005){ // for unicode database name

mysqli_set_charset($conn, 'UTF8');

}

if($errno_c > 0) {

EchoHeader($errno_c);

echo GetBlock(mysqli_connect_error($conn));

exit;

}

if(($errno_c <= 0) && ( $_POST["db"] != "" )) {

$res = mysqli_select_db($conn, $_POST["db"] );

$errno_c = mysqli_errno($conn);

}

EchoHeader($errno_c);

if($errno_c > 0) {

echo GetBlock(mysqli_error($conn));

} elseif($_POST["actn"] == "C") {

EchoConnInfo($conn);

} elseif($_POST["actn"] == "Q") {

for($i=0;$i

$query = $_POST["q"][$i];

if($query == "") continue;

if (phpversion_int() < 50400){

if(get_magic_quotes_gpc())

$query = stripslashes($query);

}

$res = mysqli_query($conn, $query);

$errno = mysqli_errno($conn);

$affectedrows = mysqli_affected_rows($conn);

$insertid = mysqli_insert_id($conn);

if (false !== $res) {

$numfields = mysqli_field_count($conn);

$numrows = mysqli_num_rows($res);

}

else {

$numfields = 0;

$numrows = 0;

}

EchoResultSetHeader($errno, $affectedrows, $insertid, $numfields, $numrows);

if($errno > 0)

echo GetBlock(mysqli_error($conn));

else {

if($numfields > 0) {

EchoFieldsHeader($res, $numfields);

EchoData($res, $numfields, $numrows);

} else {

if(phpversion_int() >= 40300)

echo GetBlock(mysqli_info($conn));

else

echo GetBlock("");

}

}

if($i

echo "\x01";

else

echo "\x00";

if (false !== $res)

mysqli_free_result($res);

}

}

} else {

if( $_POST["port"] ) $hs .= ":".$_POST["port"];

$conn = mysql_connect($hs, $_POST["login"], $_POST["password"]);

$errno_c = mysql_errno();

if (phpversion_int() >= 50203){ // for unicode database name

mysql_set_charset('UTF8', $conn);

}

if(($errno_c <= 0) && ( $_POST["db"] != "" )) {

$res = mysql_select_db( $_POST["db"], $conn);

$errno_c = mysql_errno();

}

EchoHeader($errno_c);

if($errno_c > 0) {

echo GetBlock(mysql_error());

} elseif($_POST["actn"] == "C") {

EchoConnInfo($conn);

} elseif($_POST["actn"] == "Q") {

for($i=0;$i

$query = $_POST["q"][$i];

if($query == "") continue;

if (phpversion_int() < 50400){

if(get_magic_quotes_gpc())

$query = stripslashes($query);

}

$res = mysql_query($query, $conn);

$errno = mysql_errno();

$affectedrows = mysql_affected_rows($conn);

$insertid = mysql_insert_id($conn);

$numfields = mysql_num_fields($res);

$numrows = mysql_num_rows($res);

EchoResultSetHeader($errno, $affectedrows, $insertid, $numfields, $numrows);

if($errno > 0)

echo GetBlock(mysql_error());

else {

if($numfields > 0) {

EchoFieldsHeader($res, $numfields);

EchoData($res, $numfields, $numrows);

} else {

if(phpversion_int() >= 40300)

echo GetBlock(mysql_info($conn));

else

echo GetBlock("");

}

}

if($i

echo "\x01";

else

echo "\x00";

mysql_free_result($res);

}

}

}

exit();

}

header("Content-Type: text/html");

/

?>

Navicat HTTP Tunnel Tester

body{

margin: 30px;

font-family: Tahoma;

font-weight: normal;

font-size: 14px;

color: #222222;

}

table{

width: 100%;

border: 0px;

}

input{

font-family:Tahoma,sans-serif;

border-style:solid;

border-color:#666666;

border-width:1px;

}

fieldset{

border-style:solid;

border-color:#666666;

border-width:1px;

}

.Title1{

font-size: 30px;

color: #003366;

}

.Title2{

font-size: 10px;

color: #999966;

}

.TestDesc{

width:70%

}

.TestSucc{

color: #00BB00;

}

.TestFail{

color: #DD0000;

}

.mysql{

}

.pgsql{

display:none;

}

.sqlite{

display:none;

}

#page{

max-width: 42em;

min-width: 36em;

border-width: 0px;

margin: auto auto;

}

#host, #dbfile{

width: 300px;

}

#port{

width: 75px;

}

#login, #password, #db{

width: 150px;

}

#Copyright{

text-align: right;

font-size: 10px;

color: #888888;

}

function getInternetExplorerVersion(){

var ver = -1;

if (navigator.appName == "Microsoft Internet Explorer"){

var regex = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");

if (regex.exec(navigator.userAgent))

ver = parseFloat(RegExp.$1);

}

return ver;

}

function setText(element, text, succ){

element.className = (succ)?"TestSucc":"TestFail";

element.innerHTML = text;

}

function getByteAt(str, offset){

return str.charCodeAt(offset) & 0xff;

}

function getIntAt(binStr, offset){

return (getByteAt(binStr, offset) << 24)+

(getByteAt(binStr, offset+1) << 16)+

(getByteAt(binStr, offset+2) << 8)+

(getByteAt(binStr, offset+3) >>> 0);

}

function getBlockStr(binStr, offset){

if (getByteAt(binStr, offset) < 254)

return binStr.substring(offset+1, offset+1+binStr.charCodeAt(offset));

else

return binStr.substring(offset+5, offset+5+getIntAt(binStr, offset+1));

}

function doServerTest(){

var version = getInternetExplorerVersion();

if (version==-1 || version>=9.0){

var xmlhttp = (window.XMLHttpRequest)? new XMLHttpRequest() : xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

xmlhttp.onreadystatechange=function(){

var outputDiv = document.getElementById("ServerTest");

if (xmlhttp.readyState == 4){

if (xmlhttp.status == 200){

var errno = getIntAt(xmlhttp.responseText, 6);

if (errno == 0)

setText(outputDiv, "Connection Success!", true);

else

setText(outputDiv, parseInt(errno)+" - "+getBlockStr(xmlhttp.responseText, 16), false);

}else

setText(outputDiv, "HTTP Error - "+xmlhttp.status, false);

}

}

var params = "";

var form = document.getElementById("TestServerForm");

for (var i=0; i

if (i>0) params += "&";

params += form.elements[i].id+"="+form.elements[i].value.replace("&", "%26");

}

document.getElementById("ServerTest").className = "";

document.getElementById("ServerTest").innerHTML = "Connecting...";

xmlhttp.open("POST", "", true);

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

xmlhttp.setRequestHeader("Content-length", params.length);

xmlhttp.setRequestHeader("Connection", "close");

xmlhttp.send(params);

}else{

document.getElementById("ServerTest").className = "";

document.getElementById("ServerTest").innerHTML = "Internet Explorer "+version+" is not supported, please use Internet explorer 9.0 or above, firefox, chrome or safari";

}

}

Navicat™

The gateway to your database!

System Environment Test

PHP installed properlyNo

Server Test

Hostname/IP Address:
Port:
Initial Database:
Username:
Password:
Database File:

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值