我正在尝试将数据从自动POST请求插入到数据库中,但它没有插入它并且没有抛出任何错误。 (错误日志中无) 代码:
<?php
function getBetween($content,$start,$end){
$r = explode($start, $content);
if(isset($r[1])) {$r = explode($end, $r[1]);
return $r[0]; } return''; }
file_put_contents("outputfile.txt", file_get_contents("php://input"), FILE_APPEND );
$cip = $_POST['ipaddr'];
$cid = $_POST['id'];
$conn = mysqli_connect('localhost', '********', '*******');
$sql = "INSERT INTO slso (asid, ips) VALUES ('$cid', '$cip')";
mysqli_query($conn, $sql); mysqli_close($conn);
?>
outputfile.txt的内容是:
ipaddr=192.168.0.4&id=8&endipaddr=***.**.230.62&id=8&end
但是,数据库中没有插入任何数据。我是否犯了一个我没注意到的简单错误?
答案 0 :(得分:3)
您只能在5.6之前的PHP版本中从php://input
读取一次。
在PHP 5.6之前,使用php://输入打开的流只能读取一次;流不支持搜索操作。但是,根据SAPI实现,可能会打开另一个php://输入流并重新开始读取。只有在保存了请求正文数据后才能执行此操作。通常,这是POST请求的情况,但不是其他请求方法,例如PUT或PROPFIND。
作为解决方法,您可以从php://input
:
$post = file_get_contents("php://input");
file_put_contents("outputfile.txt", $post, FILE_APPEND );
parse_str($str, $output);
$cip = $output['ipaddr'];
$cid = $output['id'];
另一件事是,您的连接只有3个参数。 mysqli_
需要4。
完成后,请执行mysqli_query($conn, $sql) or die(mysqli_error($conn));