php函数变量没有通过

时间:2014-06-12 14:53:18

标签: php function variables ftp http-post

我正在尝试创建一个简单的脚本,使用ftp将文件上传到服务器。我的设置包含3个文件。 index.php是接口,config.php包含一些默认配置值,transfer.php包含各种功能。使用require_once将配置和传输添加到index.php。

在索引文件中,我有一个简单的表单,它读取一些值(ftp主机,用户名,密码等),同时在该页面上显示它们。然后,当用户单击链接时,使用以下代码调用php函数:

if (isset($_GET['transfer1'])) {
      ftp_upload($server, $ftp_user_name, $ftp_user_pass, $dest, $destinationfile, $rem_path, $path, $unzipper, 'files');
      (!ftp_upload ? (list($result,$error) = array('File Transfer failed','1')) : $result = "File transfer completed successfully");
  }

transfer.php中的函数如下所示:

function ftp_upload($ftpserver, $user, $pass, $dest, $destinationfile, $rem_path, $path, $unzipper, $stage) {
  $numargs = func_num_args();
    echo "Number of arguments: $numargs<br />\n";
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }
  $conn = @ftp_connect($ftpserver) or die ("Cannot connect to $ftpserver");
  $login = @ftp_login($conn, $user, $pass) or die ("Cannot login as $user - $pass<br />");
  if($stage == 'files') {
      $upload = ftp_put($conn, $dest, $destinationfile, FTP_BINARY);
      (!$upload ? false : true);
  } elseif($stage == 'unzip') {
      $upload = ftp_put($conn, $rem_path.$unzipper, $path.$unzipper, FTP_ASCII);
      (!$upload ? false : true);
  } elseif ($stage == 'sql') {
      $upload = ftp_put($conn, $rem_path.'/backup.sql', $_SERVER["DOCUMENT_ROOT"] . '/backup.sql', FTP_BINARY);
      (!$upload ? false : true);
  }
  ftp_close($conn);
}

如您所见,有关传输(用户/传递等)的值应传递给该函数。问题在于虽然它们出现(func_get_args()的功能),但它们不起作用。例如,如果我使用表单更改ftp主机名,则主页面会正确显示它,但传递的值是config.php文件的默认值。 理论上,此文件允许使用类似于以下内容的值来覆盖值:

(isset($_POST['server-host']) && $_POST['server-host'] != '' ? $server = $_POST['server-host'] : $server = "test.com");

但是,以上所有内容根本不起作用。就主要的index.php文件而言,所有值都会更新,并且应该传递给函数,但它们不会。

也许有人可以指出我的错误或至少指出我正确的方向???

谢谢!

P.S:为了更好地了解我要做的事情:我有一个包含2个文件的index.php文件。其中一个(config.php)具有可以被$ _POST数据覆盖的默认值(参见上面的isset()语句)。另一个是transfer.php,它处理ftp上传的东西。如果我硬编码所需的值,该函数可以正常工作,但是当我使用第一个if语句检查$ _GET时,传递给函数的变量不是更新的变量,而是默认值...

0 个答案:

没有答案