使用jQuery将javascript变量传递给php

i am trying to pass JavaScript file variable to php to open the file in new window, but it seems, it is not working accurately

JavaScript code

function Open(){
    var file = prompt("Enter a File name to open with .txt");
    $.get( "php/OpenFile.php",
        file,
        function(result){
            console.log(result);
        }
    );
}

PHP Code

<html>
<body>
<?php
$file = $_GET['file'];

$file2 = file_get_contents($file);

echo "<script type='text/javascript'>window.open($file2)</script>";
?>

</body>
</html>
douxie5176
douxie5176 我知道所涉及的安全性。我是这些语言的新手,我正在努力学习它们。没有限制,我不会使用它。
大约 5 年之前 回复
doutuoshou8915
doutuoshou8915 你得到什么输出到console.log?什么是预期的输出?
大约 5 年之前 回复
dsljpwi494719
dsljpwi494719 这看起来并不安全。你不应该让用户显示他们想要的任何文件(除非你真的不在乎)
大约 5 年之前 回复
duanqinqian5299
duanqinqian5299 请为所请求的文件添加健全性检查
大约 5 年之前 回复

3个回答

function Open(){
    var file = prompt("Enter a File name to open with .txt");
    $.get( "php/OpenFile.php",
        {file: file},
        function(result){
            console.log(result);
        }
    );
}

In your Javascript, you are not sending the file name with an identifier. You can think of the Javascript object {file: file} as the html tag <input name='file' type='text' />


If you are looking to open the file in a new window, no AJAX is needed.

HTML:

<a href="#" onclick="Open()">Open File</a>

JavaScript:

function Open() {
    var file = prompt("Enter a File name to open with .txt");
    window.open("php/OpenFile.php?file="+file);
}

This may; however, be blocked by popup blockers.

This should fix it:

function Open(){
    var file = prompt("Enter a File name to open with .txt");
    $.get( "php/OpenFile.php",
        {"file": file}, //    <---------------- Give the variable a name ("file")
        function(result){
            window.open(result); // Open a window with the result
        }
    );
}

php/OpenFile.php

<?php
    $file = $_GET['file'];
    echo file_get_contents($file);
?>

Another way would be not to use Ajax:

function Open(){
    var file = prompt("Enter a File name to open with .txt");
    window.open(file); // Open the file in a window
}

You can open new window (without AJAX) by

<script>
function openwindow(file_name)
{
window.open("your_script.php?file="+file_name,
    "mywindow","location=1,status=1,scrollbars=1,width=300,height=300");
}
</script>
<a href="javascript:openwindow('test')">open window</a>

And your_script.php

<?php
$file = trim($_GET['file']);
$file = preg_replace("/[^A-Za-z0-9]*/",'',$file); 

$full_filename =  'directory/' . $file . '.txt';
if (is_readable($full_filename )) 
  {
  readfile($full_filename);
  }
else die('I can not open file:' . $file); 

?>

douhanzhuo6905
douhanzhuo6905 是的,你可以在window.open中输入你想要的任何文件的路径,如果你的WWW服务器可以读取文件,那么它将被发送到浏览器。 浏览器做这个内容可以做什么;)txt文件可能显示。 在上面的例子中:your_script.php文件extesion将被添加到php中的字符串 - 这是出于安全原因 - 然后只有来自目录/的* .txt文件将是可读的,其他扩展名被排除在外。
大约 5 年之前 回复
doutang3760
doutang3760 你还可以定位文本文件吗?
大约 5 年之前 回复
duanqie5741
duanqie5741 在window.open中你可以设置目标文件的直接路径,不仅是php“reader”ex window.open(“directory /”+ file_name,“mywindow”.....); 如果你通过php发送文件,你可以控制访问(如果你需要),用户不知道真正的文件位置在哪里。
大约 5 年之前 回复
douju1953
douju1953 如果我想将文件作为文本文件打开,我该怎么做?
大约 5 年之前 回复
dongyue7796
dongyue7796 感谢大家。
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问