2011-04-18 68 views
1

我不是PHP专家,所以请耐心等待。分割后台处理

如果我有一个页面(start.php),其中包含一个用户应该看到的文本框和提交按钮。

如何将服务器端指向后台(用户没有看到)包含进一步说明的特定php文件。例如,

以下是非常简化的示例,它们不反映实际文件的复杂程度。假设(process1.php)创建一个包含字符串“process 1 was used”的会话,并且(process2.php)创建一个包含“process 2 was used”的会话。现在,如果(start.php)中的文本框是空的,应该使用“process1.php”文件,如果(start.php)中的文本框被填充,则“process2.php”文件应该是用过的。其中的每一个都应该转到用户应该看到的“finish.php”页面,该页面将回显用户屏幕上由“process1.php”或“process2.php”创建的会话内容。看到。

这样的想法可以用php来完成,应该用php完成这样的事情,如果是的话,怎么样?如果不是,我应该怎么做呢?即将复杂的过程分解为可能的多个文件,以便将来作为开发人员进行维护时更容易?

请注意,process1.php或process2.php不应该直接由用户访问或查看。

回答

1

这样做的最常见的方式是把你输入元素的表单元素中,它将一个.php文件作为它的动作。 <form action="process.php">。你很可能希望你的处理逻辑方面所做的工作:

if(strlen($_GET['inputname'])) 
{ 
    include('process1.php'); 
} 
else 
{ 
    include('process2.php'); 
} 

现在,话虽如此,有很多更好实现这种方式,使用面向对象的概念。例如:

form.php的:

class MyForm 
{ 
    private $_val; 
    public __construct() 
    { 
     $this->_val = null; 
    } 

    public function process() 
    { 
     $this->_val = isset($_GET['txtfield']) ? $_GET['txtfield'] : null; 
     if(strlen($this->_val) > 0) 
     { 
      $this->processEmpty(); 
     } 
     else 
     { 
      $this->processText(); 
     } 
    } 

    public function processEmpty() 
    { 
     // do your processing if text field is empty here 
    } 

    public function processText() 
    { 
     // do your processing with input here 
    } 
} 

而且这样那么你的process.php文件可能在寻找的东西:

require_once('myform.php'); 
$f = new MyForm(); 
$f->process(); 

我想最有可能开始审查前,建设面向对象的概念你的系统。与OO设计相比,的许多模块化和可扩展性比以前的风格脚本更适合未来的工作。

编辑

免责声明:上面的代码只是一个样本 - 我其实没有尝试运行它,所以它可能不会在所有的工作;)

1

我认为你在谈论的是后期处理,而不是后台处理。

可以使用的if else各地包括(后您的提交) 这里是你

if(<form submitted>){ 
$accessKey = '1234'; 
    if(<text box empty>){ 
    include process1 
    }else { 
    include process2 
    } 

} 
+0

如果用户以某种方式计算出“start.php”指向“process1.php”或“process2.php”,他/她将能够弄清楚他/他可以简单地输入到浏览器地址栏“proccess1.php”或“process2 .PHP”。我如何阻止? – oshirowanen 2011-04-18 17:49:37

+0

在if语句中设置一个访问密钥,并检查进程文件中的访问密钥。检查了它 – Stewie 2011-04-18 18:01:08

1

我建议你看看http://php.net/manual/en/language.oop5.php和搜索对谷歌进一步教程伪。

如果你真的想在php中使事情变得更轻松,更容易维护,你应该开始使用面向对象的编程。

然后,您可以有一个类分发所有请求,另一个处理它们和第三个来呈现结果;)