0

次のことを行う 1 ページのユーティリティ/プロトタイプを構築したいと考えています。

管理者ユーザーにドロップダウン ボックスを提供します。オプションを選択してから送信ボタンをクリックすると、/var/www/mysite/abc.txt から /var/www/mysecondsite/abc.txt にファイルをコピーできるようにしたい

フォームを表示するphp/htmlを書いたのですが、同じphpファイルでjquery/ajaxを使って関数を呼び出すことはできますか?

これが私のコードです:

<?php

$listofcountries='';

echo "<h2>Select a site</h2>";
echo " <script src='http://myserver/myapp/assets/js/jquery-1.8.1.min.js'></script>";

if ($handle = opendir(dirname(__FILE__)."/secrets/")) {

  echo "<input type=text list=site >";
  echo "<datalist id=site >";

    /* This is the correct way to loop over the directory. */
    while (false !== ($entry = readdir($handle))) {
    //ignore temporary files, and directories.
    if ( (strpos($entry, "~") === false) && !(trim($entry)==".") && !( $entry=="..") ){
          //echo "$entry\n<BR>";
          $country=getCountryName($entry);
          echo "<option>".$country;
      }
    }
    }
    closedir($handle);

echo "</datalist>";
echo "<input type=submit id='changert'><BR>";
echo "<script>";
echo "$(document).ready(function(){";

echo "       $('#changert').live('click', function()  {";
echo "      alert('in the changert function'); ";
echo "      });";

echo "  }); "; //end document ready
echo "</script> "; //end javascript



function getCountryName($fileame)
{
    $pattern = '/([a-z]*).([a-z]*).([a-z]*).php/i';
    preg_match_all($pattern, $fileame, $matches, PREG_SET_ORDER);           
    foreach ($matches as $match) {

        return $match[1];
    }
}

実際のバージョンでは、このソリューションは codeigniter ソリューションの一部になります...そのため、適切な MVC が必要です。しかし今のところ、すべてのロジックを 1 つのファイルに収めたいと考えています。どうすればこれができるか教えてもらえますか?

4

3 に答える 3

1

jQuery は単なる JavaScript なので、すべてクライアント上にあります。サーバー側のファイルのコピーは、引き続き PHP で処理する必要があります。最も簡単な解決策は、ボタンのクリック時にAJAXリクエストを作成してPHP APIをヒットし、トークンなどを渡すことです。これにより、セッション以外のユーザーが悪意を持ってファイルをコピーすることはありません。

$('#myButton').on('click', function(e) {

    $.ajax({
        url  : '/copyFile.php',
        data : {
            fileName : $('#mySelectMenu').val(),
            token    : someTokenYourPHPInjectedIntoYourJS
        },
        type : 'POST',
        success : function (data) {
            // yay
        }
    });
});
于 2013-01-03T16:00:14.753 に答える
1

PHP ドキュメントを確認してください: http://mx2.php.net/manual/en/function.copy.php

ファイルをコピーする例があります。

    <?php
        $file = 'example.txt';
        $newfile = 'example.txt.bak';
        if (!copy($file, $newfile)) {
            echo "failed to copy $file...\n";
        }
    ?>

このディレクトリが存在し、相互に表示されている必要があることに注意してください (同じ Web サーバー内)。

于 2013-01-03T16:06:26.707 に答える
0

ユーザー インターフェイスに Ajax 呼び出しを追加します。

$.ajax({
  url: 'copy.php',
  success: function(data) {
    if(data == 'true'){
        alert('The file has been copied');
    }
  }
});

リクエストに応じてファイルのコピーを処理するための 2 番目の php ファイルを作成します。

/* copy.php */
<?php

$result = copy('/dir1', '/dir2');
echo $result?'true':'false';

残念ながら、これは単純化しすぎており、エラー処理、入力チェック、およびセキュリティの改善を行う必要がありますが、その方法を説明したかっただけです。

于 2013-01-03T16:06:26.127 に答える