【问题标题】:Create PHP safe string and get back 1st string from converted string创建 PHP 安全字符串并从转换后的字符串中取回第一个字符串
【发布时间】:2013-06-07 07:09:45
【问题描述】:

当用户输入值并提交表单时,我有文本框,我将该字符串存储在 PHP 文件中

举例

用户输入值:c/om'n" tec\t

现在我想将用户提交值存储在 php 文件中 所以我让用户输入字符串并在php文件中写入如下

define ( 'TEXT_VAL', 'c/om'n" tec\t' );

这个 php 代码给了我语法错误 我想将用户输入值转换为安全的 php 字符串,如下所示

define ( 'TEXT_VAL', 'c/om\'n\" tec\t' );

之后如何从 TEXT_VAL 变量中获取第一个用户输入值(c/om'n" tec\t

我尝试使用addslashes() 和stripslashes() php 函数,但是当用户输入\ 时,我无法从转换后的字符串中获取用户输入值

我的问题:

  1. 如何将用户输入的字符串转换为安全字符串
  2. 如何从转换后的字符串中取回用户输入的值

【问题讨论】:

  • 将常量作为 PHP 代码写入文件可能不是最好的存储方法...?!
  • 这个例子的问题是你有\t 这是tab 特殊字符。与\r\n 等相同。因此,请尝试使用addcslashes 而不是addslashes,即addcslashes($str, "\t\r\n")

标签: php


【解决方案1】:

使用addslashesstripslashes 例如 保存时addslashes(your string),显示时strip_slashes(the result)

【讨论】:

  • 这是用户输入"时的问题
【解决方案2】:

使用addslashes

define ( 'TEXT_VAL', addslashes(your_val) );

【讨论】:

  • 是的,我试过如何从TEXT_VAL 取回用户输入的值,我尝试了addslashes() 和stripslashes() 函数thx
【解决方案3】:

我已经测试过stripslashes/addslashes 工作正常

我已将输出字符串转换为 base64 以模拟用户输入。 Base64 文本未转义。

 $val = base64_decode('Y29tJ24iIHRlY1x0');
 echo "USERINPUT: ".$val.'<br>';
 define ( 'TEXT_VAL', addslashes($val) );

 echo "ESCAPED: ".TEXT_VAL.'<BR>';
 echo "STRIPPED: ".stripslashes(TEXT_VAL);

输出:

USERINPUT: com'n" tec\t
ESCAPED: com\'n\" tec\\t
STRIPPED: com'n" tec\t

【讨论】:

    【解决方案4】:
    【解决方案5】:
    sprintf("<?php define('TEXT_VAL', %s);", var_export($userText, true))
    

    var_export 确保您得到的结果是有效的 PHP 代码。

    我仍然认为将值存储为常量定义并不是最好的方法。

    【讨论】:

      猜你喜欢
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 2021-03-30
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多