繁体   English   中英

如何验证股市数据

[英]How to validate Stock Market data

老实说,我不是专家,现在对如何陈述我的问题非常困惑......所以请原谅我缺乏知识和这个长期混乱的问题。

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

屏幕截图

他们使用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");
    ?>

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

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

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

但是,我的客户想要无论如何在代码中实现上述两个条件。 我不知道该怎么做。

不确定我是否能够正确解释我的问题:(但我真的需要一些帮助。此外,我很抱歉无法提供任何链接到这里的实际页面。非常感谢您阅读我困惑的帖子和投资你的时间!! :)

这是一个概念证明:

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:这只是一个概念证明。 这非常务实。 你当然可以改进设计和结构,但我想它足以说明如何解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM