Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP删除脚本,返回到';viewsubjects.php?课堂id=无值';_Php_Mysql_Uri - Fatal编程技术网

PHP删除脚本,返回到';viewsubjects.php?课堂id=无值';

PHP删除脚本,返回到';viewsubjects.php?课堂id=无值';,php,mysql,uri,Php,Mysql,Uri,正如标题所述。。。我正在从“教室”中删除“主题”。我查看教室,然后可以单击教室查看该教室的主题。因此,我查看主题的链接如下所示: viewsubjects.php?classroom=23 当用户选择删除按钮(在一行中)从一个类中删除一个主题时,我只想让用户重定向回教室的主题列表(正好是之前的位置!!) 所以我认为这只是在我的删除脚本中调用教室ID的一个例子。以下是我所拥有的: 编辑:纠正了代码中的拼写错误(这不是问题所在) 主题正在从数据库中删除,但当我重定向回数据库时,URI显示为空教室I

正如标题所述。。。我正在从“教室”中删除“主题”。我查看教室,然后可以单击教室查看该教室的主题。因此,我查看主题的链接如下所示:

viewsubjects.php?classroom=23
当用户选择删除按钮(在一行中)从一个类中删除一个主题时,我只想让用户重定向回教室的主题列表(正好是之前的位置!!)

所以我认为这只是在我的删除脚本中调用教室ID的一个例子。以下是我所拥有的:

编辑:纠正了代码中的拼写错误(这不是问题所在)

主题正在从数据库中删除,但当我重定向回数据库时,URI显示为空教室ID,如:

viewsubjects.php?教室id=


是否有一种方法可以通过删除脚本成功地传递教室ID,以便在删除后显示,从而允许用户重定向回页面?谢谢你的帮助

为什么不将教室id添加到隐藏字段中的删除表单中?

代码中存在拼写错误

将第2行更改为:
$school\u id=$\u GET['school']

它应该是
$school\u id=$\u GET['school']

不是:
$school\u id=$\u GET['classrom\u id']


编辑您已经编辑了代码,但是$\u GET变量中的字符串是否与URL中的字符串匹配?

请注意,如果这是一个管理函数:太好了


如果这是在前端,你需要考虑确定主题是干净的,因为它很容易侵入你的站点。

这可能有点冗长……但是让我们看看

会发生什么。
if ( !isset($_GET['subject_id']) ) {
  echo 'DEBUG: missing GET parameter subject_id';
  var_dump($_GET);
  die;
}
if ( !isset($_GET['classrom_id']) ) {
  echo 'DEBUG: missing GET parameter classroom_id';
  var_dump($_GET);
  die;
}
else if ( 0===strlen(trim($_GET['subject_id'])) ) {
  echo 'DEBUG: empty GET parameter subject_id';
  var_dump($_GET);
  die;
}
else if ( 0===strlen(trim($_GET['classrom_id'])) ) {
  echo 'DEBUG: empty GET parameter classroom_id';
  var_dump($_GET);
  die;
}

$subject_id = mysql_real_escape_string($_GET['subject_id'], $connection);

$sql = "DELETE FROM subjects WHERE subject_id='$subject_id'";
$result = mysql_query($sql, $connection) or die("MySQL Error: ".mysql_error());
if ( 0===mysql_affected_rows($connection) ) {
  echo 'no such subject_id found. no records have been deleted';
  die;
}

header("Location: viewsubjects.php?classroom_id=".urlencode($_GET['classrom_id']));
exit();

(它还修复了sql注入漏洞)

如果响应上述命令,则更容易执行:

if (!isset($_GET['subject_id']) || empty($_GET['subject_id']) || !is_numeric($_GET['subject_id'])) {
 throw new exception('Subject Id is not set');
}

必须仅使用POST方法而不是GETT来执行删除操作为了避免SQL注入(请参阅),您应该转义
$subject\u id
,或者确保它是一个整数;使用,例如:
“从subject_id=”的主题中删除。intval($subject_id)我在其他脚本上使用GET执行了删除操作,它可以正常工作吗?或者你的意思是另一种意思?@Derek至于你的问题,你只是没有在这里显示删除表单的html代码。我猜,你没能把教室id传给老师,跟你的桌子说再见。。。php?教室=23';下拉+表格+主题;如果在删除表单时可以从数据库中读取表单,为什么还要在表单中添加更多内容?像这样扩展表单是不必要的,而且需要做更多的工作。免费建议:打开或查看您的错误日志,您可能会注意到错误,因为您正在读取一个不存在的变量。这是错误的,因为我没有粘贴代码,我在问题中键入了错误,这是因为您没有粘贴真实的测试代码;-)将代码简化为基本部分没有什么错。但请确保删节的版本显示了相同的行为,并且没有引入新的错误。这是浪费时间,也是我们所有人的负担……你的问题不完整,仍然没有得到纠正,是吗?您使用?课堂=23来调用列表页面,但更重要的是,如何调用删除脚本?教室=23还是?教室id=23?
if (!isset($_GET['subject_id']) || empty($_GET['subject_id']) || !is_numeric($_GET['subject_id'])) {
 throw new exception('Subject Id is not set');
}