2011-01-21 62 views
0

我使用php curl發送發佈信息。沒關係。沒問題。但是它發送服務器的IP。這對我來說是一個問題。通過PHP(curl)或jQuery - IP問題發送POST信息 -

jQuery是發送與用戶的IP後的信息,但是有jQuery的跨域問題。它不會將發佈信息發送到其他域。它只適用於相同的域。

我想送崗位信息(另一個域)+用戶IP(而不是服務器IP)。我喜歡學習你的建議......那麼,有沒有其他的方式來完成這份工作?

謝謝,關心。

回答

1

做到這一點的唯一方法是讓網頁指向指定的資源上的表單,給它一個POST方法,並提交。

如果你不想整個頁面重新加載,使用iframe。

<iframe id="myiframe"></iframe> 

<form action="http://some-other-site.com/page.php" method="post" target="myiframe"> 
.... 

但是,您將無法訪問站點輸出的結果 - 同樣是由於跨域/單一來源策略。

+0

感謝您的回答。聽起來不錯。即時在我的本地主機上測試它..再次感謝。 – Eric 2011-01-21 22:12:22

0

如果「一些,其他的現場」是你太,你只需要客戶端IP有 - 你可以用值從全局數組$_SERVER["REMOTE_ADDR"]

通只是一個POST參數,但如果你需要從客戶端的請求IP - 你應該使用iframe,就像佩卡說的那樣。

+0

感謝您的回答。我認爲iframe是您和@Pekka所說的最佳解決方案。問候 – Eric 2011-01-21 22:20:09

0

您還可以設置一個PHP腳本,將proxify你的電話。

在同一個域中,把一個PHP腳本,將捕獲後ARGS,並重新發送直通捲曲電話。然後輸出你的jquery ajax調用會捕獲的結果。

+0

感謝您的答案。其實,我不明白這一點。我認爲這對我來說是一個複雜的系統。無論如何,再次感謝。 – Eric 2011-01-21 22:31:11

0

是的。使用捲曲腳本發佈圖像,但那又如何?我如何得到結果?

<form action="upload.php" method="post" enctype="multipart/form-data"> 
<input type="file" name="file" /> 
<input type="submit" name="sub" value="upload"/> 
</form> 

    <?php 

    ini_set('display_errors',1); 
    error_reporting(E_ALL); 

    if($_POST['sub']) 
    { 

    if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg"))) 
     { 
     if ($_FILES["file"]["error"] > 0) 
     { 
     echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
     } 
     else 
     { 
    //set POST variables 
    $url = 'http://img.savvylist.com/'; 

    $contents = $_FILES["file"]["tmp_name"]; 
    //get image file as contents. 


    $fields = array(
       'filetype'=>'jpg', 
       'fileid'=>'test_suite:adam:head.jpg', 
       'content'=>$contents   
      ); 

    //url-ify the data for the POST 
    $fields_string = ''; 
    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
    rtrim($fields_string,'&'); 

    //open connection 
    $ch = curl_init(); 

    //set the url, number of POST vars, POST data 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_POST,count($fields)); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); 

    //execute post 
    $result = curl_exec($ch); 

    //close connection 
    curl_close($ch); 

     } 
     } 
    } 
    ?> 

現在呢?