PHP - 带 GET 查询的加号

2024-01-06

我有一个 PHP 脚本,它通过以下方法对字符串进行基本加密:

<?php
$key = 'secretkey';
$string = $_GET['str'];

if ($_GET['method'] == "decrypt")
{
    $output = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}

if ($_GET['method'] == "encrypt")
{
    $output= base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
}

echo $output;
?>

用于加密字符串的 URL 示例如下所示:

Encrypt.php?method=加密&str=快狐

这会将其作为加密字符串返回:

LCuT/ieVa6cl3/4VtzE+jd9QPT3kvHYYJFqG6tY3P0Q=

现在要解密字符串,您所要做的就是将“method”查询更改为“decrypt”,如下所示:

Encrypt.php?method=decrypt&str=LCuT/ieVa6cl3/4VtzE+jd9QPT3kvHYYJFqG6tY3P0Q=

唯一的问题是,当加密的字符串被解密时,它会返回:

Øf§rYV}̳5äš·nßì(ñïX8Þ;b

我已将问题范围缩小到加密字符串中的加号。 PHP 的 GET 方法似乎将加号转换为空格。我搜索了这个bug,发现它已经被提交了here http://bugs.php.net/39078。我尝试了该页面上列出的不同方法和其他方法,但没有成功。我得到的最接近的是使用这个:

$fixedstring = str_replace(" ", "+", $string);

然后在加密方法中使用 $fixedstring ,问题是,解密后,所有空格都转换为加号。有任何想法吗?

我知道使用 POST 更有意义,但我使用 GET 是出于特定原因。我会省去细节。


如果您阅读该错误报告的全部内容,您将看到对RFC 2396 http://www.ietf.org/rfc/rfc2396.txt。其中指出 + 是reserved。 PHP 将未编码的 + 符号转换为空格是正确的。

您可以在将密文返回给用户时使用 urlencode() 。因此,当用户提交密文进行解密时,您可以对其进行 urldecode() 。如果 PHP 也通过 GET 字符串传入,它会自动为您执行此操作。

底线:+ 必须作为编码值提交给 PHP:%2B

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP - 带 GET 查询的加号 的相关文章

  • 使用 MYSQL 将 h:mm pm/am 时间格式插入数据库

    我正在尝试将以 h mm am pm 格式写入的时间插入到存储为标准 DATETIME 格式 hh mm ss 的数据库中 但我不知道如何将发布的时间转换为标准格式所以数据库会接受它 这是我到目前为止一直在尝试的 title POST in
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带
  • Symfony2:为什么请求传递到受 Symfony2 中 AppCache 影响的 Kernel.Terminate EventListener

    在我的 Symfony2 2 应用程序中 我使用 onKernelTerminate EventListener 以便我可以在渲染响应后进行一些 繁重 处理 以便用户收到更快的响应时间 在我的控制器中 我在请求上设置了一个属性 以便当事件侦
  • 简单的 PHP 回显代码不起作用

    这是我的 html 和 php 脚本 h1 Bob s Auto Parts h1 table width 100 tr tr table 为什么这个输出会出现一个 gt 我希望它是 这有效 仅有的 这是输出 鲍勃的汽车零件 鲍勃
  • 如何让Apache服务index.php而不是index.html?

    如果我将以下行放入index html文件 使 Apache 包含index php file 参观index html页面向我显示了这个 这是为什么 为什么它实际上不包含 PHP 文件 正如其他人指出的那样 您很可能没有 html设置为处
  • php源代码到PO文件生成器

    我必须将我的所有回显 打印字符串转换为PHP源代码代码文件到PO file 为了语言翻译 有批次吗对流器可用于相同的 我如何做到这一点 make gettext在您的服务器上运行 setup a 翻译适配器 例如带有 gettext 适配器
  • laravel - 使用请求类或输入类

    在宁静的控制器中 我应该使用哪个类来获取传递的变量 member gt email Input get email or member gt email Request get email 两种选择都适合我 但有什么区别 Input get
  • 如何检测字符串中的非 ASCII 字符?

    如果我有一个 PHP 字符串 如何以有效的方式确定它是否至少包含一个非 ASCII 字符 我所说的非 ASCII 字符是指不属于该表的任何字符 http www asciitable com http www asciitable com
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • 如何关闭未关闭的 HTML 标签?

    每当我们从数据库或类似来源获取一些经过编辑的用户输入内容时 我们可能会检索仅包含开始标记但不包含结束标记的部分 这可能会妨碍网站当前的布局 有客户端或服务器端的方法来解决这个问题吗 找到了一个很好的答案 使用 PHP 5 并使用 DOMDo
  • CodeIgniter 控制器 - JSON - AJAX

    我正在尝试通过 AJAX 使用 CodeIgniter 发送表单构建 并尝试使用 JSON 获取响应 但是 我只在打开开发人员选项卡时看到响应 我什至不确定这是否实际上是响应 因为它显示了两个 json 数据 它所显示的只是加载旋转器 然后
  • 从类似 cronjob 的语法创建“下次运行时间”日期

    在我正在创建的应用程序中 用户可以安排重复任务 生成间隔模式的简单值是 Minute 0 59 90 each minute Hour 0 23 90 each hour Day of month 1 31 90 each day of m
  • 编辑 HTACCESS 文件以防止直接访问特定文件夹中的特定文件

    我试图阻止直接访问子文件夹中的特定文件 我意识到这个论坛上有很多描述类似问题的主题 但是 我的似乎有点尴尬 由于我已经存在 HTACCESS 文件 这是文件的文件路径 www example com PRINCIPAL PROJECTS m
  • PHP - 类外 use 关键字和类内 use 关键字的区别

    伙计们 美好的一天 只是想问一下有什么区别use之外的class and use在 的里面class 我也用谷歌搜索过 但我的问题与答案不匹配 Example namespace App Http Controllers Auth use
  • 如何将我的 init 函数中的代码集中到所有控制器中?

    public function init this gt view gt user Zend Auth getInstance gt getIdentity this gt view gt siteName Zend Registry ge
  • WordPress 包含 SVG 文件错误

    我使用 PHP 和 WordPress 在本地主机上 我可以毫无问题地包含 SVG 文件 但在实时服务器上 我尝试包含一个 SVG 文件以便能够使用 CSS 对其进行样式设置 我收到此错误消息 Parse error syntax erro
  • 使用 Instagram Basic Display API 时出现“无效平台应用程序”错误

    我正在尝试使用 Instagram Basic 显示 API 但是当我发布授权代码以获取访问令牌时 我不断收到以下错误 error type OAuthException 代码 400 error message 平台应用无效 我正在遵循此
  • WordPress 自定义帖子类型未显示在搜索结果中

    我在 WordPress 中遇到自定义帖子类型 测验 和搜索的问题 自定义帖子类型未显示在我的搜索结果页面中 我的搜索结果中仅显示默认的帖子内容 以下是我使用的代码 函数 php函数create posttype register post
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for
  • 如何使用 php 将 *.xlsb 转换为数组或 *.csv

    我正在尝试转换 xlsb文件到php array or csv文件 或至少 xls 我尝试使用PHPExcel 但看起来它无法识别该文件中的内容 我注意到 你可以重命名 xlsb文件到 zip文件 然后使用命令行解压缩unzip zip 之

随机推荐

  • Android 上关闭键盘后返回沉浸模式

    我将沉浸式模式添加到我的应用程序中 这是代码 Override public void onWindowFocusChanged boolean hasFocus super onWindowFocusChanged hasFocus if
  • csv php mysql 数据导出 - 所有数据都导出在一列中

    我需要使用下面的 php 脚本将姓名 给定电话号码 移动注释位置全部放在我的 csv 导出的单独列中 当前代码将每条记录的所有选定数据导出到一列中 谢谢你 result mysql query SELECT who as Name Give
  • Jenkins Pipeline:如何转储错误?

    当尝试打印错误时 e getMessage 或在管道脚本中转储堆栈跟踪 我收到一条错误消息 指出这是不允许的 在这种情况下如何将错误输出到日志中 try deleteJob JOB NAME catch e emailError e get
  • 显示没有索引键的数组

    print r arraydata 我得到了输出 数组 0 gt vikas 1 gt 衬衫 2 gt 布料 1 3 gt 测试 4 gt 衬衫 5 gt 布料 2 6 gt avi 我需要这样显示数组 arr array vikas 衬衫
  • Chrome Inspector 中的 Javascript 调试:变量在手表和控制台中显示为未定义,但可以在悬停时进行检查

    在 Chrome 检查器中调试 AngularJS 时 我经常遇到这样的情况 当我知道某些变量已定义时 我可以通过在 Chrome 检查器中将鼠标悬停在它们上方来检查它们 他们也出现在 当地人 选项卡中 但是 当我尝试将它们添加到监视选项卡
  • 使用 ICommand 的按钮不会被禁用?

    我的 wpf mvvm 应用程序中有一个按钮控件 我用一个ICommand属性 在 viewmodel 中定义 将按钮单击事件绑定到 viewmodel 我有 gt 执行和canexecute我的参数ICommand执行 RelayComm
  • 如何使用 Java Mission Control 监控远程服务器中的 JVM?

    是否可以使用JMC 监控远程服务器中的 JVM 如果是这样我该怎么做 在使用之前是否需要调用任何特定的 java 标志 我尝试创建一个新的 JVM 连接 并指定向导中要求的所有详细信息 但是当我测试连接时它无法连接到该服务器 由于需要进行一
  • IIS 站点不断提示输入 Windows 身份验证方法的凭据

    我需要一些帮助来了解我无法在 IIS 站点上针对特定用户组使用 Windows 身份验证的确切原因 发生的情况是 即使我的用户属于我授予站点访问权限的组的一部分 IE 也会不断提示我输入凭据 甚至当我输入密码时 HTTP 响应也是 401
  • 如何使用库(插入符号)更改指标?

    我想使用以下方法将指标从 RMSE 更改为 RMSLE caret library 给定一些示例数据 ivar1 lt rnorm 500 mean 3 sd 1 ivar2 lt rnorm 500 mean 4 sd 1 ivar3 l
  • LINQ + Foreach 与 Foreach + If

    我需要迭代对象列表 仅对布尔属性设置为 true 的对象执行某些操作 我正在这段代码之间争论 foreach RouteParameter parameter in parameters Where p gt p Condition do
  • 使用 mod_wsgi 从不运行 Django 的站点提供 Django 应用程序 /

    我有一个网站 目前正在使用 Django 逐个应用程序重写 服务器是RedHat 运行 Apache 2 安装 mod wsgi 一切正常 惊人的 如果我去http www example com http www example com
  • preg_replace() 找不到结束分隔符?

    I use preg replace 很多 但我不是这方面的天才 如果我启动一个功能并故意键入我想要使用的所有表情符号 例如 但今天我尝试更改它并使用 mysql 让我可以随意插入和删除它们 而无需在我的代码中播放 但是当我尝试它时 它只会
  • Angular2:检测表单变化

    在 Angular2 4 0 中我有一个FormGroup看起来像这样 this form this fb group a Validators required b Validators required c Validators req
  • macOS 上的 NavigationLink 无法在同一视图中打开

    我目前正在构建一个 macOS 应用程序SwiftUI 无 Catalyst 应该有一个侧边栏和其右侧的单个视图 NavigationView List listStyle SidebarListStyle HomeView 我的主页视图有
  • Angular 4单个API请求运行多次

    我遇到有关 Angular 4 应用程序的问题 我创建了一个应用程序 其中的数据是从第三方 API 获取的 我遇到的问题是我的 API 多次调用 但我只发送了一次请求 经过一些研发后 我发现浏览器正在使用 OPTION 方法运行航班请求 但
  • Neo4j 中匹配/删除整个子图

    假设我的数据库中有一个大图 我想删除其中的整个子图 其中我只知道该子图的起始节点 是否可以编写一个密码查询来匹配并删除整个子图 警告 我不知道更多关于子图从哪个节点开始的信息 是的 您可以通过 APOC 程序从单个节点扩展到所有子图节点路径
  • 从源代码管理中丢失后如何生成新的 .pfx 文件?

    我正在使用 GitHub 托管我正在开发的开源 Windows 10 应用程序 我不小心忽略了应用程序的 PFX 文件 因此当我删除本地副本并重新克隆存储库时 我没有了MyApp TemporaryKey pfx文件 现在 Visual S
  • NLTK 上下文无关语法生成器

    我正在开发一个带有 Unicode 字符的非英语解析器 为此 我决定使用 NLTK 但它需要预定义的上下文无关语法 如下所示 S gt NP VP VP gt V NP V NP PP PP gt P NP V gt saw ate wal
  • 在 Web 应用程序和控制台应用程序之间共享配置设置

    我想与我的控制台应用程序 同一解决方案中的 2 个项目 共享我的 VS2010 3 5 Web 应用程序设置 例如连接字符串 smtp log4net 设置 这看起来很接近 http devlicio us blogs derik whit
  • PHP - 带 GET 查询的加号

    我有一个 PHP 脚本 它通过以下方法对字符串进行基本加密