为什么可以';我在POST(php页面)中使用#(数字符号)作为值

为什么可以';我在POST(php页面)中使用#(数字符号)作为值,php,post,http-post,Php,Post,Http Post,我有一个php项目,我必须传递文件名作为POST请求来删除web服务器中的文件。但当我传递包含#(数字符号)的文件名时,它无法获得正确的文件名,从而导致错误 这是我的简单php脚本 <?php $file = $_GET["file"]; if (!unlink("upload/".$file)) { echo ("Error deleting $file"); } else { echo ("Deleted $file"); } ?> 因为: 您试图从

我有一个php项目,我必须传递文件名作为POST请求来删除web服务器中的文件。但当我传递包含#(数字符号)的文件名时,它无法获得正确的文件名,从而导致错误

这是我的简单php脚本

<?php
$file = $_GET["file"];
if (!unlink("upload/".$file))
  {
  echo ("Error deleting $file");
  }
else
  {
  echo ("Deleted $file");
  }
?>

因为:

  • 您试图从
    $\u GET
    而不是
    $\u POST
    读取
  • #
    在URI中具有特殊意义,如果要将其表示为数据,则必须将其百分比编码为
    %23
    • 因为:

      • 您试图从
        $\u GET
        而不是
        $\u POST
        读取
      • #
        在URI中具有特殊意义,如果要将其表示为数据,则必须将其百分比编码为
        %23

      这似乎是个非常糟糕的主意<代码>$\u GET['file']='../../../../../../../../etc/passwd'@MikeB谢谢你的警告。上面的php代码仅用于我的拼贴项目的本地服务器环境。没有人能够访问拼贴服务器,从来没有想过利用安全漏洞破坏别人的项目会很有趣。众所周知,大学生是最成熟的人。这似乎是一个非常糟糕的想法<代码>$\u GET['file']='../../../../../../../../etc/passwd'@MikeB谢谢你的警告。上面的php代码仅用于我的拼贴项目的本地服务器环境。没有人能够访问拼贴服务器,从来没有想过利用安全漏洞破坏别人的项目会很有趣。众所周知,大学生是最成熟的人。