Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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 使用codeigniter和javascript将加密参数从视图传递到控制器时出错_Php_Jquery_Codeigniter_Encryption - Fatal编程技术网

Php 使用codeigniter和javascript将加密参数从视图传递到控制器时出错

Php 使用codeigniter和javascript将加密参数从视图传递到控制器时出错,php,jquery,codeigniter,encryption,Php,Jquery,Codeigniter,Encryption,我试图使用codeigniter和jquery构建一个登录表单,当客户端提交表单时,我试图做的是jquery更改窗口。location调用控制器中的验证函数传递用户名和密码参数加密 这是我的密码 window.location.href = "/resturant/codeigniter/index.php/welcome/checklogin/" + <?php $this->load->library('encrypt'); echo $this->encrypt-&

我试图使用codeigniter和jquery构建一个登录表单,当客户端提交表单时,我试图做的是jquery更改
窗口。location
调用
控制器中的验证函数
传递
用户名
密码
参数加密

这是我的密码

window.location.href = "/resturant/codeigniter/index.php/welcome/checklogin/" +
<?php $this->load->library('encrypt');
echo $this->encrypt->encode("$('#username').val()"); ?> +
"/" + $("#password").val();
window.location.href=“/resturant/codeigniter/index.php/welcome/checklogin/”+

您正在以一种完全不可能的方式混合PHP和JavaScript。PHP在服务器上执行,内容发送到浏览器,然后很长一段时间后,JavaScript在客户机上运行。两者不能以这种方式相互作用。为了让PHP和JavaScript进行交互,必须通过HTTP请求在客户端和服务器之间发送数据

在更大的方案中,您不能在PHP中使用服务器端加密来在JavaScript中对客户端进行加密。如果您希望从JavaScript向服务器安全地通信某些内容,那么需要使用SSL

如果您只是试图将用户名/密码保留在URL之外,则应该使用
POST
请求,而不是
GET
请求。无论如何,您都应该这样做,以便登录用户

RE:您的更新

问题在于,纯粹是出于偶然,您的第二个示例输出了有效的JavaScript,这恰好为您提供了所需的结果

也就是说,在第二个示例中:

window.location.href = "/resturant/codeigniter/index.php/welcome/checklogin/" +
<?php echo "$('#username').val()"; ?> + "/" + $("#password").val();
然而,您的第一个示例完全失败了。这一行:

echo $this->encrypt->encode("$('#username').val()");
正在输出文本字符串
“$('#username').val()”
的加密形式;结果将是垃圾和JavaScript解析错误


你不能像这样混合使用PHP和JavaScript。

为什么下面这行代码可以工作:
window.location.href=“/checklogin/”+它不能工作,至少不能以你认为的方式工作。它实际上产生了这行代码:
window.location.href=“/checklogin/”+$(“#username”).val()

window.location.href = "/resturant/codeigniter/index.php/welcome/checklogin/" +
$('#username').val() + "/" + $("#password").val();
echo $this->encrypt->encode("$('#username').val()");