加载浏览器呈现PHP文件时以前在另一个文件中设置的变量?

问题描述:

一般查询:有没有一种方法来读取另一个PHP文件中的变量,但不运行文件(如变量已经设置在另一个时间点,使用第三PHP文件),且无需使用的数据库?加载浏览器呈现PHP文件时以前在另一个文件中设置的变量?

特定实例:我创建了一个我的老板想要每天更改的网页。他不想访问原始的HTML和CSS编码,因为任何错误都会导致我头痛。所以我想我可能会创建一个小门户网站,允许他每天更改网页中的特定字符串数据,从而限制他访问代码。

我设想的框架将这样的工作:

  • 的index.php是由每个人都在互联网上查看页面。当它被渲染时,我希望它请求以前保存在另一个文件中的$ Category变量。
  • edit.php是一个显示带有两个输入框的简单表单的网页:类别和密码。点击提交按钮后,会将数据发布到下面的文件中。
  • configuration.php是edit.php将表单信息传递给的文件。一旦表单信息被移交,它会检查输入密码的crypt()版本是否匹配,然后将类别信息存储在名为$ Category的变量中。

现在,我需要的index.php读取的configuration.php文件中的$类别的先前保存的值的方式,不运行它,而无需使用一个数据库(因为我没有到一个接入)。我不认为我可以使用会话值,因为这个值对于所有用户和所有会话都应该是相同的,直到我的老板再次更改。有没有什么办法来实现这一点,或者我应该使用不同的方法?

因此,而不是将数据写入到它自己的文件,有和商店,我决定动态覆写所需的信息,每当运行脚本的原始文件(并因此改变变量)。

当edit.php提交按钮被击中,它把手拿开来的configuration.php的信息,它通过它完成运行时间重写index.php文件。下面是我使用的代码的一部分,以防有人想要实现类似的东西,而不必将数据写入完全独立的文件。

// Read the contents of the file you want to change, into a variable 
$indexContents = file_get_contents('index.php'); 

// Edit the contents with srt_replace or preg_replace 
$indexContents = preg_replace('#<h2>(.*?)\?</h2>#i', '<h2>'.$title.'?</h2>', $indexContents); 
$indexContents = preg_replace('#best-(.*?)"#', $url.'"', $indexContents); 

// Write the contents of the variable back to the same file name, overwriting it 
file_put_contents('index.php', $indexContents); 

echo '<h1>Success!</h1>';</code> 

只考虑writing the data to a file instead,并从那里阅读。

+0

感谢@Amber。我可以通过[在类中设置一个变量]来做同样的事情(http://*.com/questions/834491/create-superglobal-variables-in-php)?哪个会更快/更少的CPU负载在服务器上? – 2012-08-11 22:47:45

+0

变量通常不打算在请求之间持续存在。如果你使用的是APC,理论上你可以[在那里存储数据](http://www.php.net/manual/en/function.apc-add.php),但是这并不是一个坚持事情的好方法,因为不能保证它能活多久。 – Amber 2012-08-11 22:50:09

你的网站应该有一个私人空间,您可以上传文件,他们不担任该网站的一部分,但你可以从你的PHP代码阅读。然后,您的老板可以简单地上传一个新文件,其中包含适当的值。