老实说,我不是专家&现在我对如何声明我的problem...so感到非常困惑,请原谅我缺乏知识和这个长期困惑的问题。
我今天被分配了一个项目,客户在他们的页面上显示股票市场的信息(图片附后)。当你点击任何一个按钮(例如,纳斯达克),更多的信息会显示在弹出框中。

他们使用onClick()将整个字符串发送给第三方来收集数据。以下是NASDAQ链接的HTML代码:
<li>
<a href="#" onClick="open('https://app.quotemedia.com/quotetools/clientForward?symbol=^NASD&targetURL=http://app.quotemedia.com/quotetools/popups/quote.jsp?webmasterId=99944&locale=en_US','miniwin','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,width=550,height=270,top=20,left=0'); return false;">
NASDAQ
<span id="imageNASDAQ"></span>
<span id="valueNASDAQ" class="share_value"></span>
<span id="textNASDAQ"></span>
</a>
<script type="text/javascript" src="/getStockInfo.php?Stocks[NASD]=NASDAQ"></script>
</li>然后在getStockInfo.php文件中,他们以JSON字符串的形式收集数据,然后解析数据。下面是他们收集数据的方式:
<?php
if (array_key_exists("Stocks", $_GET)) {
foreach($_GET['Stocks'] as $symbol=>$stock) {
print file_get_contents("https://app.quotemedia.com/quotetools/jsVarsQuotes.go?webmasterId=99944&symbol=$symbol");
?>到目前为止还很简单。但现在客户想做些
这就是我感到困惑的地方。从它们的代码(HTML部分)看来,一切都是硬编码的(open('...symbol=^NASD...');、open('...symbol=^SPX...');或open('...symbol=^DJI...');),每个按钮/链接都将特定的股票代码信息发送到正在获取股票报价的getStockInfo.php文件(src="/getStockInfo.php?Stocks[NASD]=NASDAQ"、src="...Stocks[SPX]=SP500"或src="...Stocks[DJI]=DOW")。绝对没有的方法,我的客户的用户可以通过站点提供任何其他的股票符号来改变显示,唯一的操作符号的方法就是改变代码本身。
但是,我的客户希望在代码中实现上述两个条件。我不知道该怎么做。
不确定我是否能正确地解释我的问题:(但我真的需要一些帮助。)此外,我很抱歉不能提供任何链接到实际页面在这里。非常感谢您阅读我的文章并投入您的时间!)
发布于 2014-02-14 07:17:55
这里有一个概念的证明:
if (array_key_exists("Stocks", $_GET)) {
$stocks = array_filter($_GET['Stocks'], 'filterStocks');
foreach ($stocks as $symbol => $stock) {
print file_get_contents(…);
}
}
function filterStocks($symbol) {
return in_array(
$symbol,
array('SP500', 'SPX', 'DOW', 'NASDAQ')
)
}现在,getStockInfo.php将只返回四个符号的数据。如果您需要在单个用户的基础上进行配置,一个简单的解决方案是将filterStocks函数和回调更改为
function filterStocksForLoggedInUser($symbol) {
return in_array($symbol, getAllowedSymbolsForUser());
}
function getAllowedSymbolsForUser()
{
$permissions = include '/path/to/permissions/file.php';
return isset($permissions[$_SESSION['username']])
? $permissions[$_SESSION['username']]
: array();
}
}然后在权限文件中
return array(
'Walahh' => array('SP500', 'SPX', 'DOW', 'NASDAQ'),
'JohnDoe' => array('SP500', 'GOOG')
);注1:上面的假设您有某种方法来识别用户,这里是$_SESSION['username']。用您正在使用的任何内容来更改它,并相应地调整权限文件。
备注2:权限文件将每次从磁盘读取。磁盘I/O通常比较慢,因此您可能需要考虑将权限更快地移到某个地方。
注3:,这只是一个概念的证明。非常务实。您当然可以改进设计和结构,但我想这足以说明如何处理这个问题。
https://stackoverflow.com/questions/21772145
复制相似问题