gpt4 book ai didi

php - mysql 和 php 函数未正确显示 % 百分号

转载 作者:行者123 更新时间:2023-11-29 10:16:07 25 4
gpt4 key购买 nike

我正在使用 codeigniter 构建 Web 应用程序。

此应用程序有一个用于多播的自动配置网络接口(interface),它根据卡信息生成无效的 IP 多播。在 app.txt conf 文件中,我输入以下数据

auto_ip4=239.106.%card.%number

它扫描卡号并在日志上输出 IP 多播,如本示例 239.105.2.1,并且工作正常,但在前端 WebGUI 上出现问题。

我们有一个函数可以保存输入数据并将其存储在 mysql 数据库上; mysql表记录3个值ID、NAME、VALUE

值(value)函数是数据存储的地方 239.105.%card.%number

当我按保存时,记录如下所示:239.105.?rd.%number 当我导出它时,文本配置文件如下所示

auto_ip4=239.106.?rd.%number 

这是将数据值保存到mysql数据库的PHP表单代码

<?=form_open('config/edit/'.$config->id.'/valid')?>
<table class="form">
<tr>
<th>Config param</th>
<td><?=$config->name?></td>
<td><input type="text" name="value" value="<?=$config->value?>" /></td>
</tr>

<tr>
<td colspan="2"><input type="submit" value="Save"/></td>
</tr>
</table>
<?=form_close()?>

显然,这只发生在第一个 % 符号上,第二个 % 符号会正确存储。

最佳答案

看到 239.105.%card.%number 变为 239.105.?rd.%number,并且您在注释中指定您使用 239.106.%cord.%number

毫无疑问,问题的发生是因为您在 urldecode() 函数的某个地方搞砸了。

检查这个https://www.w3schools.com/tags/ref_urlencode.asp

% 作为 url 编码中的字符开头。

%CA 被解码为 Ê

您的字符串239.105.%card.%number实际上已变为239.106.Êrd.%number

您看到 ? 可能是因为您的输出应用程序无法显示 Ê,或者是因为您的数据库/表的字符集不管理该特定的特殊字符。例如,如果您使用 utf-8、utf-16 或任何基于拉丁语的字符集,则两侧都会看到 Ê

示例中显示的所有其余内容均有效:

  • %nu 位于 %number
  • %co 在 %cord

不是有效的 url 编码字符,因此它们被存储为纯文本和/或不被解码。这就是这种奇怪行为的原因。

在不查看代码的情况下,很难准确地告诉您如何解决问题。

关于php - mysql 和 php 函数未正确显示 % 百分号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50091819/

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