【发布时间】:2018-12-26 22:57:01
【问题描述】:
<?php
if (isset($_POST['submit'])) {
//google ReCAPTCHA
$secret = "-";
$response = $_POST['g-recaptcha-response'];
$remoteip = $_SERVER['REMOTE_ADDR'];
$url = "https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}&remoteip={$remoteip}";
$response = file_get_contents($url);
$result = json_decode($response);
if ($result->success) {
define("SERVERNAME", "-");
define("USERNAME", "-");
define("PASSWORD", "-");
define("DATABASE", "-");
$connection = mysqli_connect(SERVERNAME, USERNAME, PASSWORD, DATABASE);
if (!($connection->connect_error)) {
$sql = "INSERT INTO `gift` (`t`, `p`, `a`, `c`, `ph`, `e`) VALUES ('{$_POST['t']}', '{$_POST['p']}', '{$_POST['a']}', '{$_POST['c']}', '{$_POST['ph']}', '{$_POST['e']}')";
$result = $connection->query($sql);
if ($result) {
echo '<script>alert("OK.");</script>';
} else {
echo '<script>alert("ERROR1.");</script>';
}
} else {
echo '<script>alert("ERROR2.");</script>';
}
} else {
echo '<script>alert("Verification failed.");</script>';
}
}
?>
我不知道为什么它不起作用。我试图 var_dump($sql) 并返回一个正确的字符串。之后我不能做 var_dump($result) 因为它什么都不返回。 我迷路了。我整天都在尝试用它做点什么,也许这就是为什么我看不出这里有什么问题。
我的主要目标是向数据库中插入一些信息。
【问题讨论】:
-
我不喜欢你的列名。而且我没有足够的眉毛来皱眉你的 SQL 注入。
-
Xorifelse 我更改了列名,因为我不想在这里显示它们。如果你正在写它。
-
那是轻微的皱眉。如果你让你的脚本像那样打开是可以理解的,如果你使用准备好的语句则完全没有必要。
-
您的脚本对SQL Injection Attack 甚至if you are escaping inputs, its not safe! 都是开放的,在
MYSQLI_或PDOAPI 中使用prepared parameterized statements