1

当用户输入值并提交表单时我有文本框我将该字符串存储在 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' );

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

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

我的问题:

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

5 回答 5

1

使用addslashesandstripslashes 例如 addslashes(your string)在保存和strip_slashes(the result)显示时

于 2013-06-07T07:25:28.167 回答
0

使用加斜线

define ( 'TEXT_VAL', addslashes(your_val) );
于 2013-06-07T07:11:54.003 回答
0

我已经测试了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
于 2013-06-07T07:23:12.563 回答
0

只需使用序列化/反序列化。

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

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

于 2013-06-07T07:26:08.153 回答
0
sprintf("<?php define('TEXT_VAL', %s);", var_export($userText, true))

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

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

于 2013-06-07T08:13:59.633 回答