这是我的代码,我在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 {
....
?>
答案 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["OPRID"]
你可以多次使用
$oprid = filter_input(INPUT_GET, 'OPRID');
一次在您的脚本中。在此行之后,您有一个变量$oprid
,如果null
中的索引OPRID
为空未设置,则该变量将为$_GET
。
摘自php.net:
返回值:
请求变量的值成功,如果过滤器失败则为FALSE;如果未设置variable_name变量,则为NULL。如果使用标志FILTER_NULL_ON_FAILURE,则在未设置变量时返回FALSE,如果过滤器失败则返回NULL。