注意:未定义的索引

时间:2013-10-28 11:17:08

标签: php oracle

这是我的代码,我在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 {  
....
?>

5 个答案:

答案 0 :(得分:1)

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

使用此网址,$_GET["OPRID"]将包含“hello”。如果您没有通过类似http://www.yourdomain.com/path/edit.php的网址传递任何内容,则不会设置$_GET["OPRID"]

答案 1 :(得分:0)

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

答案 2 :(得分:0)

GET参数是来自网址的参数。

例如:

  

http://www.example.com?的 OPRID =测试

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

print $_GET["OPRID"];

输出

  

测试

答案 3 :(得分: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 Injection

答案 4 :(得分:0)

您可以使用内置函数filter_input()

访问您的GET,POST,COOKIE SERVER和ENV数组

php.net Link

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

编辑:

而不是使用

$_GET["OPRID"]

你可以多次使用

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

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

摘自php.net:

返回值:

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