サイト 1 には php 関数があり、サイト 2 にはフォームがあり、両方のサイトが異なるサーバー上にあります。このタスクを達成するための最も簡潔な方法は何ですか?
サイト 2 のフォームは、「電子メール」と「パスワード」による非常に単純なログインです。
サイト 1 の php クラスは Shopper と呼ばれ、サイト 2 のフォームの資格情報が正しい場合は、shopper クラス内でログイン メソッドを実行する必要があります。
私はここで自分の要素から抜け出しているように感じます..このようなものは機能しますか?もしそうなら、どうすればShopperクラスをインスタンス化し、ログイン機能を実行できますか? SOAP プロトコルを使用する必要がありますか?
ありとあらゆる助けをいただければ幸いです。ありがとうございました。
public function login($password) {
global $db;
if (!$this->get_email()) {
return false;
}
// Log them in now that we know who they are.
$vars = array();
$vars[] = array(':i_email_id', $this->get_email());
$vars[] = array(':i_password', $password);
// This also exists, but is not yet in use:
// $token = $db->get_function_as_proc('custom.japi_shopper_identity.login_by_username(:i_username, :i_password)', $vars);
$token = $db->get_function_as_proc('custom.japi_shopper_identity.Login_by_Email(:i_email_id, :i_password)', $vars);
// todo: what if it's bad credentials?
if ($token == null) {
return false;
} else {
$this->set_sign_in_token($token);
return $this->get_sign_in_token();
}
}
明確にするために:
ログインページ (siteB):
<form id='register' action='http://siteA/test/profile' onsubmit="return validateForm()" method='post' accept-charset='UTF-8'>
<fieldset>
<legend>Log In</legend><br/>
<label for='email' >Email Address*:</label>
<input type='text' name='email' id='email' maxlength="50" /><br/><br/>
<label for="password">Password*:</label>
<input type="password" name="password" placeholder="password" required><br/><br/>
<input type='submit' name='Submit' value='Submit' />
</fieldset>
</form>
<?php
$username = $_POST['email'];
$password = $_POST['password'];
$shopper = new Shopper($username);
$token = $shopper->login($username, $password);
echo json_encode(array("token" => $token));
print_r ($_POST);
?>
アクション ページ (siteA):
$shopper = new Shopper($email);
$shopper->login($password);
$cInit = curl_init("http://siteB/test/login");
curl_setopt_array($cInit, array(
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_POST=>true,
CURLOPT_POSTFIELDS=>urlencode(implode("&", array("email" => $email, "password" => $password)))
));
$content = curl_exec($cInit);
$err = curl_errno($cInit);
$errmsg = curl_error($cInit);
$results = json_decode($content);
//$results = array("token" => "pleasework" );
それは正しく見えますか?