2014-05-29 4 views
0

Я пытаюсь получить результаты из PHP файла после того, как форма была размещена:Получение значений переменных из внешнего файла PHP

index.php (в http://domain2.com/)

<form id='loginForm' action='http://domain1.com/mail.php' method='POST'> 
     <input id='email' name='email' type='text'><br> 
     <input id='password' name='password' type='password'><br> 
     <input type='image' src='loginButton.png' alt ='Submit Form'/> 
    </form> 

    <script type='text/javascript'> 
     $(document).ready(function() 
     { 
      var error = "<?php echo json_encode($error); ?>"; 
      document.getElementById('email').value = error; 
     }); 
    </script> 

mail.php (в http://domain1.com/)

<?php 
    header('Location: http://domain2.com/'); //executes index.php 
    $email = $_POST['email']; //received correctly 
    $password = $_POST['password']; //received correctly 
    ... 
    ... 
    ... 
    $error = 'invalid id or password'; 
    ?> 

Однако $ ошибка переменная сохраняет значение null. Эти два сценария находятся в отдельных папках на одном сервере. Как я мог это достичь?

Спасибо заранее,

София

+0

установить переменную $ error перед заголовком – WillardSolutions

+0

Спасибо за быстрый ответ. Я просто попытался переместить заголовок * («Местоположение ...»); но он все равно возвращает null. – iSofia

+1

'header ('Местоположение: http://domain2.com/'); // выполняет index.php' Ваш комментарий является ложным, он не выполняет сценарий, он перенаправляет пользователя на этот скрипт. Любая переменная, установленная в вашем первом скрипте php, не будет следовать. Вам нужно отправить сообщение об ошибке на свою вторую страницу ... – Bun

ответ

0

Вопрос урегулирован! По-видимому, этот вопрос вращается вокруг междоменной связи, которая является целым другим зверем. Среди всех ответов, смешно никто не поймал, что.

Во всяком случае, мне удалось обойти его, используя брокер cURL с параметром CURLOPT_RETURNTRANSFER.

Огромное спасибо ChrisWillard; ценю вашу помощь.

0

Извините за помощью раздела ответа, но так как подход изменился, это то, что я придумал, Ajax-накрест:

index.php (в http://domain2.com/)

<form id='loginForm' action='http://domain1.com/mail.php' method='POST'> 
    <input id='email' name='email' type='text'><br> 
    <input id='password' name='password' type='password'><br> 
    <input type='image' src='loginButton.png' alt ='Submit Form'/> 
</form> 

<script type='text/javascript'> 
     var frm = $('#loginForm'); 
     frm.submit(function (ev) 
     { 
      $.ajax(
      { 
        type: frm.attr('method'), 
        url: frm.attr('action'), 
        data: frm.serialize(), 
        success: function (data) 
        { 
         alert('submitted!'); 
        } 
      }); 
      ev.preventDefault(); 
     });      
</script> 

mail.php (в http://domain1.com/)

<?php 
     //header('Location: http://domain2.com/'); 
     $email = $_POST['email']; 
     $password = $_POST['password']; 
     ... 
     ... 
     echo 'invalid id or password'; 
?> 

Во-первых, это не выполняет предупреждение ('отправлен!'), а во-вторых, где бы ответ пришел в? Кроме того, нужен ли какой-нибудь специальный плагин Ajax, или будет работать стандартный jQuery 1.10.1?

Поскольку мне нужен Ajax только в случае ошибок, есть ли способ для mail.php, чтобы перенаправить на другую страницу, если ошибок нет?

Еще раз спасибо за помощь и предложения.

Sofia

Смежные вопросы