我想知道当其他服务器使用post方法将数据发送到我的服务器时是否可以运行sql查询。没有用户操作。它直接从服务器向服务器发送数据。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$servername = "localhost";
$username = "test";
$password = "test123";
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$selected = mysql_select_db("test",$conn) or die("Could not select examples");
$sql = "INSERT INTO `tablename`.`test` (`id`, `startdate`, `enddate`) VALUES (NULL, '2016-09-08', '2016-09-09');";
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
mysql_close($conn);
}
?>
可以在没有任何用户操作的情况下运行查询吗?谢谢。
答案 0 :(得分:1)
有一种后端 - 前端方式如何在客户端和服务器之间进行通信。我知道这听起来并不像你想要的那样但是确实如此。
它是如何运作的: 因为后端从客户端获取请求并且基于此请求他做了一些事情(例如make SQL Select)。
在您的情况下,您的客户端将是另一台服务器。请求不会来自某些.js
,而是来自另一个.php
文件。但它仍然以同样的方式工作。
非常基本的例子:
这是发送数据的服务器
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.example.com/server.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"postvar1=value1");
// in real life you should use something like:
// curl_setopt($ch, CURLOPT_POSTFIELDS,
// http_build_query(array('postvar1' => 'value1')));
// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
这是等待请求的服务器:
if(isset($_POST['postvar1'])) {
$data = $_POST['postvar1'];
// Here comes your logic..
}
答案 1 :(得分:1)
是的,您无需用户执行任何操作即可运行查询。您也不想使用mysql_*
。您可能希望查看mysqli_*
函数或PDO。