PHP下划线在filename变量?

时间:2009-11-25 00:58:53

标签: php

为什么数据有下划线?

是否有更简单的编写方式,以便在代码可读性方面更有意义?

我的分析:

data_应该接受任何data_,通过表单中的变量postmessage请求消息,并确保它的文本并连接所有这些:

 $filename = 'data_'.$_REQUEST['postmessage'].'.txt';

我是初学者,我对此代码的分析可能有误,但我愿意从错误中吸取教训。

7 个答案:

答案 0 :(得分:6)

让我们分解一下:

  1. $ filename = - 将值分配给名为$filename的变量。
  2. 数据_ - 只是一个字符串。
  3. $ _ REQUEST ['postmessage'] - postmessage 请求参数的值(可以是POST,GET或COOKIE参数。请勿使用{{1除非你绝对必须这样做,否则经常使用$_REQUEST$_GET。这将来自您的表格(如您所述)。
  4. 。'。txt' - 只是一个字符串。
  5. 上述元素之间的点用于连接字符串。

    关于你的评论“并确保它的文字” - 错了。它不确定它的文本。你需要自己确定一下(出于安全原因)。

答案 1 :(得分:1)

看起来你只是在这段代码中对字符串进行排序。

。是一个连接运算符。

所以$ filename包含

data_somethingorother.txt

下划线是您正在构建的字符串的一部分。

答案 2 :(得分:1)

这是文件名的一部分。不要问我们为什么文件名包含它...
请注意,在使用其值之前验证$_REQUEST['postmessage']中的内容是不安全的。

答案 3 :(得分:0)

这取决于你想要什么。假设$_REQUEST['postmessage']包含"foo"。第一个示例将生成$filename = 'data_foo.txt',而第二个示例将生成$filename = 'data.txtfoo'(OP从问题中删除了第二个示例)

我猜第一个是期望的结果,但这取决于你的需求。它只是字符串连接,就是这样。

答案 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';