gpt4 book ai didi

php - 可以改进此 PHP 代码吗?

转载 作者:行者123 更新时间:2023-12-02 07:45:44 27 4
gpt4 key购买 nike

我想要实现的基本上是根据通过我的表单输入的数据设置变量(这些变量然后在我的整个网站上使用)。我不关心安全问题,因为我是唯一有权访问该表单的人。

所以目前我正在使用 fwrite 将数据保存在单独的文件中,然后为每个变量使用 file_get_contents。表单中的数据很小,每个字段一两个词。

我无法使用数据库,所以下面是我目前正在做的工作的一个例子,它可以改进还是有任何其他方法可以实现这个目标?

<?php

if(isset($_REQUEST['sub']))
{
$myFile = "first.php";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $_REQUEST['first'];
$string = preg_replace("/[^a-zA-Z0-9.:,=?%\/\\s]/", "", $stringData);
fwrite($fh, $string);
fclose($fh);

$myFile_second = "second.php";
$fh2 = fopen($myFile_second, 'w') or die("can't open file2");
$stringData2 = $_REQUEST['second'];
$string2 = preg_replace("/[^a-zA-Z0-9.:,=?%\/\\s]/", "", $stringData2);
fwrite($fh2, $string2);
fclose($fh2);

$myFile_third = "third.php";
$fh3 = fopen($myFile_third, 'w') or die("can't open file3");
$stringData3 = $_REQUEST['third'];
$string3 = preg_replace("/[^a-zA-Z0-9.:,=?%\/\\s]/", "", $stringData3);
fwrite($fh3, $string3);
fclose($fh3);
}

$first = file_get_contents ("first.php");
$second = file_get_contents ("second.php");
$third = file_get_contents ("third.php");

?>

<form method="post" name="installer">

<div id="field">
<label>First</label>
<input type="text" name="first" value="<?php echo $first; ?>" />
</div>

<div id="field">
<label>Second</label>
<input type="text" name="second" value="<?php echo $second; ?>" />
</div>

<div id="field">
<label>Third</label>
<input type="text" name="third" value="<?php echo $third; ?>" />
</div>

<div id="submit">
<input type="submit" value="Save" name="sub" />
</div>

</form>

如有任何建议,我们将不胜感激:)

更新

谢谢大家的帮助和建议。我现在已经实现了类似于下面的东西,我必须说它非常有效!

<?
if (isset($_REQUEST['sub'])) {

$files_data = array(
'first' => &$_REQUEST['first'],
'second' => &$_REQUEST['second'],
'third' => &$_REQUEST['third']
);

$files_data = preg_replace("/[^a-zA-Z0-9.:,=?%\/\\s]+/", "", $files_data);

file_put_contents('data.txt', serialize($files_data)) !== FALSE or die("Can't write to file!" . PHP_EOL);
}

$files_data = unserialize(file_get_contents('data.txt'));

$first = $files_data[first];
$second = $files_data[second];
$third = $files_data[third];

?>

<form method="post" name="installer">
<div id="field">
<label>First</label>
<input type="text" name="first" value="<?php echo $first; ?>" />
</div>
<div id="field">
<label>Second</label>
<input type="text" name="second" value="<?php echo $second; ?>" />
</div>
<div id="field">
<label>Third</label>
<input type="text" name="third" value="<?php echo $third; ?>" />
</div>
<div id="submit">
<input type="submit" value="Save" name="sub" />
</div>
</form>

最佳答案

我猜你这样做是为了持久性(即网络服务器重启,你希望你的数据一旦备份就在那里)?因此,如果您忙于编写、读取和解析大量文件,就很难从执行中节省大量时间。

你可以看看fscan看看这是否会让您的阅读速度更快一些。

除此之外,我建议您在解析文件后缓存数据,这样您就不必一遍又一遍地执行它,并且只在文件更改后才重新扫描。您可以通过校验和 或查看文件修改 时间戳来跟踪这一点。

“简化”它的一种方法是将发布的数据保存在数组 中,然后序列化 并将其保存到文件中。然后您可以一次读取整个文件并反序列化它,您将得到包含数据的数组。

将数组保存到文件的一种快速而肮脏的方法类似于

file_put_contents('mydatafile', serialize($myArray)));

并取回数组

$myArray = unserialize(file_get_contents('mydatafile'));

关于php - 可以改进此 PHP 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7171709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com