1

サイト 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" );

それは正しく見えますか?

4

2 に答える 2