Php $mysql_uuu正在消失?

Php $mysql_uuu正在消失?,php,mysql,Php,Mysql,嗨,我正在编写一个安装程序。。我遇到了麻烦,因为。。创建global.php文件时,$mysql_uuu连接不会显示在文件中,而其他所有内容都会显示 我正在试着插入这个 $mysql_host = 'localhost'; $mysql_user = 'root'; $mysql_name = '-----'; $mysql_pass = '-----'; 在global.php中,它提供了: = 'localhost'; = 'root'; = '-----'; = '-----';

嗨,我正在编写一个安装程序。。我遇到了麻烦,因为。。创建global.php文件时,$mysql_uuu连接不会显示在文件中,而其他所有内容都会显示

我正在试着插入这个

$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_name = '-----';
$mysql_pass = '-----';
在global.php中,它提供了:

 = 'localhost';
 = 'root';
 = '-----';
 = '-----';
注意到$mysql_uu丢失了吗

这是安装程序中的代码:

    $db_name = trim($_POST['db_name']);
    $db_user = trim($_POST['db_user']);
    $db_pass = trim($_POST['db_pass']);
    $db_host = trim($_POST['db_host']);     

    $handle = fopen($setting['config']['folder'] . $setting['config']['file'], 'w');

$input = "<?php



$mysql_host = '".$db_host."';
$mysql_user = '".$db_user."';
$mysql_name = '".$db_name."';
$mysql_pass = '".$db_pass."';
?>

";

fwrite($handle, $input);
fclose($handle);
$db_name=trim($_POST['db_name']);
$db_user=trim($_POST['db_user']);
$db_pass=修剪($_POST['db_pass']);
$db_host=trim($_POST['db_host']);
$handle=fopen($setting['config']['folder'].$setting['config']['file'],'w');
$input=”
";
fwrite($handle,$input);
fclose($handle);
有人能帮忙吗? 谢谢

$input=“”;

在双引号字符串中,$符号类似于串联。如果要在字符串中插入美元符号,应使用
\
反斜杠对其进行转义。

由于在字符串中使用双引号,PHP将解释它在字符串中看到的变量名,并输出变量值而不是变量名

这是一个php特性,允许您在字符串中嵌入变量,而无需重复打开和关闭字符串。具有讽刺意味的是,这正是您对实际PHP变量所做的

您有两个选择:

  • 切换到对字符串使用单引号。这将完全按照您拥有的方式工作

  • 继续使用双引号,但是用反斜杠转义
    $
    符号,您不希望PHP解释它

    如果您继续使用双引号,您还可以选择像我说的那样将变量嵌入字符串中,因此不需要一直打开和关闭引号。在本例中,您的代码如下所示:

    $input = "<?php
    
    \$mysql_host = '{$db_host}';
    \$mysql_user = '{$db_user}';
    \$mysql_name = '{$db_name}';
    \$mysql_pass = '{$db_pass}';
    ?>
    ";
    
    $input=”
    ";
    
  • 不过,还有一件事需要注意:当您从
    $\u POST
    读取变量时,您并不是在转义
    $db\u xx
    变量。这意味着,例如,如果用户的名称或密码中包含引号字符,将导致生成无效的PHP代码


    此外,用户还可以使用此错误作为将任意PHP代码注入系统的技术。虽然此脚本显然只用于首先设置系统时,但这是代码中的一个主要安全缺陷,应该予以纠正。

    现在,$db\u主机无法从上面的脚本中获取。现在显示$mysql_host=''$mysql_user=''$mysql_name=''$mysql_pass=''@用户2172990您确定
    $db\u主机
    $db\u用户
    。。。变量定义正确/不为空?问题不在上面的代码中。打开所有PHP错误。
    $input = "<?php
    
    \$mysql_host = '{$db_host}';
    \$mysql_user = '{$db_user}';
    \$mysql_name = '{$db_name}';
    \$mysql_pass = '{$db_pass}';
    ?>
    ";