私は私のフォームを提出するscriptAとsiteBを持っています。スクリプトBは私のものではない別のスクリプトですので、設定を変更することはできません。しかし、ScriptAは私のものですので、以下のスクリプトを投稿することができます。ログイン画面が表示されると、ユーザーはログイン資格情報を入力し、ログインをクリックします。この後、フォームのアクション属性にあるscriptBへのフォームPOSTS、次にフォームにはJQUERY POSTSを使用したscriptAがあります。 scriptB私は心配していない、私はちょうどそれにフォームをPOSTする必要があります。 POSTEDされたScriptAはPOSTEDの資格情報を取得し、LDAPバインドを実行してDB内の資格情報と一致するかどうかを確認します。一致した場合、ユーザーはwww.examplesite.comにリダイレクトされます。無効なユーザー名とパスワードを示すログイン画面に戻ります。複数のフォーム提出と認証
ScriptBは私が望んでいない投稿にリダイレクトします。私はscriptBが何をしているか気にしません。私はそれに信任状をPOSTする必要があります。私はscriptAを気にします。一旦scriptAがユーザーをリダイレクトする正しい資格を取得すると、私はscriptBに変更を加えることはできませんので、私は何とかそのリダイレクトを無視しなければなりません。現在、何が起こる
:ログイン画面のユーザーのヒットで 1)は、資格情報 2を入力した後に提出)ScriptBはScriptBがwww.examplesiteするユーザーをリダイレクト)のScriptaはjQueryの 3を介しに投稿された、アクションatribute経由に掲載されています。何起こるべき
COM:ScriptBはアクションatribute経由に投稿された資格情報 2を入力した後に提出 1)ログイン画面のユーザーのヒットで)のScriptaが間違った資格情報を見つけた場合、のScripta)はjQueryの 3を介しに投稿されました、メッセージを無効にしてログイン画面にリダイレクトする必要があります ログイン。 4)ユーザーがログイン画面のユーザーで、正しい資格情報を入力してのScriptaが意図したように、その後のScriptaだけの作品、私はscriptBせず、それに投稿する場合、私のScripta、さwww.example2site.com以下
にユーザーをリダイレクトし、これらの資格情報を承認するが、ここで私はこれら2つを一緒にマージしようとしています。
scriptAは基本的にウェブサイトのログイン認証であり、LDAPバインドによって認証されます。
<form action="http://servicedesk.site.com/j_security_check" method=post id="form" name="Auth" class="appnitro">
<div class="form_description">
<h2>Login</h2>
</div>
<ul >
<li id="li_1" >
<label class="description" for="element_1">Username </label>
<div>
<input id="element_1" name="j_username" class="element text medium" type="text" maxlength="255" value=""/>
</div>
</li> <li id="li_2" >
<label class="description" for="element_2">Password </label>
<div>
<input id="element_2" name="j_password" class="element text medium" type="password" maxlength="255" value=""/>
</div>
</li>
<li class="buttons">
<input id="saveForm" class="button_text" type="submit" name="submit" value="Log In" />
</li>
</ul>
</form>
のjQuery CODE:
<script language="JavaScript" type="text/JavaScript">
$(document).ready(function(){
$('#form').submit(function(){
$.ajax({
type: 'POST',
async: true,
url: "https://noc.sde.site.com/okhawaja/Login/formLanding/authenticate.php",
data: $(this).serialize(),
success: function(data, status, xhr){
},
error: function(xhr, status, err) {
alert(status + ": " + err);
}
});
});
});
</script>
のScripta:私は上のリダイレクトを行うことができますどのように
<?php
session_start();
if(isset($_POST['j_username']) && isset($_POST['j_password']))
{
//LDAP stuff here.
$username = trim($_POST['j_username']);
$password = trim($_POST['j_password']);
echo("Authenticating...");
$ds = ldap_connect('ldap://ldap:port');
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
//Can't connect to LDAP.
if(!ds)
{
$_SESSION['rdr']="Invalid Login. Try Again.";
header("Location: https://noc.sde.site.com/okhawaja/Login/formLanding/login.php");
exit;
}
//Connection made -- bind anonymously and get dn for username.
$bind = @ldap_bind($ds);
//Check to make sure we're bound.
if(!bind)
{
$_SESSION['rdr']="Invalid Login. Try Again.";
header("Location: https://noc.sde.site.com/okhawaja/Login/formLanding/login.php");
exit;
}
$search = ldap_search($ds, "ou=People,DC=sde,DC=site,DC=com", "uid=$username");
//Make sure only ONE result was returned -- if not, they might've thrown a * into the username. Bad user!
if(ldap_count_entries($ds,$search) != 1)
{
$_SESSION['rdr']="Invalid Login. Try Again.";
header("Location: https://noc.sde.site.com/okhawaja/Login/formLanding/login.php");
redirect(_WEBROOT_ . "/try1b.php");
exit;
}
$info = ldap_get_entries($ds, $search);
//Now, try to rebind with their full dn and password.
$bind = @ldap_bind($ds, $info[0][dn], $password);
if(!$bind || !isset($bind))
{
$_SESSION['rdr']="Invalid Login. Try Again.";
header("Location: https://noc.sde.site.com/okhawaja/Login/formLanding/login.php");
redirect(_WEBROOT_ . "/try1b.php");
exit;
}
//Now verify the previous search using their credentials.
$search = ldap_search($ds, "ou=People,DC=sde,DC=rogersdigitalmedia,DC=com", "uid=$username");
$info = ldap_get_entries($ds, $search);
if($username == $info[0][uid][0])
{
$_SESSION['username'] = $username;
$_SESSION['fullname'] = $info[0][cn][0];
$_SESSION['email'] = $info[0][mail][0];
$_SESSION['phone'] = $info[0][telephonenumber][0];
header("Location: https://noc.sde.site.com/okhawaja/service_desk_portal/index.php");
exit;
}
else
{
$_SESSION['rdr']="Invalid Login. Try Again.";
header("Location: https://noc.sde.site.com/okhawaja/Login/formLanding/login.php");
redirect(_WEBROOT_ . "/try1b.php");
exit;
}
ldap_close($ds);
exit;
}
?>
誰もが知っているの両方のスクリプトに提出する
作業するログイン画面コード提出時にログイン画面?
これはできません。伝統的なフォームを通じて標準のPOSTを実行すると、Jqueryレスポンスは返されません。最初にJQueryのチェックを行い、次に成功したレスポンスで実際のフォームを起動する必要があります。そんな時には、両方とも消火することはできません。 –