php - Edge/Chrome 和 Firefox 上保存文件名的不同行为
问题描述
我在一个项目上工作,我面临着边缘/铬和火狐之间的奇怪行为。我正在尝试使用file_[ip address]-[username].txt 之类的文件名保存文件。
通过ajax从html页面发送数据..
...
<form id="frmChat" action="#">
<table>
<tr>
<td>User:</td>
<td>
<input class="input-data" type="text" id="txtUser" name="user" size="20" value="" />
</td>
<td rowspan="2">
<input class="input-data-submit" type="submit" name="send" value="Send Value" />
</td>
</tr>
<tr>
<td>Message:</td>
<td>
<input type="text" name="message" id="txtMessage" size="20" />
</td>
</tr>
</table>
</form>
...
var data = $(this).serialize();
$.ajax({
url: 'xxx.php',
dataType: 'text',
data: data,
type: 'post',
...
}
});
...
我将数据保存到我的 php 文件中,如下所示:
...
$postVars = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
extract($postVars); //contains $user, $message and some more fields
...
然后我尝试保存文件
...
$userip = $_SERVER['REMOTE_ADDR']."-".$user;
$msg = $userip."-".$message;
$fp=fsockopen($host,$port,$errstr,$errno,300)
fputs($fp,$msg);
fclose($fp);
...
到目前为止,一切都按预期工作。但是,当我从 edge/chrome 打开页面时,我得到“ null ”作为 $user 和 $_SERVER['REMOTE_ADDR'] 并且当我从 firefox 打开页面时,我得到了 $user 和 $_SERVER['REMOTE_ADDR']正确。
所以在边缘/铬上创建的保存文件看起来像:file_-.txt
而从火狐是这样的:file_127.0.0.0-test.txt
我在这里想念什么?
解决方案
谜团已揭开。每个浏览器处理 localhost ip 的方式引起的所有问题。
- Firefox 返回本地主机 ip:
127.0.0.1
- chrome/edge 将 localhost ip 返回为:
::1
所以在后来的环境卫生“清空”了我的变量,并导致了问题。谢谢大家的答案。
推荐阅读
- gentics-mesh - Gentics Mesh中培养物的使用
- android - 如何使 DrawerLayout 可重用?
- vba - 如何在EXCEL中使用VBA进行库存回溯测试
- angular - Angular 5. 相互导入类时打字稿中的循环依赖
- python - 是否可以检查一个字母是否在 ASCII 字母范围内?
- python - craete json 配置文件以优化 RandomizedSearchCV 中的参数
- android - 增加 GridLayoutManager 中的列数会导致严重的卡顿
- python - Selenium 无法识别特定 HTML 中的任何元素,为什么?
- android - 当我从 ADB Shell 发送 BOOT_COMPLETE 广播时,应用程序关闭且没有任何错误
- python - 在 Python 中用 2 个变量的乘积求解联立方程?