1

ログインした管理者のみが使用できる URL を呼び出すことができるように、PHP から課金ソフトウェア (WHMCS) とのセッションを確立する方法を探しています。ログイン データとパラメータの両方を URL に渡すことができるとは思えないので、最初にセッションを作成してから URL を呼び出す必要があると思います。

システム内の実際のphpはエンコードされていますが、ソースを見ると次のように見えます...

<form action="dologin.php" method="post" name="frmlogin" id="frmlogin">
  <table width="100%" border="0" cellspacing="0" cellpadding="5">
    <tr>
      <td width="30%" align="right" valign="middle"><strong>Username</strong></td>
      <td align="left" valign="middle"><input type="text" name="username" size="30" class="login_inputs" /></td>
    </tr>
    <tr>
      <td width="30%" align="right" valign="middle"><strong>Password</strong></td>
      <td align="left" valign="middle"><input type="password" name="password" size="30" class="login_inputs" /></td>
    </tr>
    <tr>
      <td width="30%" align="right" valign="middle"><input type="checkbox" name="rememberme" id="rememberme" /></td>
      <td align="left" valign="middle"><label for="rememberme" style="cursor:hand">Remember me until I logout.</label></td>
    </tr>
    <tr>
      <td width="30%" align="right" valign="middle">&nbsp;</td>
      <td align="left" valign="middle"><table width="100%" cellpadding="0" cellspacing="0"><tr><td><input type="submit" value="Login" class="button" /></td><td align="right">Language: <select name="language" class="login_inputs"><option value="">Default</option><option value="czech">Czech</option><option value="english">English</option><option value="french">French</option><option value="portugues">Portugues</option></select></td></tr></table></td>
    </tr>
  </table>
</form>

次のような CURL 呼び出しを実行してから、URL を呼び出すことができますか?

$url = "https://clients.website.com/admincp/dologin.php";
$username = "admin";
$password = "239asd90";

$postfields = array();
$postfields["username"] = $username;
$postfields["password"] = md5($password);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_exec($ch);

if (curl_error($ch)) die("Connection Error: ".curl_errno($ch).' - '.curl_error($ch));
curl_close($ch);
4

1 に答える 1

0

通常、セッションの実装では、Cookie に格納された一意のハッシュが使用されます。その Cookie は、その後の各リクエストで送信され、ユーザーのセッションを識別します。

必要なことは、ログイン プロセスを実行するときにその Cookie とその値を取得することです。次に、ログイン領域内のページのリクエストで、セッション Cookie を curl 呼び出しに追加する必要もあります。

于 2012-12-19T21:14:41.617 に答える