通过CURL登录htpasswd并将会话保留在浏览器中

时间:2018-02-01 12:21:16

标签: php .htaccess curl session-cookies .htpasswd

我有几个文件夹(每个客户端一个),我保存了只能由他自己接收的图像。

这些文件夹是通过htpasswd保护的,我试图在用户正常登录后通过cUrl登录并保持此会话处于活动状态,并允许用户导航并仅访问他的文件夹图像。

在我的Authentification控制器中,我这样做:

$username = 'username';
$password = 'password';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'routeToOneFileInHisFolder');
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);    
curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

我还尝试为COOKIEJAR和COOKIEFILE设置curl_setopt,但没有不同的结果。我不知道我的方法是否错误,或者我是否遗漏了一些代码。

2 个答案:

答案 0 :(得分:1)

您可以使用$ _SESSION,即....

//put this in the top of your php
session_start();

//then store the user and password in the session...
$_SESSION['username'] = 'username';
$_SESSION['password'] = 'password';

// replace in your code anywhere the $username and $password variables 
// with the new $_SESSION['username'] and $_SESSION['password']

答案 1 :(得分:1)

最后我可以解决这个问题。虽然它不是一种非常安全的方法,但它对我的问题来说是一个很好的解决方案。

感谢Aberel,我开始调查cookies和http auth。之后,我可以使用PHP设置cookie(或使用JS,没有差异),并使用每个文件夹中的.htaccess进行检查。 .htaccess看起来像这样:

+--------------------+---------------------+------+-----+---------+----------------+
| Field              | Type                | Null | Key | Default | Extra          |
+--------------------+---------------------+------+-----+---------+----------------+
| id                 | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
| group_id           | int(10) unsigned    | NO   |     | NULL    |                |
| encoding           | tinyint(3) unsigned | NO   |     | 0       |                |
| content            | text                | NO   |     | NULL    |                |
| active_period      | datetime            | YES  |     | NULL    |                |
| status             | tinyint(3) unsigned | NO   |     | 1       |                |
| flag               | tinyint(1)          | YES  |     | 1       |                |
| description        | text                | YES  |     | NULL    |                |
| updated_by         | varchar(255)        | YES  |     | NULL    |                |
| updated_at         | datetime            | YES  |     | NULL    |                |
+--------------------+---------------------+------+-----+---------+----------------+

COOKIENAME可以是任何内容,也可以是您识别每个用户的randomHash。

感谢您的帮助