-1

这是我的代码,我在 edit.php 中使用来编辑我的数据库,但是当我直接在浏览器中打开这个页面时,我得到了错误Notice: Undefined index: OPRID

但现在我打开了这条路径的页面

Optr_Edit.php?OPRID=<?=$objResult["OPRID"];?> 

它是对的,是错的……告诉我

<?
include ('connection.php');
$strSQL = "SELECT * FROM OPERATOR WHERE OPRID =  '".$_GET["OPRID"]."' ";
$objParse = oci_parse ($ora_conn, $strSQL);
oci_execute ($objParse,OCI_DEFAULT);
$objResult = oci_fetch_array($objParse);

if(!$objResult)
{  
    echo "Not found OPRID=".$_GET["OPRID"];
} else {  
....
?>
4

5 回答 5

1
http://www.yourdomain.com/path/edit.php?OPRID=hello

使用此 URL,$_GET["OPRID"]将包含“hello”。如果你不通过这样的 URL 传递任何东西,http://www.yourdomain.com/path/edit.php那么$_GET["OPRID"]将不会被设置。

于 2013-10-28T11:21:06.580 回答
0

您可以利用内置函数访问您的 GET、POST、COOKIE SERVER 和 ENV 数组filter_input()

php.net 链接

使用此功能,您将不会记录错误或通知,并且您的变量将始终具有值并被清理。

编辑:

而不是使用

$_GET["OPRID"]

几次你可以使用

$oprid = filter_input(INPUT_GET, 'OPRID');

一次在你的脚本中。在此行之后,您有一个$oprid具有定义值的变量,null如果索引OPRID$_GET空,则该变量未设置。

摘自 php.net:

返回值:

成功时请求变量的值,如果过滤器失败,则为 FALSE,如果未设置 variable_name 变量,则为 NULL。如果使用 FILTER_NULL_ON_FAILURE 标志,则如果未设置变量,则返回 FALSE,如果过滤器失败,则返回 NULL。

于 2013-10-28T11:23:54.663 回答
0

当从另一个 html 表单调用 php 模块时,$GET 包含 CGI 参数。如果你只是直接打开php文件,不会有任何参数,除非你使用mypage.php?OPRID=XX提供它们

于 2013-10-28T11:20:33.470 回答
0

GET参数是来自 URL 的参数。

例如:

http://www.example.comOPRID=测试

您现在可以通过$_GET字典获取值“test”:

print $_GET["OPRID"];

输出将是

测试

于 2013-10-28T11:22:05.533 回答
0

你必须这样称呼它:

edit.php?OPRID=<your value here>

然后 $_GET 数组看起来像:

array('OPRID',<your value here>);

您可以检查索引是否存在

if(isset($_GET['OPRID']))
{
     //DO STUFF
}
else
{
     //ECHO: NO OPRID FOUND
}

请确保您对 $_GET 中的值进行了转义,因为攻击者可以轻松输入:

edit.php?OPRID=1"or"1"="1

或更糟。阅读更多相关信息:SQL 注入

于 2013-10-28T11:23:32.627 回答