【问题标题】:How to use curl return value in php script如何在php脚本中使用curl返回值
【发布时间】:2015-06-16 08:14:56
【问题描述】:

我有两台服务器:一台安装了 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 上,有一个 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 获取返回值?因为这显然行不通。

【问题讨论】:

    标签: php wordpress curl login


    【解决方案1】:

    custom_login.php 没有返回任何输出。您可以通过以下方式进行测试 example.com/custom_login.php?username=theUsername&amp;password=thePassword.

    您可以通过简单地回显您要使用的内容来更改此设置:

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

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

    【讨论】:

    • 你知道劫持..吗?不要直接在 url 中传递密码或用户名...
    • @Unknown 你说得对,我正在使用海报提供的代码,我将添加一个使用 POST 建议的注释。
    • 谢谢@Jim,它回答了我最初的问题。那我应该如何传递用户名和密码呢?
    • @ivanacorovic 您可以让 curl 代替 POST 用户名/密码。见这里:stackoverflow.com/q/2138527/505722。然后custom_login.php 可以使用$_POST
    • curl_setopt($curl_handle, CURLOPT_POST, 1); curl_setopt($curl_handle, CURLOPT_POSTFIELDS, http_build_query(array('username'=&gt; $_POST["username"], 'password'=&gt;$_POST["password"]))); 工作。谢谢
    猜你喜欢
    • 2018-05-02
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多