1

我正在尝试使以下表单的 GET 函数成为预定义变量的一部分。

有任何想法吗?提前致谢!


让我解释一下我真正想做的事情。我目前经营一个专注于美国股市的网站。我创建了一个带有 method=GET 的 HTML 表单。此表单用作查找股票代码符号的搜索框。使用 GET 方法,它会将股票代码放在 URL 的末尾,然后我创建了一个 quotes.php 页面,该页面捕获此信息并根据在框中键入的股票代码显示股票图表。对于公司名称,我创建了一个名为 company.php 的页面,该页面声明了公司名称的所有变量(恰好是一个 $ 后跟股票代码)。文件company.php 是quotes.php 中包含的唯一文件。

这就是它的来源:'。$$_GET["symbol"] 。'

上面的代码根据在表单中输入的内容将 GET 更改为变量。如果有人在框中键入的内容与 company.php 页面中的变量不匹配,我使用“die”来显示错误消息。

我还为每家公司添加了 company.php 页面变量,这些变量将显示每只股票在哪个证券交易所上市。这些变量以“$ex_”开头。所以,我试图做的是将符号键入附加到“$ex_”的框中,以便显示相应的证券交易所。

我的问题是:

  1. 有没有办法将输入到表单中的内容添加到“$ex_”?
  2. 这是编写此类代码的不安全方式(可以被黑客入侵)吗?

谢谢你们!

4

5 回答 5

5

不要给变量添加前缀并使用变量变量(尤其是在用户输入时可能不安全),试试这个:

$ex = array(
    "foo" => "bar",
    ...
);
if( !isset($ex[$_GET['symbol']])) die("Error: That symbol doesn't exist!");
$chosen = $ex[$_GET['symbol']];
于 2013-04-10T22:16:00.167 回答
0

PHP's extract() does what exactly what you want, and you should specify "ex_" as the prefix you want.

However, there are security issues and unintended consequences to using such a function blindly, so read up on the additional paragraphs following the function parameters.

于 2013-04-11T00:33:32.023 回答
0

这是另一种方法:

extract($_GET, EXTR_PREFIX_ALL, "ex");

尽管最好像这样使用它以确保没有安全问题。

extract($_GET, EXTR_SKIP);
于 2013-04-10T22:30:57.140 回答
-1

下面会达到你所需要的吗?

$myGetVariable = $_GET['symbol'];
$ex_{$myGetVariable} = "Something";
于 2013-04-10T22:15:14.110 回答
-1
$_GET['symbol'] = 'APPL';

if (!empty($_GET)) {
  foreach ($_GET as $k => $v) {
   $var = 'ex_'.$k ;
    $$var=$v;
  }
}

var_dump($ex_symbol);

应用程序

于 2013-04-10T22:18:35.143 回答