PHPを使用せずにJavaScript/jQueryを使用してテキストを新しいテキストファイルに保存することは可能ですか?保存しようとしているテキストには、HTMLエンティティ、JS、HTML、CSS、およびPHPエスケープまたはurlencodeを使用したくないスクリプト!
PHP=を使用してのみ達成できる場合、エンコードせずにテキストをPHPに渡すにはどうすればよいですか?
リクエストを処理するにはサーバー側のスクリプトが必要です。javascriptを使用して実行することはできません。
URIエンコードまたは特殊文字をPHPにエスケープせずに生データを送信し、新しいtxt
ファイルとして保存するには、post
メソッドとFormData
を使用してajaxリクエストを送信できます。
JS:
var data = new FormData();
data.append("data" , "the_text_you_want_to_save");
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
xhr.open( 'post', '/path/to/php', true );
xhr.send(data);
PHP:
if(!empty($_POST['data'])){
$data = $_POST['data'];
$fname = mktime() . ".txt";//generates random name
$file = fopen("upload/" .$fname, 'w');//creates new file
fwrite($file, $data);
fclose($file);
}
編集:
Florianが以下で言及したように、FormData
は古いブラウザではサポートされないため( formdata browser compatibiltiy )、XHRフォールバックは必要ありません。したがって、XHR変数を次のように宣言できます。
var xhr = new XMLHttpRequest();
また、これはIE +10などのFormData
をサポートするブラウザでのみ機能することに注意してください。
JavaScriptやjQueryなどのクライアント側のスクリプトのみを使用してコンテンツをWebサイトに保存することはできませんが、AJAX POST=サーバー側で他の半分を非常に簡単に実行できます。
ただし、スクリプトなどの生のコンテンツをホスティングに簡単に書き込み可能にすることはお勧めしません。 AJAX POST=リクエストについて詳しく知りたい場合は、jQuery APIページをご覧ください。
http://api.jquery.com/jQuery.post/
ホスティングに生のスクリプトファイルを保存する場合は、次の点に注意する必要があります。このようなファイルを扱う場合は、セキュリティに非常に注意する必要があります!
ファイルのアップロード(javascriptがファイルの名前を選択できる場合にプレーンテキストを送信する場合、このほとんどが適用されます) http://www.developershome.com/wap/wapUpload/wap_upload.asp?page=securityhttps://www.owasp.org/index.php/Unrestricted_File_Upload