2016-05-24 19 views
0

私が作成したJavaSciptサイト用のPHPスクリプトを作成しています。PHPスクリプトでファイルを保存する場合

目標は、ボタンをクリックすると文字列の内容をHTMLファイルとして保存することです。

私は投稿リクエストを作成するためにjQueryを使用しています。

私はApache 2サーバーでUbuntu OSを使用しています。私が書いているフォルダにはパーミッション777(テストのみのため、これを廃止します)があります。

PHPは別のファイルに存在する必要があります。

問題が発生するたびにファイルは空白に保存されます。

各ファイル名はタイムスタンプでなければなりません。ファイルには正しいファイル名が含まれていますが、内容は含まれていません。

これまでのところ、ここに私のコードは次のとおりです。

<?php 

$fileName = $_GET['fileNameData']; 
$htmlImport = $_GET['htmlToSaveData']; 

$htmlToSave = (string)$htmlImport; 

$myFile = fopen($fileName, "w") or die('You do not have write permissions'); 

//fwrite($myFile, $htmlToSave); 
file_put_contents($myFile, $htmlToSave); 
fclose($myFile); 

?> 

私がコメントアウトしてきたfrwite機能、同じ効果を試してみました。

私はこれをターミナルで引数($ argv [1]と$ argv [2])を渡してテストしました。それはうまく動作します。

私は、私のサイトを実行するために作ったJSは次のようになります。

var newURL = 'saveHTML.php/?fileNameData=' + fileName + '&htmlToSaveData=' + htmlToSave 
$.post(newURL) 
    .done(function(){ 
     alert('Your file saved as ...' + htmlToSave) 
    }) 

私も同じ結果で、このコードを試してみた:

$.post('saveHTML.php/', { 
    fileNameData : fileName, 
    htmlToSaveData : htmlToSave 
}) 

、fileNameとhtmlToSaveの両方がありますhtmlToSaveはかなり長いですが、実際には私が文字列に変換したhtmlテキストです。

ここで何が起こっているのか誰でも知っていますか?私はPHP開発者ではありません。

私はコールバックを使用しているので、PHPに文字列を渡す前にすべてのHTMLを収集していることを確認できます。

私はこの質問hereの推奨事項を読み、テストしましたが、これは無駄でした。

EDITコードには気を付けてはいけませんが、セキュリティ上の問題だと思いますが、これは学習プロジェクトであり、これは実動されません。

+0

次のようにテストしてください: 'file_put_contents( './ test.txt'、 'test text');'それが失敗すると、アクセス権の問題があります。それが機能する場合は、コンテンツまたはファイルパスの問題があります。 – Tigger

+0

私はそれをコンテンツの問題でなければならないようにショットを与えました – JasTonAChair

答えて

0

私はあなたが

$myFile = fopen($fileName, "w") or die('You do not have write permissions'); 

//fwrite($myFile, $htmlToSave); 
file_put_contents($myFile, $htmlToSave); 
fclose($myFile); 

file_put_contentsを持っているバットは、ファイル名ではなく、ハンドルを取る権利をオフ見ることができます。だから、唯一の

file_put_contents($fileName, $htmlToSave); 

編集が必要になります:私はあなたのユーザーがあなたのファイルに名前を付けることができないことを指摘しなければならないように私も感じています。彼らは潜在的にあなたのマシンにいくつかの厄介なことをする可能性があります。

+0

しかし、質問によると、私は '' fwrite($ myFile、$ htmlToSave)も試みました。あなたが言及したように実際にファイルを作成していて、内容を入れていないのなら、それは同じ問題 – JasTonAChair

+0

です。私が上に掲げたのはそれの理由だろう。私が考えることができる唯一の他のことは、$ htmlToSaveがnullであるということです。また '$ _GET'を使用しているので、' $ .get' ajaxリクエストだけが動作します。 '$。post 'リクエストは' $ _POST'スーパーグローバルを使用します。 '$ htmlToSave'変数の内容をダンプしてから、ファイルの内容を確認します。 'done'コールバックを' function(data){console.log(data)} 'で変更することで、サーバーからの戻りデータをコンソールにログオンできます。 – Jacob

関連する問題