创建 PHP 安全字符串并从转换后的字符串中取回第一个字符串


Create PHP safe string and get back 1st string from converted string

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

作为示例

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

现在我想将用户提交Vale存储在PHP文件中所以我让用户输入字符串并在PHP文件中写入波纹管

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

这个PHP代码给了我语法错误我想将用户输入值转换为安全的PHP字符串,看起来像下面的东西

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

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

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

我的问题:

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

使用添加斜杠

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

我已经测试过条形斜杠/添加斜杠工作正常

我已将输出字符串转换为 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

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

只需使用序列化/取消序列化。

http://php.net/manual/en/function.serialize.php

http://www.php.net/manual/en/function.unserialize.php

sprintf("<?php define('TEXT_VAL', %s);", var_export($userText, true))

var_export确保您获得的结果为有效的 PHP 代码。

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