如何在 zend framework 1.12 中使用此 php 代码
How to use this php code in zend framework 1.12
我需要能够在表单中输入 IP 地址,然后该 IP 将用于获取 status.php 页面,即 http://'IP' 上的 运行 :port/status.php 然后在表格下方显示内容.
我附上了我拥有的两个 index.php 和 status.php 文件。他们在 zend 之外工作。
我如何使用 zend 1.12 执行此操作?
status.php
<?php
/*error_log(date("U").": ".implode(", ",array_keys(($_REQUEST)))."\n",3,"/tmp/phperror.log");
if(!isset($_REQUEST['ip']))
exit(0);
*/
$ip = $_POST['IP'];
function getIP($ip)
{
$port = ( $_REQUEST[ 'port' ] != "" ? $_REQUEST[ 'port' ] : '1234' );
$site='http://'.$ip.':'.$port.'/status.php';
//foreach( $_REQUEST as $k => $v)
if ( $_REQUEST[ 'mode' ] != 'json' ) {
//error_log(date("U").": ".$site." : ".implode($_REQUEST)."\n",3,"/tmp/phperror.log");
error_log( date( "U" ) . ": " . $site . " : " . implode( ", ", array_keys( ( $_REQUEST ) ) ) . "\n", 3, "/tmp/phperror.log" );
$file = file_get_contents( $site, false, $context );
echo $file;
}
else {
if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
$r = $site . "?d=v";
$data = array();
foreach ( $_REQUEST as $key => $value ) {
$r .= "&$key=$value";
$data[ $key ] = $value;
}
$options = array( 'http' => array(
'method' => 'POST',
'content' => http_build_query( $data )
) );
error_log( date( "U" ) . ": " . $r . "\n", 3, "/tmp/phperror.log" );
$context = stream_context_create( $options );
//$file = file_get_contents($r, false, $context);
$file = file_get_contents( $site, false, $context );
echo $file;
}
}
}
getIP($ip);
?>
索引。 php
<!DOCTYPE html>
<html lang="en">
<head>
<title>Title</title>
<meta charset="UTF-8">
<meta name=description content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap CSS -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" media="screen">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<h1 class="text-center">IP Address</h1>
<form action="status.php" method="post" role="form" class="form-horizontal">
<div class="form-group">
<label for="IP" class="col-sm-2 control-label">Enter IP Address</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="IP" id="IP" placeholder="IP Address">
</div>
</div>
<button type="button" class="btn btn-primary" onclick="deleteFile()">Submit</button>
<button type="reset" class="btn btn-danger">Clear</button>
</form>
</div>
<div id="section"></div>
</div>
</div>
<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- Bootstrap JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script>
/* Deletes the selected file */
function deleteFile() {
$.ajax({
type: "POST",
url: "status.php",
data: {
IP: $( "#IP" ).val()
}
})
.success(function (data) {
$('#section').html(data);
});
}
</script>
</body>
编辑:
我遵循了 Lucian 的步骤,我相信我在控制器上的 indexaction 不正确。
我在那里粘贴了 status.php 并且出现错误....我错了什么
indexcontroller.php
<?php
class IndexController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
/*error_log(date("U").": ".implode(", ",array_keys(($_REQUEST)))."\n",3,"/tmp/phperror.log");
if(!isset($_REQUEST['ip']))
exit(0);
*/
$ip = $_POST['IP'];
function getIP($ip)
{
$port = ( $_REQUEST[ 'port' ] != "" ? $_REQUEST[ 'port' ] : '1234' );
$site='http://'.$ip.':'.$port.'/status.php';
//foreach( $_REQUEST as $k => $v)
if ( $_REQUEST[ 'mode' ] != 'json' ) {
//error_log(date("U").": ".$site." : ".implode($_REQUEST)."\n",3,"/tmp/phperror.log");
error_log( date( "U" ) . ": " . $site . " : " . implode( ", ", array_keys( ( $_REQUEST ) ) ) . "\n", 3, "/tmp/phperror.log" );
$file = file_get_contents( $site, false, $context );
echo $file;
}
else {
if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
$r = $site . "?d=v";
$data = array();
foreach ( $_REQUEST as $key => $value ) {
$r .= "&$key=$value";
$data[ $key ] = $value;
}
$options = array( 'http' => array(
'method' => 'POST',
'content' => http_build_query( $data )
) );
error_log( date( "U" ) . ": " . $r . "\n", 3, "/tmp/phperror.log" );
$context = stream_context_create( $options );
//$file = file_get_contents($r, false, $context);
$file = file_get_contents( $site, false, $context );
echo $file;
}
}
}
getIP($ip);
?>
}
首先使用 index.php 的 html 内容创建一个布局 (layout.phtml),该内容是静态的并且在每个页面上重复。
其次创建一个控制器并将 status.php 中的 php 放入控制器内的一个动作中。
第三次为控制器创建一个相应的视图,并回显控制器操作中计算的所有内容。
第四次为 html 表单创建一个 Zend 表单...
您可以做更多的事情,但我建议您从基础开始(步骤 1 - 3)。
有关 zend 中视图/控制器/操作的更多信息,请查看:
http://framework.zend.com/manual/1.12/de/zend.controller.action.html
编辑:
有一些快速启动框架可以帮助您快速启动您的应用程序。看看
https://github.com/RichardKnop/zend-v112-skeleton
您会在框架内的文件/文件夹中找到 "controller"、"action"、"view" 等提到的内容,只需根据您的需要自定义它们即可。
编辑 2
您可以使用控制器中的 $this->view 将数据从控制器传递到视图。
对于该结帐,请在 Whosebug 上查看此答案:
Zend Framework, passing variables to view
我需要能够在表单中输入 IP 地址,然后该 IP 将用于获取 status.php 页面,即 http://'IP' 上的 运行 :port/status.php 然后在表格下方显示内容.
我附上了我拥有的两个 index.php 和 status.php 文件。他们在 zend 之外工作。
我如何使用 zend 1.12 执行此操作?
status.php
<?php
/*error_log(date("U").": ".implode(", ",array_keys(($_REQUEST)))."\n",3,"/tmp/phperror.log");
if(!isset($_REQUEST['ip']))
exit(0);
*/
$ip = $_POST['IP'];
function getIP($ip)
{
$port = ( $_REQUEST[ 'port' ] != "" ? $_REQUEST[ 'port' ] : '1234' );
$site='http://'.$ip.':'.$port.'/status.php';
//foreach( $_REQUEST as $k => $v)
if ( $_REQUEST[ 'mode' ] != 'json' ) {
//error_log(date("U").": ".$site." : ".implode($_REQUEST)."\n",3,"/tmp/phperror.log");
error_log( date( "U" ) . ": " . $site . " : " . implode( ", ", array_keys( ( $_REQUEST ) ) ) . "\n", 3, "/tmp/phperror.log" );
$file = file_get_contents( $site, false, $context );
echo $file;
}
else {
if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
$r = $site . "?d=v";
$data = array();
foreach ( $_REQUEST as $key => $value ) {
$r .= "&$key=$value";
$data[ $key ] = $value;
}
$options = array( 'http' => array(
'method' => 'POST',
'content' => http_build_query( $data )
) );
error_log( date( "U" ) . ": " . $r . "\n", 3, "/tmp/phperror.log" );
$context = stream_context_create( $options );
//$file = file_get_contents($r, false, $context);
$file = file_get_contents( $site, false, $context );
echo $file;
}
}
}
getIP($ip);
?>
索引。 php
<!DOCTYPE html>
<html lang="en">
<head>
<title>Title</title>
<meta charset="UTF-8">
<meta name=description content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap CSS -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" media="screen">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<h1 class="text-center">IP Address</h1>
<form action="status.php" method="post" role="form" class="form-horizontal">
<div class="form-group">
<label for="IP" class="col-sm-2 control-label">Enter IP Address</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="IP" id="IP" placeholder="IP Address">
</div>
</div>
<button type="button" class="btn btn-primary" onclick="deleteFile()">Submit</button>
<button type="reset" class="btn btn-danger">Clear</button>
</form>
</div>
<div id="section"></div>
</div>
</div>
<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- Bootstrap JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script>
/* Deletes the selected file */
function deleteFile() {
$.ajax({
type: "POST",
url: "status.php",
data: {
IP: $( "#IP" ).val()
}
})
.success(function (data) {
$('#section').html(data);
});
}
</script>
</body>
编辑:
我遵循了 Lucian 的步骤,我相信我在控制器上的 indexaction 不正确。
我在那里粘贴了 status.php 并且出现错误....我错了什么
indexcontroller.php
<?php
class IndexController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
/*error_log(date("U").": ".implode(", ",array_keys(($_REQUEST)))."\n",3,"/tmp/phperror.log");
if(!isset($_REQUEST['ip']))
exit(0);
*/
$ip = $_POST['IP'];
function getIP($ip)
{
$port = ( $_REQUEST[ 'port' ] != "" ? $_REQUEST[ 'port' ] : '1234' );
$site='http://'.$ip.':'.$port.'/status.php';
//foreach( $_REQUEST as $k => $v)
if ( $_REQUEST[ 'mode' ] != 'json' ) {
//error_log(date("U").": ".$site." : ".implode($_REQUEST)."\n",3,"/tmp/phperror.log");
error_log( date( "U" ) . ": " . $site . " : " . implode( ", ", array_keys( ( $_REQUEST ) ) ) . "\n", 3, "/tmp/phperror.log" );
$file = file_get_contents( $site, false, $context );
echo $file;
}
else {
if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
$r = $site . "?d=v";
$data = array();
foreach ( $_REQUEST as $key => $value ) {
$r .= "&$key=$value";
$data[ $key ] = $value;
}
$options = array( 'http' => array(
'method' => 'POST',
'content' => http_build_query( $data )
) );
error_log( date( "U" ) . ": " . $r . "\n", 3, "/tmp/phperror.log" );
$context = stream_context_create( $options );
//$file = file_get_contents($r, false, $context);
$file = file_get_contents( $site, false, $context );
echo $file;
}
}
}
getIP($ip);
?>
}
首先使用 index.php 的 html 内容创建一个布局 (layout.phtml),该内容是静态的并且在每个页面上重复。
其次创建一个控制器并将 status.php 中的 php 放入控制器内的一个动作中。
第三次为控制器创建一个相应的视图,并回显控制器操作中计算的所有内容。
第四次为 html 表单创建一个 Zend 表单...
您可以做更多的事情,但我建议您从基础开始(步骤 1 - 3)。 有关 zend 中视图/控制器/操作的更多信息,请查看:
http://framework.zend.com/manual/1.12/de/zend.controller.action.html
编辑:
有一些快速启动框架可以帮助您快速启动您的应用程序。看看
https://github.com/RichardKnop/zend-v112-skeleton
您会在框架内的文件/文件夹中找到 "controller"、"action"、"view" 等提到的内容,只需根据您的需要自定义它们即可。
编辑 2
您可以使用控制器中的 $this->view 将数据从控制器传递到视图。 对于该结帐,请在 Whosebug 上查看此答案: Zend Framework, passing variables to view