gpt4 book ai didi

PHP 脚本完全删除字符串 - 如何修复?

转载 作者:搜寻专家 更新时间:2023-10-31 21:04:14 24 4
gpt4 key购买 nike

enter image description here


我制作了一个脚本,将几行 PHP 保存到 .php 文件中。我的所有脚本都运行良好,但只有这个页面开始变得烦人。

GIF 中发生的事情的解释:

1: 我更改设置 - 当您启用名为“自定义样式”的第二个设置时,需要显示最后两个设置。一切正常。2:因此您启用它并且由于某种原因它完全删除其他 2 个设置(“primarycolor”和“adminbg”)。

这怎么会发生?我究竟做错了什么?如果您想自己尝试一下,我的脚本如下。


<?php
if (isset($_POST["submit"])) {
$string = '<?php
$customoptions = '. $_POST["customoptions"] .';
$primarycolor = "'. $_POST["primarycolor"] .'";
$adminbg = "'. $_POST["adminbg"] .'";
?>';

$fp = fopen("includes/userstyle.php", "w");
fwrite($fp, $string);
fclose($fp);
}

include("includes/userstyle.php");
?>
<form action="" name="customopt" method="post">
<table>
<tr>
<td>Panel language</td>
<td>
<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
<option><?php echo $lang['chooselanguage']; ?></option>
<option value="dashboard.php?lang=en">English</option>
<option value="dashboard.php?lang=nl">Dutch</option>
</select>
</td>
</tr>
<tr>
<td>Custom Style</td>
<td><select name="customoptions" id="customoptions"><option value="true" <?php if($customoptions == true){ echo 'selected'; }; ?>><?php echo $lang['enabled']; ?></option><option value="false" <?php if($customoptions == false){ echo 'selected'; }; ?>><?php echo $lang['disabled']; ?></option></select></td>
</tr>
<?php if($customoptions) { ?>
<tr>
<td>Primary Color</td>
<td><input name="primarycolor" type="text" id="primarycolor" value="<?php echo $primarycolor; ?>"></td>
</tr>
<tr>
<td>Background Color</td>
<td><input name="adminbg" type="text" id="adminbg" value="<?php echo $adminbg; ?>"></td>
</tr>
<?php } ?>
</table>
<input type="submit" name="submit" value="<?php echo $lang['ok']; ?>">
</form>

编辑:userstyle.php

<?php 
$customoptions = true;
$primarycolor = "555";
$adminbg = "fff";
?>

最佳答案

当您第二次发布表单时,您发布的是空值,并且它们会按预期保存到文件中。

你应该添加类似的东西

if (isset($_POST["submit"]) && !empty($_POST['primarycolor']) && !empty($_POST['adminbg'])) {
// ...

但实际上可以有另外的验证规则。

正如其他人在评论中注意到的那样——即使出于教育目的,将用户数据保存到 php 文件中然后执行该文件也是非常愚蠢的想法。最简单的替代方案 — 使用 json_encode 将设置保存到 json 文件,然后解码,并且不要忘记至少使用 htmlspecialchars 对它们进行 html 转义。

关于PHP 脚本完全删除字符串 - 如何修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35294696/

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