1

大家好,我想通过使用 php 值作为参数来将值从 php 传递给 c 以运行 c 程序,但是 c 程序无法从 php 中看到任何值

这段 php 代码:

    enter code here
<form action="create.php" method="post">
Create VM on website <br>
VM Name 
    <input type="text" name="vm_n" value="" />
VM Ram
    <input type="text" name="vm_r" value="" />
VM Virtual CPU
    <input type="text" name="vm_c" value="" />
VM File size 
    <input type="text" name="vm_fs" value="" />
VM File OS
    <input type="text" name="vm_b" value="" />
    <input type="submit" name="button1" value="Submit" />
</form>
<?php
 //Check wihch Submit was clicked and pass from php
$vm_n[10]=$_POST['vm_n'];                                
$vm_r[5]=$_POST['vm_r'];
$vm_c[3]=$_POST['vm_c'];
$vm_fs[5]=$_POST['vm_fs'];
$vm_b=[8]$_POST['vm_b'];
if ($_POST['button1']) {
    echo "Creating VM.......";
    $last_line = system('/var/local/vmweb/create_vm install -n $vm_n -r $vm_r -c $vm_c -fs $vm_fs -b $vm_b', $retval);
    echo '
    </pre>
    <hr />Status Output: ' . $last_line . '
    <hr />Status Output: ' . $vm_n . '
    <hr />Status Output: ' . $vm_r . '
    <hr />Status Output: ' . $vm_c . '
    <hr />Status Output: ' . $vm_fs . '
    <hr />Status Output: ' . $vm_b . '
    <hr />Return value: ' . $retval;

} 
?>
and this code of C program : 
if (!(initsetuid())){
        exit(1);
    }
    // Check what command is asked
    if (argc==1)
    {       
        fprintf (stderr, "Missing Agument to Create VM command!\n");
        return 1;
    }
    if (argc==12 && strcmp(argv[1], OP_INSTALL)==0) {
        if (argc==12 && strcmp(argv[2], "-n")==0)   {
    printf("Argument is : %s Parameter is: %s \n", argv[2],argv[3]);        
    sprintf (vm_name,argv[3]);  
    //printf("vm_name is : %s \n",vm_name);
    }

我用 if else 来捕捉字符串上的一些参数

需要你帮助我吗!!谢谢你

4

1 回答 1

2

在这一行

system('/var/local/vmweb/create_vm install -n $vm_n -r $vm_r -c $vm_c -fs $vm_fs -b $vm_b', $retval);

您使用单引号将字符串中的变量括起来,PHP 不能那样工作。请改用双引号。

system("/var/local/vmweb/create_vm install -n $vm_n -r $vm_r -c $vm_c -fs $vm_fs -b $vm_b", $retval);

另外我认为你在这里错过了一个'=':你把'='放在了错误的地方:

$vm_b=[8]$_POST['vm_b'];

应该:

$vm_b[8] = $_POST['vm_b'];

等一下!

我认为这一切都是错误的!

$vm_n[10]=$_POST['vm_n'];                                
$vm_r[5]=$_POST['vm_r'];
$vm_c[3]=$_POST['vm_c'];
$vm_fs[5]=$_POST['vm_fs'];
$vm_b=[8]$_POST['vm_b'];

您正在使用上面的代码创建数组,我不相信这真的是您想要的..

试试这个:

$vm_n = $_POST['vm_n'];                                
$vm_r = $_POST['vm_r'];
$vm_c = $_POST['vm_c'];
$vm_fs = $_POST['vm_fs'];
$vm_b = $_POST['vm_b'];
于 2012-12-07T06:23:16.077 回答