Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量从PHP传递到Javascript,而不在HTML中显示_Javascript_Php_Html - Fatal编程技术网

将变量从PHP传递到Javascript,而不在HTML中显示

将变量从PHP传递到Javascript,而不在HTML中显示,javascript,php,html,Javascript,Php,Html,我需要发送一个大变量,而不在生成的HTML页面中显示它,因为: -我可以泄露敏感数据(只需检查页面来源即可) -由于数据量很大,它会大大降低页面加载速度 当然,使用“echo”是不可能的,我已经搜索了很多不同的方法,但没有找到合适的方法 即使使用Ajax或Json刷新页面,从外部调用脚本也可以,但到目前为止,我还没有找到一种方法来完成我需要的工作。 有人能帮我吗? 谢谢Roberto将对用户可见Javascript。你绕不开它。 Php在服务器上运行,对用户隐藏。 另一方面,Javascript

我需要发送一个大变量,而不在生成的HTML页面中显示它,因为: -我可以泄露敏感数据(只需检查页面来源即可) -由于数据量很大,它会大大降低页面加载速度

当然,使用“echo”是不可能的,我已经搜索了很多不同的方法,但没有找到合适的方法

即使使用Ajax或Json刷新页面,从外部调用脚本也可以,但到目前为止,我还没有找到一种方法来完成我需要的工作。 有人能帮我吗?
谢谢Roberto将对用户可见Javascript。你绕不开它。
Php在服务器上运行,对用户隐藏。

另一方面,Javascript由用户“机器”运行,因此它是可见的

Javascript将对用户可见。你绕不开它。
Php在服务器上运行,对用户隐藏。

另一方面,Javascript由用户“机器”运行,因此它是可见的

您可以在
html
中隐藏任何您想要的内容,但是如果您需要在
php
JS
之间传递一个值,通过
jQuery
get
post
或任何其他方法检索该值,最终用户将能够读取该值


注意:

你们可以随意投反对票,但我会保留我的答案,直到有人解释如何“将变量从PHP传递到Javascript”而不向最终用户公开数据


编辑+4年后(2020年):

一种可能的解决方案是加密您想要向最终用户隐藏的代码,并在用户发回时解密,即:

<?php

function encdec($t, $s){
    
    $secret_key = 'secret_key';
    $secret_iv = 'secret_iv';
    
    $output = false;
    $encrypt_method = "AES-256-CBC";
    $key = hash( 'sha256', $secret_key );
    $iv = substr( hash( 'sha256', $secret_iv ), 0, 16 );
    
    if( $t == 'e' ) {
        $output = base64_encode( openssl_encrypt( $s, $encrypt_method, $key, 0, $iv ) );
    }
    else if( $t == 'd' ){
        $output = openssl_decrypt( base64_decode( $s ), $encrypt_method, $key, 0, $iv );
    }
    
    return $output;
}


    $my_secret =  encdec("e", "internal_XPto123");
    echo $my_secret;

    # Then, when the user posts it back, via form or any other method, you decrypt it:

    $my_secret = encdec("d", $_REQUEST['some_arg']);
    if (preg_match('/^internal_[a-z\d]{7}$/i', $my_secret)) {
       # string structure matches, continue...
    } 

您可以在
html
中隐藏任何您想要的内容,但是如果您需要在
php
JS
之间传递一个值,可以通过
jQuery
get
post
或任何其他方法进行检索,最终用户将能够读取该值


注意:

你们可以随意投反对票,但我会保留我的答案,直到有人解释如何“将变量从PHP传递到Javascript”而不向最终用户公开数据


编辑+4年后(2020年):

一种可能的解决方案是加密您想要向最终用户隐藏的代码,并在用户发回时解密,即:

<?php

function encdec($t, $s){
    
    $secret_key = 'secret_key';
    $secret_iv = 'secret_iv';
    
    $output = false;
    $encrypt_method = "AES-256-CBC";
    $key = hash( 'sha256', $secret_key );
    $iv = substr( hash( 'sha256', $secret_iv ), 0, 16 );
    
    if( $t == 'e' ) {
        $output = base64_encode( openssl_encrypt( $s, $encrypt_method, $key, 0, $iv ) );
    }
    else if( $t == 'd' ){
        $output = openssl_decrypt( base64_decode( $s ), $encrypt_method, $key, 0, $iv );
    }
    
    return $output;
}


    $my_secret =  encdec("e", "internal_XPto123");
    echo $my_secret;

    # Then, when the user posts it back, via form or any other method, you decrypt it:

    $my_secret = encdec("d", $_REQUEST['some_arg']);
    if (preg_match('/^internal_[a-z\d]{7}$/i', $my_secret)) {
       # string structure matches, continue...
    } 


如果您将任何数据“从PHP传递到Javascript”,它无论如何都是可见的,我认为……Javascript在客户端总是可见的。你不可能这么做。你想用这些敏感数据做什么?为什么不把它放在服务器端呢?你能再描述一下你的问题吗?好的,那么,如果你能使用ajax/json/jsonp:google“jqueryajax教程”。你会发现大量的例子。如果你不想使用jquery,那么进行ajax调用就更冗长了,但仍然非常简单。你可以从html中隐藏任何你想要的内容,但是如果你需要在页面上使用php的值,可以通过jquery get或post或任何其他方法检索,用户将能够读取它。如果你将任何数据“从php传递到Javascript”无论如何它都是可见的,我认为……Javascript在客户端总是可见的。你不可能这么做。你想用这些敏感数据做什么?为什么不把它放在服务器端呢?你能再描述一下你的问题吗?好的,那么,如果你能使用ajax/json/jsonp:google“jqueryajax教程”。你会发现大量的例子。如果您不想使用jquery,那么进行ajax调用会比较冗长,但仍然非常简单。您可以从html中隐藏任何您想要的内容,但是如果您需要在页面上使用php的值,可以通过jquery get或post或任何其他方法检索,用户将能够阅读它。我没有投反对票,但很明显,这个答案非常适合作为一个例子comment@Pushkar我在某种程度上同意你的看法,但有时问题的答案是不可能,这就是为什么我不回答这样的问题questions@Pushkar在我看来,这不应该是不回答问题的理由。谢谢你的评论,我解释了原因是什么,以及最终是如何解决的,在一个更高屏幕的评论中。虽然我知道服务器端和用户端的这些事实,但我真的希望当信息在用户内存中时,不需要操作系统以Html显示它,我能够以编程方式使用它,但事实并非如此。有时,我们不得不与风车搏斗,否则生活最终会变得无聊。德克萨斯州!我没有投反对票,但很明显,这个答案很适合作为一个候选人comment@Pushkar在某种程度上,我确实同意你的观点,但有时一个问题的答案是这是不可能的。这就是为什么我不回答这样的问题questions@Pushkar我认为这不应该成为不回答问题的理由我非常感谢你的评论,我解释了原因是什么,以及最终是如何解决的,在一个屏幕更高的评论中。虽然我知道服务器端和用户端的这些事实,但我真的希望当信息在用户内存中时,不需要操作系统以Html显示它,我能够以编程方式使用它,但事实并非如此。有时,我们不得不与风车搏斗,否则生活最终会变得无聊。德克萨斯州!无论如何,我认为你的答案是正确的。但是,这取决于用户的定义。虽然您或我可能能够发现封装的数据,但超过99%的人口不会,如果是非敏感信息,比如测验答案信息,那么封装可以满足OP的要求。+1,当然是正确的,用户只需打开控制台即可查看请求的整个响应。@Pamblam forked for future use;)tks@PedroLobito我宁愿在这里的评论中写下这一重大通知(仍然用粗体字)