PHP - Как отправить данные формы в URL-адрес, подождать ответа и затем сделать что-то

Я собираюсь привести базовый пример того, что мне нужно, чтобы надеяться, что кто-то может указать мне в правильном направлении, хотя я уверен, что я прошу кого-то, прочитайте его. Во всяком случае, здесь идет.

I have a form on a page on Site Y (let's call it form.php), that form looks like this (asks for just a username & password):

<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.

validate.php на сайте X проверяет отправленные данные для входа с сайта Y и возвращает, действительны ли данные для входа в систему, вроде этого (очевидно, что-то более сложное, чем это):

$SubmittedEmail = $_POST['email'];
$SubmittedPassword = $_POST['password'];

$CrossReferenceEmail = '[email protected]';
$CrossReferencePassword = 'apassword';

if ( ($SubmittedEmail == $CrossReferenceEmail) && ($SubmittedPassword == $CrossReferencePassword) ) {
echo 'Valid';
} else {
echo 'Not Valid'; }

Что мне нужно делать, что я не знаю, как это сделать, так как я могу заставить «form.php» ждать ответа (независимо от того, являются ли данные для входа действительными или нет), а затем сделать что-то на основе этого ответа?

1
nl ja de
вы можете опубликовать свои данные для входа на сайт X с помощью метода jQuery POST, когда вы находитесь на сайте Y.And вам нужно получить ответ на сайт Y?
добавлено автор iJay, источник

3 ответы

<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
добавлено
Это прекрасно работает, спасибо вам большое.
добавлено автор Learning, источник

очень простой и простой способ - использовать httpRequest по java script и получить возвращаемое значение с сайта X и если сопоставить данные отправки в любой php-файл на сайте Y., если вы хотите знать Я могу отправить пример, чтобы помочь вам.

этот способ более удобен для пользователя, но необходим процесс на стороне клиента. Другой способ - использовать функцию содержимого.

другим способом:

вы можете использовать файл get.php на сайте Y и отправить данные на 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

вы можете получать электронную почту и пароль, получая метод и эхо результат.

returnet в $ hompage - результат файла x.php на сайте x (true или false или любая вещь, которую вы эхо на сайте x file x.php)

на сайте x.com/x.php сделать это, чтобы получить данные и вернуть результат на сайт y:

 $SubmittedEmail = $_GET['email'];
 $SubmittedPassword = $_GET['password'];
if ( ($SubmittedEmail == $CrossReferenceEmail) && ($SubmittedPassword == $CrossReferencePassword) ) {
echo 'true';
} else {
echo 'false'; }

more help on: http://php.net/manual/en/function.file-get-contents.php

1
добавлено

таким образом ... вы НЕ МОЖЕТЕ, как только форма будет передана, url будет установлен на «validate.php», поэтому исходный form.php и его код больше не доступны.

То, что вы можете сделать, это изменить форму передачи на 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">

это должно

0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp