2017-10-12 1 views
0

텍스트 파일에서 POST 데이터를 가져 오는 방법에 어려움을 겪고 있습니다. 내 텍스트 파일에서 텍스트의 라인을 가지고 :PHP : 텍스트 파일에서 각 POST 데이터를 가져와 데이터베이스에 삽입하십시오.

Wednesday October 11, 2017, 04:53 AM,reader_name=%22Impinj%20RFID%20Reader%22&mac_address=%2200%3a16%3a25%3a10%3a7E%3a85%22&line_ending=%0a&field_delim=%2c&field_names=antenna%5fport%2cepc%2cpeak%5frssi%2ctid&field_values=1%2c%22503030393839343834323200%22%2c%2d50%2c%22E280110520005756DE620231%22%0a1%2c%22000000000000001000000441%22%2c%2d53%2c%22E28011602000728E91750917%22%0a1%2c%2288000008%22%2c%2d60%2c%22E280116020007224B7650909%22%0a1%2c%22000000000000001000000441%22%2c%2d54%2c%22E28011602000728E91750917%22%0a1%2c%22503030393839343834323200%22%2c%2d48%2c%22E280110520005756DE620231%22%0a

POST 데이터 다음과 같습니다 : I 코드를 생성 한

reader_name, mac_address, line_ending, field_delim, FIELD_NAMES 및 field_values는 텍스트 파일에서 데이터를 읽을 수 있지만 실패 할 것이다 :

<?php 
$fn = "log.txt"; 
$read = readfile($fn); 


// Store the POST variables. 
$readerName = $_POST['reader_name']; 
$macAddress = $_POST['mac_address']; 
$lineEnding = $_POST['line_ending']; 
$fieldDelim = $_POST['field_delim']; 
$fieldNames = $_POST['field_names']; 
$fieldValues = $_POST['field_values']; 

//Connect to the database. 
$con = mysqli_connect('localhost', 'root', '153624123', 'test') or die("Unable to select database"); 

// Replace the field delimiter with a comma. 
str_replace($fieldDelim, ",", $fieldNames); 

// Break the field values up into rows. 
$rows = explode("\n", $fieldValues); 

// Remove the last row. It's always blank 
if (sizeof($rows)) 
    array_pop($rows); 

$fieldNames = "reader_name,mac_address," . $fieldNames; 

foreach ($rows as $row) { 
    $row = $readerName . "," . $macAddress . "," . 
      $row; 
    $query = mysqli_query($con, "INSERT INTO tags ($fieldNames) VALUES ($row)"); 
    echo "INSERT INTO tags ($fieldNames) VALUES ($row)" . '<br />'; 
} 
?> 

내가 구글에서 다른 방법을 찾고 시도했지만 운을 찾을 수 없습니다. 텍스트 파일은 우리가 "스피드 웨이 연결"제품이라고 불리는이 프로젝트를 위해 구입 한 RFID에서 가져온 것입니다. 웹 사이트가 있고 HTTP POST에 대한 소스 코드를 게시했습니다. 나는 모든 것을 따라 갔지만 나는 운이 없다.

https://support.impinj.com/hc/en-us/articles/202756148-HTTP-POST-with-Speedway-Connect-software-VIDEO-

+0

'var_dump ($ _ POST)'를 시도하고 그 결과를 붙여 넣으십시오. –

+0

'$ _POST'가 비어 있기 때문에 모든 데이터. 그의 텍스트 줄에는 매우 커다란 정리가 필요합니다. – Sand

+0

예 POST는 텍스트 파일이므로 비어 있습니다. 내 문제는 여기 어떻게 내 텍스트 파일에서 POST 얻을 수 있습니다. –

답변

0

다음 사용 의 Content-Type : 파일 생성 기능에

$read = readfile($fn); 
$string =urldecode(explode("^",$read)[1]);//or urldecode(preg_split('@(?=reader_name)@',$read)[1]); demo https://ideone.com/lfEn40 
$post = []; 
foreach (explode('&', $string) as $chunk) { 
    $param = explode("=", $chunk); 
    $post[$param[0]] = isset($param[1])?$param[1]:'';  
} 
$readerName = $post['mac_address']; 
//.... 

변화를 다음 줄을

fwrite($fp, date("l F d, Y, h:i A") . "^" . $rawPostData . "\n"); 
//.....................................^ change here the coma into^
+0

멋지지만 그의 쓰레기가 많이 남을 것입니다. 그의 덩어리 : P. – Sand

+0

답장을 보내 주셔서 감사합니다. 하지만 그것은 작동하지 않았다. –

+0

당신이 ** ** 그것이 작동하지 않았다는 것을 의미합니까 ** – madalinivascu

0

$ _POST는 대한 세트입니다 : application/x-www-form-urlencoded 다른 말로하면 표준 웹 양식입니다.

은 모든 양식/게시물을 기반으로 작성하는 로그 파일입니까? 그렇지 않다면 $ _POST 변수에서 데이터를 가져 오지 않아서 대신 파일에서 데이터를 읽어야합니다. @ _ 마틴과 같은 변수 $ _POST 말

+0

으로 변경해야합니다. Speedway Connect 인 RFID에서 로그를 받았습니다. 그들은 POST 데이터 파일을 얻는 방법에 대한 오픈 소스 코드를 가지고있다. 여기 링크 : https://support.impinj.com/hc/en-us/articles/202756148-HTTP-POST-with-Speedway-Connect-software-VIDEO- –

관련 문제