Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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脚本中使用curl返回值_Php_Wordpress_Curl_Login - Fatal编程技术网

如何在php脚本中使用curl返回值

如何在php脚本中使用curl返回值,php,wordpress,curl,login,Php,Wordpress,Curl,Login,我有两台服务器:一台安装了WP,另一台没有安装WP。B上运行的应用程序正在尝试使用WP凭据进行登录。我在服务器B上有一个登录表单: <h1>Login</h1> <div> <form class="forma" id="form" action="login.php" method="POST"> <div class="form-group"> <label>Username</label&g

我有两台服务器:一台安装了WP,另一台没有安装WP。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上有一个自定义的_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获取返回值?因为这显然不起作用。

custom\u login.php
不会返回任何输出。您可以通过访问
example.com/custom\u login.php?username=theUsername&password=thePassword

您可以通过简单地回显您想要使用的内容来改变这一点:

if ( is_wp_error( $user ) ) {
    echo 0;
    return;
}
else {
    echo 1;
    return;
}

编辑:正如@unknown所指出的,您通常不希望GET中包含敏感信息,而且由于页面执行操作,您最好使用POST。

您是否意识到有劫持行为。。?不要直接在url中传递密码或用户名…@Unknown你是对的,我正在使用海报提供的代码,我将添加一条提示使用POST。谢谢,@Jim,这回答了我最初的问题。那么我应该如何传递用户名和密码呢?@Ivanacorvic你可以让curl发布用户名/密码。请参见此处:
custom\u login.php
然后可以使用
$\u POST
curl\u setopt($curl\u handle,CURLOPT\u POST,1)
curl\u setopt($curl\u handle,CURLOPT\u POSTFIELDS,http\u build\u query(数组('username'=>$\u POST[“username”],'password'=>$\u POST[“password”]))工作。谢谢