cUrl не отправляет данные POST php

У меня проблема с cURL, посмотрите на мой код



www.example1.com/index.php

$Email = $_POST['Email'];
$Password = $_POST['Password'];

$sql = $dbh->prepare('SELECT * FROM users WHERE Email = ? AND Password = ?');
$sql->execute(array($Email,$Password));

if($sql->rowCount() == 1) {
    $data = array('Found'=> 'Great');
    $string = http_build_query($data);

    $ch = curl_init("http://www.example2.com/index.php");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_exec($ch);
    curl_close($ch);
}else{
    $data = array('Found'=> 'Sorry');
    $string = http_build_query($data);

    $ch = curl_init("http://www.example2.com/index.php");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_exec($ch);
    curl_close($ch);  
}

www.example2.com/index.php

$data = array('Email'=>'[email protected]', 'Password'=>'Password');
$string = http_build_query($data);

$ch = curl_init("http://www.example1.com/index.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);


if(isset($_POST['Found'])) {
   $Found = $_POST['Found'];
   echo $Found;
}

он ничего не повторял в www.example2.com, так что я могу сделать, чтобы я мог повторить переменную Found

извините за мой плохой английский, надеюсь, вы меня понимаете, и спасибо :)


person Hosam    schedule 09.11.2017    source источник
comment
Вы не привязываете переменные к подготовленному оператору. Посмотрите документы для mysqli_stmt::bind_param   -  person frozenjakalope    schedule 09.11.2017
comment
можешь дать пример кода   -  person Hosam    schedule 09.11.2017
comment
Ни один из ваших curl_exec не присваивает данные returntransfer переменной (и не повторяет ее). ?   -  person IncredibleHat    schedule 09.11.2017
comment
Также я не понимаю ваши примеры, потому что, если вы запустите пример 1, curl вызовет пример 2, а это вызовет пример 1 и зациклится навсегда?   -  person IncredibleHat    schedule 09.11.2017
comment
@frozenjakalope Судя по его коду, он использует PDO, который не понимает bind_param. Он делает это правильно в execute.   -  person IncredibleHat    schedule 09.11.2017
comment
я хочу проверить, является ли он активной учетной записью, так что если учетная запись найдена или нет   -  person Hosam    schedule 09.11.2017
comment
Я согласен, что это выглядит так, как будто это создаст бесконечный цикл запросов. И откуда вы знаете, что example2 ничего не выводит, когда вы вызываете его из example1? В примере 1 вы игнорируете любой ответ, возвращаемый операцией curl.   -  person ADyson    schedule 09.11.2017
comment
И что я должен делать??   -  person Hosam    schedule 09.11.2017
comment
чтобы избежать бесконечного цикла? Прекратите делать запросы друг к другу с обеих страниц. Пример1 должен вызвать Пример2 и дождаться ответа (на данный момент Пример1 игнорирует ответ, полученный от Примера2). Почему Example2 должен вызывать Example1? Эта часть не имеет особого смысла. Особенно, когда это приведет к другому вызову Example2, который приведет к другому вызову Example1, и так далее до бесконечности. Возможно, вам нужно пройти учебник по PHP/cURL, а также лучше понять, как работают HTTP-запросы.   -  person ADyson    schedule 09.11.2017
comment
Example2 нужно вызвать Example1, чтобы я мог знать, нашел ли пользователь его, запустит скрипт   -  person Hosam    schedule 09.11.2017
comment
Это не имеет смысла. Пример 1 может узнать это, дождавшись ответа от Примера 2 (т. е. ожидая информации, которую вы отправляете обратно через echo). Выполнение другого запроса curl к Example1 в любом случае запускает отдельное выполнение Example1 с самого начала в новом контексте - он не возвращает информацию исходному экземпляру Example1. Опять же, узнайте, как работают HTTP и cURL. curl_exec() в Примере 1 вернет объект ответа — вам нужно прочитать этот ответ в переменную. Он будет содержать все, что отражено в Примере 2.   -  person ADyson    schedule 09.11.2017
comment
как? Можете ли вы дать мне пример кода?   -  person Hosam    schedule 09.11.2017
comment
curl_exec — это просто функция, поэтому вы получаете ее вывод точно так же, как любую переменную, возвращаемую функцией. См. этот ответ для примера: см. stackoverflow.com/questions/6516902/   -  person ADyson    schedule 09.11.2017
comment
я ценю вашу помощь ‹3   -  person Hosam    schedule 09.11.2017


Ответы (1)


Попробуйте сохранить вывод curl в переменную следующим образом:

$Found = curl_exec($ch);

person drkostas    schedule 09.11.2017
comment
что я могу сделать после сохранения вывода? - person Hosam; 09.11.2017
comment
Попробуйте увидеть, что вы хотите, напечатав вот так echo "$Found"; или вот так var_dump($Found); - person drkostas; 09.11.2017