当前位置: 首页 > 知识库问答 >
问题:

使用PHP curl超文本传输协议创建用户

柴英博
2023-03-14

在owncloud相关网站和stackoverflow自身的以下链接中,所有相关信息都以不完整的形式呈现:

  1. 用户配置Api-Owncloud

我试着做一些非常简单的事情:

>

<?php
echo "Begun processing credentials , first it will be stored in local variables" . "<br/>";

// Loading into local variables
$userName = $_POST['username'];
$RRpassword = $_POST['password'];

echo "Hello " . $userName . "<br/>";
echo "Your password is " . $RRpassword . "<br/>";

// Add data, to owncloud post array and then Send the http request for creating a new user
$ownCloudPOSTArray = array('username' => $userName, 'password' => $RRpassword );

$url = 'http://localhost/owncloud/ocs/v1.php/cloud/users';
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $ownCloudPOSTArray);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo "<br/>Created a new user in owncloud";
?>

我得到这样的输出:

开始处理凭据,首先它将存储在本地变量中
Hello Frank
您的密码是frankspassword
failure 997未经授权
在owncloud中创建了一个新用户

我还尝试使用以下php脚本登录到自己的云:

// Login As Admin
$ownAdminname = 'ownAdmin';
$ownAdminpassword = 'ownAdminPassword';

$ch = curl_init('http://localhost/owncloud');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$ownAdminname:$ownAdminpassword");
$output = curl_exec($ch);
curl_close($ch);
echo $output;

即使这一次也失败了。

简言之,它不起作用。我也无法通过类似的脚本登录到owncloud。正确的方法是什么?我缺少什么设置?有人能帮忙吗?

共有3个答案

朱慈
2023-03-14

正如您的链接帖子(在自己的云上创建用户)所示,您需要一个带有一些凭据的基本身份验证头。您需要提供管理员凭据afaict。

司马狐若
2023-03-14

OwCloud留档声明身份验证是通过一个基本的HTTP身份验证头完成的。您目前正在做的是将凭据作为参数发送到API调用。您需要添加以下行:

curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $RRpassword);

CURLOPT_RETURNTRANSFER中还有一个输入错误($curl而不是$ch)。

法景明
2023-03-14

因为这个问题特别涉及到owncloud,所以我创建了一个帐户,并在owncloud论坛上发布了一个问题,将这个问题链接到它。

在那里,我被云大师@RealRancor建议如下,

再看一眼,也许很容易更换:

$url='1http://localhost/owncloud/ocs/v1.php/cloud/users';

具有

$url='1http://adminuser:adminpass@localhost/owncloud/ocs/v1。php/cloud/users';

如留档所示。

令人惊讶的是,它像一个魅力。这是整个修改过的php脚本:

<pre>
&lt;?php
echo "Begun processing credentials , first it will be stored in local variables" . "<br/>";

// Loading into local variables
$userName = $_POST['username'];
$RRpassword = $_POST['password'];

echo "Hello " . $userName . "<br/>";
echo "Your password is " . $RRpassword . "<br/>";

 // Login Credentials as Admin
 $ownAdminname = 'ownAdmin';
 $ownAdminpassword = 'ufi2016%%';


// Add data, to owncloud post array and then Send the http request for creating a new user
$url = 'http://' . $ownAdminname . ':' . $ownAdminpassword . '@localhost/owncloud/ocs/v1.php/cloud/users';
echo "Created URL is " . $url . "<br/>"; 

$ownCloudPOSTArray = array('userid' => $userName, 'password' => $RRpassword );

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $ownCloudPOSTArray);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo "Response from curl :" . $response;
echo "<br/>Created a new user in owncloud<br/>";

// Add to a group called 'Users'
$groupUrl = $url . '/' . $userName . '/' . 'groups';
echo "Created groups URL is " . $groupUrl . "<br/>";

$ownCloudPOSTArrayGroup = array('groupid' => 'Users');

$ch = curl_init($groupUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $ownCloudPOSTArrayGroup);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo "Response from curl :" . $response;
echo "<br/>Added the new user to default group in owncloud";

?>
</pre>

以下是输出:

Begun processing credentials , first it will be stored in local variables
Hello Frank
Your password is frankspassword
Created URL is http://ownAdmin:ufi2016%%@localhost/owncloud/ocs/v1.php/cloud/users
Response from curl : ok 100 
Created a new user in owncloud
Created groups URL is http://ownAdmin:ufi2016%%@localhost/owncloud/ocs/v1.php/cloud/users/Frank/groups
Response from curl : ok 100 
Added the new user to default group in owncloud
 类似资料:
  • 我尝试使用以下方法从Api获取json数据 我将这个物体建模如下 数据如下: 当我尝试使用模型访问时,我收到错误“\u InternalLinkedHashMap”

  • 我试图禁用我的AngularJS应用程序中的缓存,但它无法使用以下代码: 当我使用

  • 我想知道你对这个概念的看法/意见。如果有替代方案?这是否可行/有益? 据我所知,对于每个http请求,服务器都会执行一些操作并返回http响应。 现在考虑任何场景,我们希望对服务器上运行的进程有更多的控制。 情景1:http请求发送- 在这里,资源被浪费了。 情况2:http请求发送- 在这里,客户端不知道服务器中运行的进程的状态。客户端必须等待,直到它获得超文本传输协议响应。 我的想法是:在初始

  • 我正在使用oauth签名生成我的oauth签名,以便与woocommerce api连接。我遵循了woocommerce rest api文档中所述的所有步骤: 所需的参数是:oauth_consumer_密钥、oauth_时间戳、oauth_nonce、oauth_签名和oauth_签名方法。oauth_版本不是必需的,应该省略。OAuth nonce可以是消费者密钥唯一的任意随机生成的32个字

  • 我正在使用certbot为我的网站创建SSL,并使用Nginx进行服务。然而,即使我在nginx conf中更改服务器块并重新启动它,只有原来的http工作,而https将返回ERR_CONNECTION_TIMED_OUT。 我在互联网上尝试了很多方法,包括将服务器块一分为二,调整listen 443设置,添加服务器名称。。。但所有这些似乎都不起作用,使用url和https将返回ERR_CONN

  • 我有一个带有nestjs后端rest api(在nodejs中)的角度(9)前端。我在后端调用的endpoint执行一些相当复杂的操作,大约需要2分钟才能响应。在前端,我使用subscribe订阅响应,如下所示: 问题是,在后端,它开始一次又一次地执行代码。请注意,它不会再次执行http调用(我可以从Developer tools中的“网络”选项卡中看到这一点),它一直处于挂起状态。如果我这样做,