【问题标题】:Have a part of the URL string displayed on the website在网站上显示部分 URL 字符串
【发布时间】:2018-06-02 06:50:17
【问题描述】:

我正在尝试创建一个将发送给多人的网页。该网页包含一封信。

所以如果 URL 字符串看起来像:

Website.com/letter?name=Jim

那么页面上显示的字母应该显示为:

Hello Jim,
<br>
<br>Blah blah blah...

名称在某些情况下可能包含两个名称,在这种情况下应该同时显示两个名称,例如:

Website.com/letter?name=Jim Patrick

它会显示为:

Hello Jim Patrick,
<br>
<br>Blah blah blah...

我将如何实现这一目标?

【问题讨论】:

  • 请记住,像这样公开$_GET 参数几乎是在要求人们与他们一起玩。
  • @tadman 这到底是什么意思?喜欢将代码注入网站?
  • 如果你不小心,是的,你会遇到 XSS 问题。有关更多示例,请参阅OWASP。即使以最无害的形式,它也允许人们在页面上使用他们想要的任何文字链接到您的网站,甚至是您无法控制的“这个网站很烂”之类的内容。

标签: php html wordpress string url


【解决方案1】:
<?php 
 $name = $_REQUEST['name'];
 ?>

这将保留你的名字。

您想在哪里显示名称。就放吧。

<p>Hello, <?php echo $name; ?></p>

并且正如 tadman 指出的那样,不要公开 get 字段中的字段来生成它。如果有必要,您可以使用加密/解密步骤来防止其被轻易操纵。

编辑

如果你这样做,修改名字会很困难

链接中的加密名称

http://some.com/letter?name=asd35we$%3r

然后用php解密

<?php
 $name = someDecryption($_REQUEST['name']); 
?>

【讨论】:

  • 非常感谢@shashikant_ 当您说加密/解密和操作时,您是指试图将代码注入网站的人吗?如果我使用基本的 HTML 网页并将该代码放在那里,那还需要加密吗?
  • 不是真的,但它可能很容易受到骚扰,我的意思是,如果有人决定将名称更改为他们喜欢的任何名称,因为如果它在地址字段中很容易看到,它就会变得容易。就这些。没有什么可担心的,如果它所做的只是阅读和显示。
【解决方案2】:

要改进查询字符串中$_GET 参数的解析/处理,您可以将语法更改为:

Website.com/letter?name[]=Jim&amp;name[]=Patrick

然后$_GET['name'] 将保持:array('Jim','Patrick')

$_GET 现在是多维的,您可以通过运行迭代名称:

foreach($_GET['name'] as $name){
    // echo $name // do whatever
}

或者您可以拨打implode('&amp;', $_GET['name']) 或类似电话。

请参阅this post,其中讨论了 tadman 警告您的主题。

最后,如果您只是想用空格分隔您的姓名并从单个表单字段提交它们(或硬编码一个 url),那么您的接收代码只需要 explode(' ',$_GET['name']) 然后将名称重新缝合在一起您选择的任何字符/子字符串。

你的问题有点模棱两可,所以万一Jim Patrick实际上只有一个人,你不需要改变任何东西。 name 值将是 name= 之后直到 url 字符串结尾或遇到 #&amp; 之前的所有文本(假设您正在处理有效的 url)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2020-01-08
    • 1970-01-01
    • 2012-10-05
    • 2012-05-14
    • 2017-04-13
    • 1970-01-01
    相关资源
    最近更新 更多