2014-03-18 72 views
0

如果我有一个查询字符串,如:http://mywebsite.co.uk/charge.php?val=5768验证查询字符串在PHP

我如何可以验证该查询字符串,如果用户在查询改变“VAL”的值抛出用PHP错误串。我可以在charge.php页面上编写一些代码来执行此操作吗?

+0

是的,你可以。我相信你可以弄明白。 – h2ooooooo

+0

请你能给我一个提示,也许我是新来的php – Rifki

+0

一般来说,Rifki,StackOverflow是用来发布你已经尝试过的代码示例,你得到了什么错误,并寻求帮助修复这些错误。不适合人们为你写代码。 – Rottingham

回答

2

在我看来,你在吠叫错误的树。你无法检测到某人是否“改变”了某些东西。你得到的只是一个URL的请求,就是这样。您通常不知道该请求来自哪里或谁提供了该URL;您需要根据自身的优点评估请求。

我猜你有一些保密的行为,当有人访问该网址时发生。价值观改变了这一行动的一些重要部分。然后,您需要创建服务器端检查和界限,以确认用户目前是否可以执行他在此处请求的任何操作。您需要在服务器上存储足够的信息以确认用户是否允许执行该操作。你不能简单地信任URL中的信息,因为任何人都可以篡改它。

如何做到这一点具体在你的情况是不明确的,因为我没有具体的想法那里应该发生什么。

+1

我很害怕它与6小时前的问题([使用Stripe](http://stackoverflow.com /问题/ 22481482 /条纹网关日志犯规出现量))。我不愿意在一个必须构建仅仅安全的代码的网站上付款,因为“我无法更改GET参数”。 – h2ooooooo

0

您可以检查val是否为整数,并且val是否存在于数据库中。我用一个函数像下面的检查整数:

// CHECK IF VALID INTEGER 
function valid_integer($str) 
{ 
    if (strlen($str) == strlen(preg_replace('#[^0-9]#i', '', $str) + 0) AND $str > 0 AND $str < 9999999999999) 
    { 
     return true; 
    } 
} 

这样的话我可以检查VAL像下面

if (valid_integer($_GET['val'])) 
{ 
    echo 'valid int'; 
} 
    else 
    { 
     echo 'not valid int'; 
    } 

然后你必须检查VAL存在于数据库中。如果你使用分贝。