将PHP会话连接到一个单引号字符串中


Concatenating PHP session in a single quoted string

我必须在一个文件中创建一个输出文件(包含编译错误)。我最初的方法是这样的:

$output = system("C:'cygwin'bin'bash.exe --login -c '/cygdrive/c/cygwin/bin/g++.exe /cygdrive/c/Server/www/Codice/chorva.cpp -o /cygdrive/c/Server/www/Codice/chorva.exe >> compile.log 2>&1'");

这个代码工作了。

但是当我添加会话时,我不能使它正确。我做错了什么?非常感谢所有的帮助!

$command = "/cygdrive/c/cygwin/bin/g++.exe /cygdrive/c/Server/www/Codice/LOGS/".$_SESSION['username']."/chorva.cpp -o /cygdrive/c/Server/www/Codice/LOGS/".$_SESSION['username']."/chorva.exe >> compile.log 2>&1";    
$output = system('C:'cygwin'bin'bash.exe --login -c'.$command);
编辑:我确实使用了session_start(),会话用户名确实有一个值

首先,您应该通过在代码顶部放置session_start();来启用PHP会话,以便PHP可以初始化会话cookie。

使用isset($_SESSION['username'])和/或!empty($_SESSION['username'])确保会话设置且值不为空。

我建议使用var_dump($_SESSION);查看是否实际设置了该值。

终于成功了。我是这样做的:

$un = $_SESSION['username'];
$command = "/cygdrive/c/cygwin/bin/g++.exe /cygdrive/c/Server/www/Codice/LOGS/".$un."/chorva.cpp -o /cygdrive/c/Server/www/Codice/LOGS/".$un."/chorva.exe >> LOGS/".$un."/compile.log 2>&1";
$output = system("C:'cygwin'bin'bash.exe --login -c '".$command);

所以我还是加了一个撇号。否则,它将不起作用