通过浏览器更新PHP配置


Updating PHP configuration through browser?

我正在创建我的第一个CMS风格的网站,还有很多路要走,但我想知道:我可以通过php脚本更新php配置文件吗?

例如:

<?php
$forum="1";
$about="1";
$register="0";
?>
<?php    
if ($about==("1"))
    echo '<a href="about.php">About Us</a>';
if ($forum==("1"))
    echo '<a href="forum.php">Forum</a>';
if ($register==("1"))
    echo '<a href="register.php">Register</a>;
?>

我想创建一个脚本,当我以管理员身份登录网站时,我可以更新第一个集来更改不同页面的值,这样我就可以选择显示什么和不显示什么。

要开始使用CMS,您需要学习如何与数据库交互。如果你想创建一个管理部分并编辑内容,数据库是最好的选择。

这是一个链接到一个网站,当我开始时,它对我来说非常有价值

PHP初学者

为此,您必须使用存储或数据库。将配置存储在可编辑的位置。

下面是一个使用文件的示例:

<?php
$forum = file_get_contents('forum');
$about = file_get_contents('about');
$register = file_get_contents('register');

然后,您可以制作一个管理模块,将这些设置写入相应的文件,如下所示:

<?php 
// Admin, overwriting configurations
file_put_contents('forum', 1); // should the admin choses to enable Forum.
file_put_contents('about', 1); // should the admin choses to enable About Us.
file_put_contents('register', 0); // should the admin choses to disable Register.
//... etc for the rest of the modules 

在大多数情况下,我同意@uzyn和@Ibu的观点——最好了解更多关于使用数据库的信息,然后将其用于配置数据。话虽如此,为了完整起见,我提供以下内容。但是,请注意,这种做法存在安全问题。

我创建了三个文件:配置文件,名为config.cfg;一个显示配置的PHP文件,名为show_config.PHP;和另一个名为write_config.PHP的PHP文件,用于保存配置更改,然后调用show_config.PHP来重新显示配置。所有这些都过于简单化,如下所示。

[config.cfg]

cfg_data: 42

[show_config.php]

<html>
<head>
<title>Configuration</title>
</head>
<body>
<?php
$cfg_name = "config.cfg";
$cfg_data = file_get_contents($cfg_name);
$lines = explode("'n", $cfg_data);
$cfg_vals = explode(":", $lines[0]);
$cfg_value = trim($cfg_vals[1]);
?>
<form action="write_config.php">
Configuration Value: <?php echo "<input type='"text'" name='"config_val'" value='"$cfg_value '" >" ?> </input>
<br>
<input type="submit">
</form>
</body>
</html>

[write_config.php]

<?php
$cfg_name = "config.cfg";
$new_data = "cfg_data: " . $_REQUEST['config_val'];
if (file_exists($cfg_name)) {
  unlink($cfg_name);
}
try {
  file_put_contents($cfg_name, $new_data);
} catch (Exception $e) {
  echo "Exception caught!  " . $e -> getMessage() . "<br> 'n";
}
header("Location:show_config.php");
$cfg_name = "config.cfg";
$new_data = "cfg_data: " . $_REQUEST['config_val'];
if (file_exists($cfg_name)) {
  unlink($cfg_name);
}
try {
  file_put_contents($cfg_name, $new_data);
} catch (Exception $e) {
  echo "Exception caught!  " . $e -> getMessage() . "<br> 'n";
}
header("Location:show_config.php");
?>

请注意,为了实现这一点,必须将config.cfg上的权限设置为o:rwx(使用> chmod o+wx config.cfg),这是安全问题之一。此外,此代码不进行输入清理。如果你真的要使用这样的东西,你应该在保存任何东西之前检查并清理所有用户输入。