【问题标题】:How to echo javascript encoded url from GET variable on php如何从php上的GET变量回显javascript编码的url
【发布时间】:2019-05-03 07:27:52
【问题描述】:

如何从 php 的 GET 方法中回显解码后的 url,

我有这个链接:

localhost/whatsapp?text=Hello%2C%20Who%20are%20U%3F%0AName%3A%20%0AAddress%3A%20%0AAge%3A%20

使用此代码

$text = $_GET['text'];
header("Location: https://web.whatsapp.com/send?phone=00000000&text=".$text);

但出现错误

警告:标头不能包含多个标头,在 index.php 中检测到新行

【问题讨论】:

标签: php


【解决方案1】:

当您从$_GET 检索值时,它们会被URL 解码。如果你想把它传回去,你需要再次编码,这样换行符、空格和其他奇怪的字符就会被编码。为此使用urlencode($text)

$text = $_GET['text'];
header("Location: https://web.whatsapp.com/send?phone=00000000&text=".urlencode($text));

【讨论】:

  • 在whatsapp上写成Hello,+Who+are+U?姓名:+ 地址:+ 年龄:+ 如何去掉“+”字符?
  • 这是编码 URL。要对其进行解码,请在发送后(在接收端)使用urldecode()。您需要检查可以发送给他们的text 的参数类型。
  • 我想从这个链接 localhost/wa-gen/?text=Hello%2C%20Who%20are%20U%3F%0AName%3A%20%0AAddress%3A%20%0AAge%3A%20 转换为 https://web.whatsapp.com/send?phone=00000000&text=Hello%2C%20Who%20are%20U%3F%0AName%3A%20%0AAddress%3A%20%0AAge%3A%20 所以回显与 $text 完全相同,但是当我使用 urldecode() 时重新运行是不同的
  • 我认为使用 urlencode() 它将删除 %20+ 如何在不将 %20 转换为 + 的情况下准确地回显相同的变量
  • rawurlencode() 会将空格解析为%20,而urlencode() 会将空格解析为+。可能需要那个函数。
【解决方案2】:

在将正确部分添加到新 URL 之前,您必须解析传入的编码 URL,例如:

<?php
    $url = 'localhost/wa-gen/?text=Hello%2C%20Who%20are%20U%3F%0AName%3A%20%0AAddress%3A%20%0AAge%3A%20';

    $newURL = "https://web.whatsapp.com/send?phone=00000000&".parse_url($url, PHP_URL_QUERY);
?>

Parse_url 非常擅长从给定的 URL 中提取片段。

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2013-08-19
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多