2016-04-25 2 views
0

ich php neu bin, versuche ich Daten von einer Website locken mit zu bekommen (Schaben),nicht in der Lage, Daten senden

keine Daten erhalten von index.php zu data.php mit CURLOPT_POST .. was mache ich falsch?

index.php

<?php 
$data = array("name"=>"john","age"=>31); 
$string = http_build_query($data); 

echo $string; 

$ch = curl_init("http://localhost/scrap_practise/data.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); 

?> 

data.php

<?php 
echo 'finlly in'; // this never echos 
if(isset($_POST['name'],$_POST['age'])){ 
    $db = new Mysqli("localhost","root","","mydb"); 
    $name = $db->real_escape_string($_POST['name']); 
     $age = (int) $_POST['age']; 
     $query = "INSERT INTO data SET data='$name,$age'"; 
     $db->query($query); 

} 

?> 
+0

assign curl in Variable '$ result = curl_exec ($ ch);' und Druckergebnis 'print_r ($ result);' um Fehler zu überprüfen, aber Ihr Code funktioniert gut Ich denke, das Problem ist mit Ihrem Host-Namen ist es 'localhost 'not' loclhost' –

+0

Verwende 'curl_setopt ($ ch, CURLOPT_URL, Deine URL);' –

+0

@manjeet barnala- nein, aber es gibt nicht einmal den Code in data.php, die erste Zeile in data.php ist 'echo ' finly in '. ,, es zeigt sich nicht – Bawa

Antwort

1

einfach müssen Sie SieaktualisierenSkript mit dieser Codezeile.

index.php

<?php 
$data = array("name"=>"john","age"=>31); 
$string = http_build_query($data); 

echo $string; 

$ch = curl_init("http://localhost/scrap_practise/data.php"); 
curl_setopt($ch, CURLOPT_POST,true); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$string); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
if(! $result = curl_exec($ch)) 
{ 
    trigger_error(curl_error($ch)); 
} 
curl_close($ch); 

// to see the return result uncomment the below line code. 
//print_r($result); 
?> 

Für weitere Optionen oder Funktionsreferenz diesen Link sehen - http://php.net/manual/en/function.curl-exec.php

Hoffnung dies Ihr Problem zu lösen helfen !!

+0

bro, das hat funktioniert, ich kann jetzt die Echos sehen, die in data.php sind, aber es ergab keinen Sinn für mich. Wie..? Wie ein if Statements einen Unterschied macht. plus bin immer noch nicht in der Lage, Daten in der Datenbank zu sehen (obwohl ich es umgehen werde, Hilfe in diesem Fall wird geschätzt werden) – Bawa

+0

ich denke es wegen der print_r ($ Ergebnis); – Bawa

+1

@Bawa, Funktion 'curl_exec()' gibt 'TRUE' bei Erfolg oder' FALSE' bei Fehler zurück. Wenn jedoch die Option 'CURLOPT_RETURNTRANSFER' gesetzt ist, wird das Ergebnis bei Erfolg zurückgegeben, 'FALSE' bei Fehler. –

1

diesen Code Versuchen Sie, ich hoffe, es wird für Sie arbeiten ...

<?php 
$url = 'http://localhost/scrap_practise/data.php'; 

$data = array("name"=>"john","age"=>31); 

$string = http_build_query($data); 

echo $string; 

$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST,true); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$string); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

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

curl_close($ch); 

?> 

In data.php Datei

<?php 
echo 'finlly in'; // this never echos 
if(isset($_POST['name'],$_POST['age'])) 
{ 
    echo "<pre>"; print_r($_POST); 
} 
?> 

erhalten Sie folgende Ausgabe:

finlly in 
Array 
(
    [name] => john 
    [age] => 31 
) 
+0

das hat auch funktioniert, aber ich kann nur eine Antwort richtig markieren. :) Danke fürs Helfen . – Bawa

+1

willkommen bro ... @Bawa, ich bin immer da, um zu helfen ... –