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

时间:2013-06-07 07:09:45

标签: php

当用户输入值并提交表格时我有文本框我将该字符串存储在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. 如何让用户从转换后的字符串中输入值

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

使用addslashes

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

答案 2 :(得分:0)

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

我已将outputstring转换为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

答案 3 :(得分:0)

答案 4 :(得分:0)

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

var_export确保您将结果作为有效的PHP代码。

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