为什么数据有下划线?
是否有更简单的编写方式,以便在代码可读性方面更有意义?
我的分析:
data_应该接受任何data_,通过表单中的变量postmessage
请求消息,并确保它的文本并连接所有这些:
$filename = 'data_'.$_REQUEST['postmessage'].'.txt';
我是初学者,我对此代码的分析可能有误,但我愿意从错误中吸取教训。
答案 0 :(得分:6)
让我们分解一下:
$filename
的变量。$_REQUEST
或$_GET
。这将来自您的表格(如您所述)。上述元素之间的点用于连接字符串。
关于你的评论“并确保它的文字” - 错了。它不确定它的文本。你需要自己确定一下(出于安全原因)。
答案 1 :(得分:1)
看起来你只是在这段代码中对字符串进行排序。
。是一个连接运算符。
所以$ filename包含
data_somethingorother.txt
下划线是您正在构建的字符串的一部分。
答案 2 :(得分:1)
这是文件名的一部分。不要问我们为什么文件名包含它...
请注意,在使用其值之前验证$_REQUEST['postmessage']
中的内容是不安全的。
答案 3 :(得分:0)
这取决于你想要什么。假设$_REQUEST['postmessage']
包含"foo"
。第一个示例将生成$filename = 'data_foo.txt'
,,而第二个示例将生成(OP从问题中删除了第二个示例)$filename = 'data.txtfoo'
。
我猜第一个是期望的结果,但这取决于你的需求。它只是字符串连接,就是这样。
答案 4 :(得分:0)
关于可读性,我建议用空格包围字符串连接运算符.
。因此,像:
$filename = 'data_' . $_REQUEST['postmessage'] . '.txt';
使用带有PHP目标语法突出显示的文本编辑器/ IDE也可能有很大帮助。一个基本的PHP教程也将这样做。
答案 5 :(得分:0)
正如其他人所说,它只是从GET / POST变量构建一个文件名。至于可读性,我认为没关系。
但是,在使用GET / POST变量或用户可以更改的任何内容构建文件路径时,您需要非常小心。我几乎总是说你不应该这样做。如果你要去,至少要确保他们不能做postmessage=../../filename
之类的事情。
答案 6 :(得分:0)
同上,
但是,我定义了一个变量来存储请求变量。它使您的代码更易于阅读,因此更易于调试。它还将使清洁工作变得更加清洁。
$postMessage = $_REQUEST['postmessage'];
$filename = 'data_' . $postMessage . '.txt';