将 php 页面的 URL 中的变量传递给 JavaScript 和另一个 PHP
Passing variables in a URL of a php page to JavaScript and to another PHP
基于此 link http://webaudiodemos.appspot.com/AudioRecorder/index.html, I am making changes to send the recorded audio file to server by passing a sessionId via URL. The php page is http://xxxxx/abc.php?sessionId=Sam. PHP versions: PHP 5.4 PHP 5.5.22. I am using the 2nd method from this link:How to pass variables and data from PHP to JavaScript? 中的代码。 abc.php 页面引用了一些 JS 代码,就像上面 link 中的 index.html 一样。 abc.php 页面使用以下代码正确处理 URL 值:
<div id="bottom">
<?php
$faid = $_GET["sessionId"];
echo htmlspecialchars($faid); // tested working
?>
</div>
在 recorder.js JavaScript 上,我有一个函数试图在将音频文件上传到服务器时将 URL 值传递给另一个 PHP - fname没有被传递...似乎.. xhr.send(blob) 还能发送 fname 吗?
Recorder.setupDownload = function(blob){
var div = document.getElementById("bottom");
var fname = div.textContent;
var xhr = new XMLHttpRequest();
xhr.open('POST', "./uploads.php?" + fname, true);
xhr.onload = function(e) {};
// Listen to the upload progress.
var progressBar = document.querySelector('progress');
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
progressBar.value = (e.loaded / e.total) * 100;
progressBar.textContent = progressBar.value; // Fallback for unsupported browsers.
}
};
xhr.send(blob);
服务器中的 uploads.php 具有以下脚本来接收值并创建音频文件 - 但它不会创建音频文件 - 但是,如果我修复文件名(例如:"filename123") 它写入音频文件 - 所以问题在于传递变量名 - 我是新手,我想知道我错过了什么?:
<?php
ini_set("display_errors", true);
error_reporting(E_ALL);
if(isset($_GET['fileId']) && !empty($_GET['fileId'])){
$id = $_GET["fileId"];
}
$fp = fopen( $id, 'wb' ); // writes the audio file
fwrite( $fp, $GLOBALS['HTTP_RAW_POST_DATA'] );
fclose( $fp );
?>
更新:正在运行!
您没有为您的值命名,因此您传递的值将在每个页面中显示为不同的键。
例如您的每个用户都会有类似
的内容
http://example.com?foo
http://example.com?bar
导致 $_GET['foo']
和 PHP 中的 $_GET['bar']
。但是由于 foo/bar 是一些代表您的会话 ID 的随机值,您不知道该值是什么。所以...给它起个名字:
http://example.com?key=foo
现在您只需执行 $key = $_GET['key']
并且始终可以访问您的会话值,无论它的实际值是什么 - 它总是被分配给 key
。
基于此 link http://webaudiodemos.appspot.com/AudioRecorder/index.html, I am making changes to send the recorded audio file to server by passing a sessionId via URL. The php page is http://xxxxx/abc.php?sessionId=Sam. PHP versions: PHP 5.4 PHP 5.5.22. I am using the 2nd method from this link:How to pass variables and data from PHP to JavaScript? 中的代码。 abc.php 页面引用了一些 JS 代码,就像上面 link 中的 index.html 一样。 abc.php 页面使用以下代码正确处理 URL 值:
<div id="bottom">
<?php
$faid = $_GET["sessionId"];
echo htmlspecialchars($faid); // tested working
?>
</div>
在 recorder.js JavaScript 上,我有一个函数试图在将音频文件上传到服务器时将 URL 值传递给另一个 PHP - fname没有被传递...似乎.. xhr.send(blob) 还能发送 fname 吗?
Recorder.setupDownload = function(blob){
var div = document.getElementById("bottom");
var fname = div.textContent;
var xhr = new XMLHttpRequest();
xhr.open('POST', "./uploads.php?" + fname, true);
xhr.onload = function(e) {};
// Listen to the upload progress.
var progressBar = document.querySelector('progress');
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
progressBar.value = (e.loaded / e.total) * 100;
progressBar.textContent = progressBar.value; // Fallback for unsupported browsers.
}
};
xhr.send(blob);
服务器中的 uploads.php 具有以下脚本来接收值并创建音频文件 - 但它不会创建音频文件 - 但是,如果我修复文件名(例如:"filename123") 它写入音频文件 - 所以问题在于传递变量名 - 我是新手,我想知道我错过了什么?:
<?php
ini_set("display_errors", true);
error_reporting(E_ALL);
if(isset($_GET['fileId']) && !empty($_GET['fileId'])){
$id = $_GET["fileId"];
}
$fp = fopen( $id, 'wb' ); // writes the audio file
fwrite( $fp, $GLOBALS['HTTP_RAW_POST_DATA'] );
fclose( $fp );
?>
更新:正在运行!
您没有为您的值命名,因此您传递的值将在每个页面中显示为不同的键。
例如您的每个用户都会有类似
的内容http://example.com?foo
http://example.com?bar
导致 $_GET['foo']
和 PHP 中的 $_GET['bar']
。但是由于 foo/bar 是一些代表您的会话 ID 的随机值,您不知道该值是什么。所以...给它起个名字:
http://example.com?key=foo
现在您只需执行 $key = $_GET['key']
并且始终可以访问您的会话值,无论它的实际值是什么 - 它总是被分配给 key
。