首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何验证股票市场数据

如何验证股票市场数据
EN

Stack Overflow用户
提问于 2014-02-14 06:17:23
回答 1查看 1.7K关注 0票数 3

老实说,我不是专家&现在我对如何声明我的problem...so感到非常困惑,请原谅我缺乏知识和这个长期困惑的问题。

我今天被分配了一个项目,客户在他们的页面上显示股票市场的信息(图片附后)。当你点击任何一个按钮(例如,纳斯达克),更多的信息会显示在弹出框中。

他们使用onClick()将整个字符串发送给第三方来收集数据。以下是NASDAQ链接的HTML代码:

代码语言:javascript
复制
    <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字符串的形式收集数据,然后解析数据。下面是他们收集数据的方式:

代码语言:javascript
复制
    <?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");
    ?>

到目前为止还很简单。但现在客户想做些

  • “用户输入验证”
  • 只接受4个符号: SP500,SPX,

这就是我感到困惑的地方。从它们的代码(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")。绝对没有的方法,我的客户的用户可以通过站点提供任何其他的股票符号来改变显示,唯一的操作符号的方法就是改变代码本身。

但是,我的客户希望在代码中实现上述两个条件。我不知道该怎么做。

不确定我是否能正确地解释我的问题:(但我真的需要一些帮助。)此外,我很抱歉不能提供任何链接到实际页面在这里。非常感谢您阅读我的文章并投入您的时间!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-14 07:17:55

这里有一个概念的证明:

代码语言:javascript
复制
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函数和回调更改为

代码语言:javascript
复制
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();
    }
}

然后在权限文件中

代码语言:javascript
复制
return array(
    'Walahh' => array('SP500', 'SPX', 'DOW', 'NASDAQ'),
    'JohnDoe' => array('SP500', 'GOOG')
);

注1:上面的假设您有某种方法来识别用户,这里是$_SESSION['username']。用您正在使用的任何内容来更改它,并相应地调整权限文件。

备注2:权限文件将每次从磁盘读取。磁盘I/O通常比较慢,因此您可能需要考虑将权限更快地移到某个地方。

注3:,这只是一个概念的证明。非常务实。您当然可以改进设计和结构,但我想这足以说明如何处理这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21772145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档