PHP завиток застревает - PullRequest
       7

PHP завиток застревает

0 голосов
/ 27 января 2019

Я пытаюсь написать базовый код curl на PHP.Я думаю, что я делаю правильно (насколько я прочитал) -

$url = '0.0.0.0:8080/data.php';
$data = array('username'=>'name','email'=>'abcd@gmail.com');
$payload = json_encode(array($data));
print_r($payload);
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_PORT , 8080);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
//curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch,CURLOPT_POSTFIELDS,$payload);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-Type:application/json'));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

$result = curl_exec($ch);
print_r(curl_getinfo($ch));
curl_close($ch);

Вот как выглядит data.php:

$_POST=json_decode(file_get_contents("php://input"),1);
print_r($_POST);
if(isset($_POST['username'],$_POST['email'])){
    $username=mysqli_real_escape_string($db,$_POST['username']);
    $email=mysqli_real_escape_string($db,$_POST['email']);

    $query = "INSERT INTO tbl_user (username, email) 
          VALUES('$username', '$email')";
    mysqli_query($db, $query);
}

Я не могу понять, почемуЭто не работает.Код застревает на curl_exec().Я проведу санитарную обработку и буду использовать подготовленные операторы, как только получу эту работу.

Это журнал:

*   Trying 0.0.0.0...
* TCP_NODELAY set
* Connected to 0.0.0.0 (127.0.0.1) port 8080 (#0)
> POST /data.php HTTP/1.1
Host: 0.0.0.0:8080
Accept: */*
Content-Type:application/json
Content-Length: 46

* upload completely sent off: 46 out of 46 bytes

И он застрянет там.Что я здесь не так делаю?Разве curl не работает на локальных хостах?

РЕДАКТИРОВАТЬ: Это серьезное изменение, но я не думаю, что было бы правильным слишком изменить исходный вопрос.Я уменьшил все это до -

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
//curl_setopt ($ch, CURLOPT_PORT , 8080);
curl_setopt($ch, CURLOPT_URL, "http://localhost:8080/data.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, true);
//curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
// grab URL and pass it to the browser
curl_exec($ch);
if ( curl_error ( $ch ) ) { echo curl_error ( $ch ); }
// close cURL resource, and free up system resources
curl_close($ch);
?>

, что также застряло.Однако то же самое работает с www.example.com.Поэтому я думаю, что проблема заключается в получении моего URL.

это журнал:

* Rebuilt URL to: http://localhost:8080/
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET / HTTP/1.1
Host: localhost:8080
Accept: */*

data.php имеет только echo "Hello"; прямо сейчас, чтобы проверить его

Я могу удалить предыдущие части вопроса, если они не нужны.

...