我是PHP的新手,所以这可能是一个简单的答案.希望我能正确地将其格式化为SO标准(对于网站来说仍然是新的).
我正在研究提交表单数据的两组非常相似的代码,并使用htmlspecialchars通过SitePoint在我的基本开始PHP书中停止XSS攻击.很简单,对.
使用代码集1时,一旦我更改了表单操作,就会收到未定义索引的错误
<form action="formpost.php" method="post">
Run Code Online (Sandbox Code Playgroud)
至
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Run Code Online (Sandbox Code Playgroud)
我搜索了SO,发现我需要检查是否$_REQUEST为空,以便没有未定义的索引并摆脱该错误.如果有人可以向我解释这一部分,我会非常感激.为了成为一个Index? 引人注目的问题,需要做些什么周边的事情,请不要取笑我,我知道我可能听起来很愚蠢 - >这是
Index因为$_REQUEST是a $_POST,$_GET而且$_COOKIE是数组中的数组和数据是indexed, 0,1,2,3,etc.?
我理解$_REQUEST可能是空的,因为没有$_REQUEST做过(我想?)但是,由于没有通过在表单中输入数据来激活脚本,为什么期望数据已经存在$_REQUEST?
代码集1(错误[未定义索引]除非脚本检查是否$_REQUEST为空):
在此代码中,我只是允许最终用户通过表单字段或通过手动添加到URL的字符串发布他们的名称它打印.
<?php
if( !empty($_REQUEST) )
{
$firstname = $_REQUEST['firstname'];
$lastname = $_REQUEST['lastname'];
echo 'Welcome to our web site, ' .
htmlspecialchars($firstname, ENT_QUOTES, 'utf-8') . ' ' .
htmlspecialchars($lastname, ENT_QUOTES, 'utf-8') . '!';
}
?> …Run Code Online (Sandbox Code Playgroud) 嘿,我是一个PHP新手,在这里建立一个"fetch,post to db,allow delete"项目,我已经获取了数据,打印了数据库行,现在我正在添加删除每一行的功能,'$id'但我是遇到这个错误.
我突出显示81行的astricks以及上下两个注释块,以便您轻松找到它.
谢谢你帮我学习.
<?php
// ***** MagicQuoteFix ***** //
if (get_magic_quotes_gpc())
{
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}
$_POST = array_map('stripslashes_deep', $_POST);
$_GET = array_map('stripslashes_deep', $_GET);
$_COOKIE = array_map('stripslashes_deep', $_COOKIE);
$_REQUEST = array_map('stripslashes_deep', $_REQUEST);
}
// ***** Begin Connection Info ***** //
$connection = mysqli_connect('localhost', 'ijdbuser', 'ijdbpw');
if (!$connection)
{
$error = 'Unable to connect to the database server.';
include 'error.html.php';
exit();
}
if (!mysqli_set_charset($connection, 'utf8'))
{ …Run Code Online (Sandbox Code Playgroud)