如何在 php 脚本中使用 curl return 值
How to use curl return value in php script
我有两台服务器:A 安装了 WP,B 没有。 B 上的应用程序 运行 正在尝试使用 WP 凭据进行登录。我在服务器 B 上有一个登录表单:
<h1>Login</h1>
<div>
<form class="forma" id="form"
action="login.php" method="POST">
<div class="form-group">
<label>Username</label>
<input class="form-control" type="text" name="username" />
<label>Password</label>
<input class="form-control" type="text" name="password" />
</div>
<button class="submit btn btn-success" type="submit" name="login" value="Login">Login</button>
</form>
</div>
<?php
if (isset($_POST["login"])) {
$params = array('username' => $_POST["username"], 'password' => $_POST["password"]);
$url = 'http://xxx/custom_login.php?' . http_build_query($params);
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_handle, CURLOPT_NOBODY, false);
$query = curl_exec($curl_handle);
curl_close($curl_handle);
if ($query==1) {
$_SESSION['loggedin'] = true;
header ("location: index.php");
}
else {
echo "error";
}
}
?>
现在,在服务器 A 上,有一个 custom_login.php 脚本:
<?php
require('wp-blog-header.php');
?>
<?php
$uid=$_GET["username"];
$pwd=$_GET["password"];
$user = wp_authenticate( $uid, $pwd );
if ( is_wp_error( $user ) ) {
return 0;
}
else {
return 1;
}
?>
无论我尝试键入什么,我都无法登录,这意味着我的 $query 永远不会变为 1。如何使用 curl 获取 return 值?因为这显然是行不通的。
custom_login.php
没有返回任何输出。您可以通过以下方式进行测试
example.com/custom_login.php?username=theUsername&password=thePassword
.
您可以通过简单地回显您想要使用的内容来更改它:
if ( is_wp_error( $user ) ) {
echo 0;
return;
}
else {
echo 1;
return;
}
编辑:正如@unknown 所指出的,您通常不希望 GET 中包含敏感信息,而且由于该页面执行的操作您最好使用 POST。
我有两台服务器:A 安装了 WP,B 没有。 B 上的应用程序 运行 正在尝试使用 WP 凭据进行登录。我在服务器 B 上有一个登录表单:
<h1>Login</h1>
<div>
<form class="forma" id="form"
action="login.php" method="POST">
<div class="form-group">
<label>Username</label>
<input class="form-control" type="text" name="username" />
<label>Password</label>
<input class="form-control" type="text" name="password" />
</div>
<button class="submit btn btn-success" type="submit" name="login" value="Login">Login</button>
</form>
</div>
<?php
if (isset($_POST["login"])) {
$params = array('username' => $_POST["username"], 'password' => $_POST["password"]);
$url = 'http://xxx/custom_login.php?' . http_build_query($params);
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_handle, CURLOPT_NOBODY, false);
$query = curl_exec($curl_handle);
curl_close($curl_handle);
if ($query==1) {
$_SESSION['loggedin'] = true;
header ("location: index.php");
}
else {
echo "error";
}
}
?>
现在,在服务器 A 上,有一个 custom_login.php 脚本:
<?php
require('wp-blog-header.php');
?>
<?php
$uid=$_GET["username"];
$pwd=$_GET["password"];
$user = wp_authenticate( $uid, $pwd );
if ( is_wp_error( $user ) ) {
return 0;
}
else {
return 1;
}
?>
无论我尝试键入什么,我都无法登录,这意味着我的 $query 永远不会变为 1。如何使用 curl 获取 return 值?因为这显然是行不通的。
custom_login.php
没有返回任何输出。您可以通过以下方式进行测试
example.com/custom_login.php?username=theUsername&password=thePassword
.
您可以通过简单地回显您想要使用的内容来更改它:
if ( is_wp_error( $user ) ) {
echo 0;
return;
}
else {
echo 1;
return;
}
编辑:正如@unknown 所指出的,您通常不希望 GET 中包含敏感信息,而且由于该页面执行的操作您最好使用 POST。