我将给出一个我需要做的事情的基本例子,希望有人可以指出我正确的方向,虽然我很确定我要问的是有人要面对的问题。当他们阅读时自己。无论如何,这里也是。
我在网站Y的页面上有一个表单(我们称之为form.php),该表单看起来像这样(仅询问用户名和密码):
<form action="http://SiteX.com/validate.php" method="post">
Email Address: <input type="text" name="email">
Password: <input type="password" name="password">
<input type="submit">
</form>
如您所见,表单托管在站点Y上,并将信息提交到站点X上的页面。
站点X上的validate.php检查来自站点Y的提交的登录详细信息,并返回登录详细信息是否有效,有点像这样(显然比这更复杂):
$SubmittedEmail = $_POST['email'];
$SubmittedPassword = $_POST['password'];
$CrossReferenceEmail = 'someemail@dontcare.com';
$CrossReferencePassword = 'apassword';
if ( ($SubmittedEmail == $CrossReferenceEmail) && ($SubmittedPassword == $CrossReferencePassword) ) {
echo 'Valid';
} else {
echo 'Not Valid'; }
我需要做的是,我不知道该怎么做,是如何让“form.php”等待回复(登录详情是否有效)然后根据回复?
答案 0 :(得分:1)
<form id="Form" action="http://SiteX.com/validate.php" method="post">
Email Address: <input type="text" name="email">
Password: <input type="password" name="password">
<input type="submit">
</form>
$("#Form").submit(function(event) {
/* stop form from submitting normally */
event.preventDefault();
/* get some values from elements on the page: */
var $form = $( this ),
e = $form.find( 'input[name="email"]' ).val(),
p = $form.find( 'input[name="password"]' ).val(),
url = $form.attr( 'action' );
/* Send the data using post */
var posting = $.post( url, { email: e,password:p } );
/* Put the results in a div */
posting.done(function( data ) {
if(data=='valid')
alert('login successful');
elseif(data=='Not Valid')
alert('login not successful');
});
});
答案 1 :(得分:1)
非常基本和简单的方法是使用 httpsquest java脚本并从网站X获取返回值,如果匹配提交数据到网站Y中的任何php文件。如果你想知道我可以发一个例子来帮助你。
这种方式更加用户友好,但需要客户端进程。 另一种方式是使用get content function。
其他方式:
您可以在网站Y上使用 get.php 文件并将数据提交至 get.php 。
get.php 文件中的使用 file_get_content 函数并通过get方法提交用户名数据(添加到url的末尾,如示例) 然后检查返回值(true或false)
示例:
$SubmittedEmail = $_POST['email'];
$SubmittedPassword = $_POST['password'];
$homepage = file_get_contents("http://www.example.com/x.php?email=SubmittedEmail &password=$SubmittedPassword&...[other parameters]");
,请访问www.x.com/x.php
您可以通过get方法获取电子邮件和密码 并回应结果。
$ hompage 中的返回值是网站x上的x.php文件的结果(true或false或您在网站x文件x.php上回显的任何内容)
网站x.com/x.php上的这样做是为了获取数据并将结果返回到y网站:
$SubmittedEmail = $_GET['email'];
$SubmittedPassword = $_GET['password'];
if ( ($SubmittedEmail == $CrossReferenceEmail) && ($SubmittedPassword == $CrossReferencePassword) ) {
echo 'true';
} else {
echo 'false'; }
更多帮助: http://php.net/manual/en/function.file-get-contents.php
答案 2 :(得分:0)
这样......你不能在传输表单后立即将url设置为“validate.php”,这样原来的form.php和它的代码就不再可用了。
你可以做的是将formtransmission更改为ajax-javascript,等待来自validate.php的响应而不关闭form.php ...然后你可以做任何你需要做的事情。
(与卷曲有什么关系?)
[编辑]
将此javascript添加到form.php html输出
function validate()
{
var e = $('email').value;
var p = $('password').value; //jQuery is easier to type
// the same as
// var p = document.getElementById('password').value;
var req = new Request({
url: '/validate.php?',
method: 'post',
data: {'email' : e, 'password' : p},
onComplete: function(response)
{
if (response == "Valid" )
{
//do what you want on success
}
else
{
// do what you want on unsuccessful login
}
}
}).send();
}
现在编辑表单(只是第一行)
<form onsubmit="validate();" method="post">
应该做