2014-10-12 4 views
0

Вот мой код, у меня есть два оператора cURL в той же программе. Первый использует $ ch, а второй использует $ ch1. Проблема в том, что сначала выполняется выполнение и показывается результат, но второй ничего не делает.php-curl не работает

<?php 
include ('DBconnect.php'); 

if (isset($_POST['submit'])) { 
$verified = "1"; 
$error = array(); 
if (empty($_POST['name'])) { 
    $error[] = 'I am sure you have a name!'; 
} 
else { 
    $name = $_POST['name']; 
} 

if (empty($_POST['phone'])) { 
    $error[] = 'Please enter your phone number with country code'; 
} 
else { 
    $Phone = $_POST['phone']; 
} 

if (empty($_POST['Password'])) { 
    $error[] = 'Please choose a password '; 
} 
else { 
    $Password = $_POST['Password']; 
} 

if (empty($error)) //send to Database if there's no error ' 
{ // If everything's OK... 

    // Make sure the phone number is available: 

    $query_verify_phone = "SELECT * FROM members WHERE Phone ='$Phone'"; 
    $result_verify_phone = mysqli_query($dbc, $query_verify_phone); 
    if (!$result_verify_phone) { //if the Query Failed ,similar to if($result_verify_phone==false) 
     echo ' Database Error Occured '; 
    } 

    if (mysqli_num_rows($result_verify_phone) == 0) { // IF no previous user is using this phone number. 
     $query_insert_user = "INSERT INTO `members` (`Name`, `Phone`, `Password`, `Verified`) VALUES ('$name', '$Phone', '$Password', '$verified')"; 
     $result_insert_user = mysqli_query($dbc, $query_insert_user); 
     if (!$result_insert_user) { 
      echo 'Query Failed '; 
     } 

     if (mysqli_affected_rows($dbc) == 1) { //If the Insert Query was successfull. 
      $customerToken = "TOKEN HERE"; 
      $clientTransactionId = rand(55555, 77777); 
      $duration = "180"; 
      $countryCode = "91"; 
      $z2vToken = "TOKEN HERE"; 
      $postData = array(
       'customerToken' => $customerToken, 
       'clientTransactionId' => $clientTransactionId, 
       'callerid' => $Phone, 
       'duration' => $duration, 
       'countryCode' => $countryCode, 
       'z2vToken' => $z2vToken, 
      ); 

      // create post body 

      $post_body = ''; 
      foreach($postData as $key => $value) { 
       $post_body.= urlencode($key) . '=' . urlencode($value) . '&'; 
      } 

      $post_body = rtrim($post_body, '&'); 

      // Initialize CURL data to send via POST to the API 
      // FIRST ONE CURL REQUEST- WORKING 

      $ch = curl_init(); 
      curl_setopt($ch, CURLOPT_URL, "http://www.zipdial.com/z2v/startTransaction.action"); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt($ch, CURLOPT_POST, 1); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_body); 

      // Execute CURL command and return into variable ch 

      $string = curl_exec($ch); 
      curl_close($ch); 
      $json = json_decode($string); 

      // now the json has been decoded 
      // echo "Please do a missed call on: "; 
      // echo "<img src=' ".$json->img."'>"; 

      $pf = 'fl' . uniqid(); 
      $un = uniqid($pf); 
      $fpl = 'img' . $un . '.png'; 
      file_put_contents($fpl, file_get_contents($json->img)); 

Все выше идет нормально, но запрос на второй завиток не работает:

  // EVERYTHING ABOVE GOES FINE. BELOW IS SECOND REQUEST- NOT WORKING 

      $url = "https://api.idolondemand.com/1/api/sync/ocrdocument/v1"; 
      $post = array(
       'apikey' => "MY KEY HERE", 
       'url' => "http://site.ext/users/$fpl", 
       'mode' => "document_photo" 
      ); 
      $ch1 = curl_init(); 
      curl_setopt($ch1, CURLOPT_URL, $url); 
      curl_setopt($ch1, CURLOPT_POST, 1); 
      curl_setopt($ch1, CURLOPT_POSTFIELDS, $post); 
      curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); 
      $ocr = curl_exec($ch1); 
      $jsonocr = json_decode($ocr, true); 
      $textblock = $jsonocr['text'][0]; 
      echo '<div class="success">Please give a missed call to ' . $textblock['text'] . ' from your registered phone number to activate account. </div>'; 
      curl_close($ch1); 
     } 
     else { // If it did not run OK. 
      echo '<div class="errormsgbox">You could not be registered due to a system error. We apologize for any inconvenience.</div>'; 
     } 
    } 
    else { // The phone number is not available. 
     echo '<div class="errormsgbox" >That phone number has already been registered. </div>'; 
    } 
} 
else { //If the "error" array contains error msg , display them 
    echo '<div class="errormsgbox"> <ol>'; 
    foreach($error as $key => $values) { 
     echo ' <li>' . $values . '</li>'; 
    } 

    echo '</ol></div>'; 
} 

mysqli_close($dbc); //Close the DB Connection 
} // End of the main Submit conditional. 

?> 

я могу сделать запрос на второй завиток запрос вручную из браузера, и это работает, но он не работает здесь. Что не так?

+0

Любые сообщения об ошибках? – lexith

+0

@Alrazah Когда я делаю rrquest из браузера, он показывает сообщение об успешном запуске в json, но в php он не запускается без каких-либо успехов или сообщений об ошибках вообще. – Ashish

+0

PLease уменьшает этот код до актуального. Благодарю. – arkascha

ответ

1

Я думаю, вы получите эту ошибку, когда вы дамп curl_error($ch1):

Unknown SSL protocol error in connection to api.idolondemand.com 

Вы можете добавить эту строку, когда вы свернуться HTTPS, если вы не имеете чувствительный транзит данные:

curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, false); 

Вот код который работает для меня:

$ch1 = curl_init(); 
curl_setopt($ch1, CURLOPT_URL, $url); 
curl_setopt($ch1, CURLOPT_POST, 1); 
curl_setopt($ch1, CURLOPT_POSTFIELDS, $post); 
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, 1); 
$ocr = curl_exec($ch1); 
var_dump($ocr); 
var_dump(curl_error($ch1)); 

Когда я делаю это, я получаю:

string(97) "{ "message": "Unknown API key", "detail": { "error": 2002, "key": "MY KEY HERE" } }" string(0) "" 
+0

Сделал, но это не сработало :( – Ashish

+0

И что вы получаете, когда дамп' curl_error ($ ch1) '? Это странно, потому что когда я добавляю эту строку, она работает для меня с вашим сайтом. –

+0

Я сделал var_dump ($ ch1), и он дал: bool (false) – Ashish

0

Я установил VERIFYPEER в false и VERIFYHOST на 1, и это сработало.

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