2016-04-07 10 views
1

Im mit PHP Curl zum Speichern der Website Name Seitenname, auf dem Benutzer hat gerade geklickt und IP-Adresse in meiner Datenbank, aber das Problem curl senden 2 Anfragen automatisch eines mit den richtigen Daten und in anderen nur geändert der Seitenname zu index.php, ich möchte die zweite Anfrage nur abbrechen, bedeutet, wenn curl einmal ausgeführt wird, dann keine Anfrage von curl bis zu einem anderen Klick auf die gleiche Seite, hoffe meine Beschreibung wird dir helfen, meinen Fehler für mich herauszufinden , hier ist mein Code.PHP curl automatisch senden zwei Anfragen

**This IS My Curl Code** 


$wb_nm = $_SERVER[HTTP_HOST]; 
$pg_nm = $_SERVER[PHP_SELF]; 
$usr_ip = $_SERVER[REMOTE_ADDR]; 
$pg_nm_ultr = trim($pg_nm , '/'); 

$n_url = "localhost/curl/new_page.php"; 

$data = array(
"varhost" => $wb_nm, 
"varpage" => $pg_nm_ultr, 
"varip" => $usr_ip 
); 

$post = curl_init(); 

curl_setopt($post, CURLOPT_URL, $n_url); 

curl_setopt($post, CURLOPT_POSTFIELDS, $data); 

curl_setopt($post, CURLOPT_RETURNTRANSFER, false); 

$result = curl_exec($post); 

curl_close($post); 

?> 



**And This Is new_page.php** 



if(isset($_POST['varhost']) && isset($_POST['varpage']) && isset($_POST['varip'])) 
{ 
    $web_name = $_POST['varhost']; 
    $page_name_ulter = $_POST['varpage']; 
    $user_ip = $_POST['varip']; 

    define("DB_HOSTNAME", "localhost"); 

    define("DB_USER", "root"); 

    define("DB_PASS", ""); 

    define("DB_DB", "pan"); 

    $connection = mysqli_connect(DB_HOSTNAME, DB_USER, DB_PASS, DB_DB); 
    if(isset($connection)){ 
     $query = "SELECT * FROM tbl_agencies WHERE weblink = '".$web_name."'"; 
     $result = mysqli_query($connection , $query); 
     if($result){ 
     while($row = mysqli_fetch_array($result)){ 
      if(isset($row)) 
      { 
      $D_id = $row['domain_id']; 
      $D_name = $row['website']; 
      if($D_id == 0) 
      { 
      return false; 
     } 
    } 
    else 
    { 
    } 
    break; 
} 
} 
} 

$date_date = date('Y-m-d'); 
$time_stamp = date("H:i:s"); 

$query_Code = "INSERT INTO user_details (website_domain_id , website_domain_name , page_clicked , user_IP , access_date , access_time) VALUES ('".$D_id."','".$D_name."' , '".$page_name_ulter."' , '".$user_ip."' , '".$date_date."' , '".$time_stamp."')"; 

$result_Code = mysqli_query($connection , $query_Code); 
if($result_Code) 
{ 
    mysqli_close($connection); 

} 
} 
?> 

Antwort

0

In curl_setopt($post, CURLOPT_POSTFIELDS, $fields); können Sie Felder als assoziatives Array senden. Also dieser Code:

$fields = ''; 

foreach($data as $key => $value) { 
    $fields .= $key . '=' . $value . '&'; 
} 
rtrim($fields, '&'); 

ist eigentlich nicht erforderlich, so dass curl_setopt($post, CURLOPT_POSTFIELDS, $fields); wird

curl_setopt($post, CURLOPT_POSTFIELDS, $data); 
+0

Trauriges Bro, Dieser Trick funktioniert nicht Auch änderte ich meine Locken-Code sehr viel, das ist mein-Code jetzt ist $ wb_nm, "varpage" => $ pg_nm_ultr, "varip" => $ usr_ip ); $ post = curl_init(); curl_setopt ($ post, CURLOPT_URL, $ n_url); curl_setopt ($ post, CURLOPT_POSTFIELDS, $ data); curl_setopt ($ post, CURLOPT_RETURNTRANSFER, false); $ result = curl_exec ($ post); curl_close ($ post); ?> –