当用户输入值并提交表单时,我有文本框,我将该字符串存储在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 函数,但是当用户输入 '
时,我无法从转换后的字符串中获取用户输入值
我的问题:
- 如何将用户输入字符串转换为安全字符串
- 如何从转换后的字符串中取回用户输入值
使用添加斜杠
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
使用addslashes
和stripslashes
例如 保存时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 代码。
我仍然坚持认为将值存储为常量定义并不是最好的方法。