【问题标题】:Codeigniter slash in URL parametersURL 参数中的 Codeigniter 斜杠
【发布时间】:2015-09-18 09:53:47
【问题描述】:

我有一个控制器,它的方法接受 2 个参数一个用户名和一个密码,如下所示:

class Test extends CI_Controller {

    public function index($username= NULL, $password = NULL){
        if($username === NULL){
           echo "Error";          
        }else if($password === NULL){
            echo "Error";
        }else{
            echo "Your username is :"$username." and your password is :".$password;
        }            
    }
}

在我正在做的路由文件中:

$route['Upload/(:any)'] = "Test/index/$1";
$route['Upload/(:any)/(:any)'] = "Test/index/$1/$2";

在配置文件中:

$config['permitted_uri_chars'] = '';

网址看起来像:mysite.com/Test/mike123/rtO;"*skj

我面临的问题是密码可以包含一个斜杠,可以使网址如下所示并破坏它:

mysite.com/Test/mike123/rtO;"*//skj

url 必须像这样运行:mysite.com/Test/param1/param2 我不想对它进行 url 编码。有没有办法运行url并获取参数为mike123rtO;"*//skj

谢谢

【问题讨论】:

  • 使用url_encodeurl_decode

标签: php codeigniter


【解决方案1】:

您正在尝试通过 URL 传递密码。你知道这根本不安全吗?您也不想对其进行编码。

我会通过 POST 传递密码,这比直接通过 URL 传递更安全。

但是,如果这是您想要的,您可以在传递给此函数时对密码进行 url_encode,然后再次将其 url_decode 回函数中以供进一步使用

【讨论】:

  • PHP 和 .NET 等语言之间的可移植性是什么? url_encode 和 url_decode 或 rawurlencode 和 rawurldecode
【解决方案2】:

像这样使用 jquery 发送用户名和密码

var username = $("#username").val();

var password = $("#password").val();

var datastring ='username='+username+'&password='+password;

$.post(URL,datastring,function(){

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-13
    • 2015-09-07
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2015-08-11
    相关资源
    最近更新 更多