양식을 제출하는 scriptA와 siteB가 있습니다. 스크립트 B는 내 것이 아닌 별도의 스크립트이므로 설정을 변경할 수 없습니다. 그러나 ScriptA는 내 것이므로 아래 스크립트를 게시 할 수 있습니다. 로그인 화면이 주어지면 사용자는 로그인 자격 증명을 입력 한 다음 로그인을 클릭합니다. 이 후 양식의 작업 속성에있는 scriptB에 POSTS 양식을 입력 한 다음 JQUERY POSTS를 사용하여 양식을 scriptA에 지정합니다. scriptB 나는 그것에 대해 신경 쓰지 않고, 나는 그것과 그것에 대한 폼을 POST 할 필요가있다. 게시 된 ScriptA는 게시 된 자격 증명을 가져 와서 DB에있는 자격 증명과 일치하는지 확인하기 위해 LDAP 바인딩을 수행합니다. 일치하는 경우 사용자가 www.examplesite.com으로 리디렉션되고 주어진 자격 증명이 false 인 경우 user 잘못된 사용자 이름과 암호를 말하는 로그인 화면으로 다시 전송됩니다.인증을 통한 양식 제출
ScriptB는 내가 원하지 않는 제출물을 리디렉션합니다. scriptB가하는 일에 신경 쓰지 않아도됩니다. POST에 자격 증명을 게시해야합니다. 나는 scriptA에 관심이있다. 일단 scriptA가 사용자를 리디렉션해야하는 적절한 자격 증명을 얻으면. scriptB에 대한 변경을 할 수 없기 때문에 리디렉션을 어떻게 든 무시해야합니다. 현재 어떻게됩니까
: 1) 로그인 화면 사용자 안타는 ScriptB는 액션 atribute를 통해 게시됩니다 입력 자격 증명 2) 후, 스크립은 ScriptB는 www.examplesite 할 수있는 사용자를 리디렉션) JQUERY (3)를 통해 게시됩니다 제출합니다. COM
이이 발생한다 무엇: 스크립 잘못된 자격 증명을 발견하면 1) 로그인 화면 사용자 안타에 제출할 ScriptB는 액션 atribute를 통해 게시됩니다 입력 자격 증명 2) 후에는, 스크립은 JQUERY 3)를 통해 게시됩니다 , 메시지가 잘못된 로그인 화면으로 다시 리디렉션해야합니다. 로그인. 4) 사용자가 로그인 화면에서 올바른 자격 증명을 입력하고 scriptA가 이러한 자격 증명을 승인하면 사용자를 www.example2site.com으로 리디렉션합니다.
아래는 내 scriptA입니다. 내가 scriptB없이 POST하면 scriptA는 의도 한대로 작동하지만 여기에 나는이 두 가지를 하나로 합치려고 노력하고있다.
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 코드 :
<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>
스크립 : I가 리디렉션을 수행 할 수있는 방법을
<?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 검사를 수행 한 다음 성공 응답에서 실제 양식을 실행 취소해야한다. 그렇게하면 같은 시간에 두 가지를 모두 켤 수 없습니다. –