echo 'INSERT INTO archive SELECT * FROM content WHERE id='.$rid.';';
echo 'DELETE FROM content WHERE id=.$rid.';';
<?php
session_start();
require "config.php";
if(isset($_SESSION['id']))
{
if(isset($_POST['redsub']))
{
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$rid=$_POST['rid'];
$red_name=$_POST['rname'];
$red_birth=$_POST['rbirth'];
$red_sps= mysqli_real_escape_string($db, $_POST['rsps']);
$red_temph=$_POST['rtemph'];
$red_prevacc=$_POST['rprevacc'];
$red_date=$_POST['rdate'];
$red_status=$_POST['rstatus'];
$statusdate=date('Y-m-d');
//Установка даты следующего тестирования
switch ($red_prevacc)
{
case 'Значение1':
$dateAt = strtotime(' + 6 months', strtotime($red_date));
$ndate = date('Y-m-d', $dateAt);
break;
case 'Значение2':
$dateAt = strtotime(' + 6 months', strtotime($red_date));
$ndate = date('Y-m-d', $dateAt);
break;
case 'Значение3':
$dateAt = strtotime(' + 6 months', strtotime($red_date));
$ndate = date('Y-m-d', $dateAt);
break;
case 'Значение4':
$dateAt = strtotime(' + 6 months', strtotime($red_date));
$ndate = date('Y-m-d', $dateAt);
break;
case 'Значение5':
$dateAt = strtotime(' + 3 months', strtotime($red_date));
$ndate = date('Y-m-d', $dateAt);
break;
case 'Значение6':
$dateAt = strtotime(' + 3 months', strtotime($red_date));
$ndate = date('Y-m-d', $dateAt);
break;
default:
$dateAt = strtotime(' + 12 months', strtotime($red_date));
$ndate = date('Y-m-d', $dateAt);
break;
}
//print "ID = $rid Name = $red_name<br /> Date = $red_date<br /> Next date = $ndate<br /> Prev = $red_prevacc<br /> Temph = $red_temph<br /> Barack = $red_sps<br /> Виправлення зроблені $statusdate";
//(`name`, `birth`, `sps`, `temph`, `prevacc`, `date`, `next_date`, `status`, `date_status`)
if(isset($red_status)&&$red_status=='Выбыл')
{
mysqli_begin_transaction($db);
try {
$stmt = mysqli_prepare($db, "INSERT INTO archive SELECT * FROM content WHERE id=?");
mysqli_stmt_bind_param($stmt, "i", $rid);
mysqli_stmt_execute($stmt);
$stmt = mysqli_prepare($db, "DELETE FROM content WHERE id=?");
mysqli_stmt_bind_param($stmt, "i", $rid);
mysqli_stmt_execute($stmt);
mysqli_commit($db);
} catch (\Exception $exception) {
mysqli_rollback($db);
throw $exception;
}
}
}
else
{
echo "Некорректные данные";
}
mysqli_close($db);
}
else
{
header("Location:".$site_url);
}
?>
не могли бы вы перечислить ещё возможные атаки?
if(isset($red_status)&&$red_status=='Выбыл')
{
mysqli_begin_transaction($db);
try {
$stmt = mysqli_prepare($db, "INSERT INTO archive SELECT * FROM content WHERE id=?");
mysqli_stmt_bind_param($stmt, "i", $rid);
mysqli_stmt_execute($stmt);
$stmt = mysqli_prepare($db, "DELETE FROM content WHERE id=?");
mysqli_stmt_bind_param($stmt, "i", $rid);
mysqli_stmt_execute($stmt);
mysqli_commit($db);
} catch (\Exception $exception) {
mysqli_rollback($db);
throw $exception;
}
}
if(isset($red_status)&&$red_status=='Выбыл')
{
$mysqli->begin_transaction();
try {
$stmt = $mysqli->prepare("INSERT INTO archive SELECT * FROM content WHERE id=?");
$stmt->bind_param("i", $rid);
$stmt->execute();
$stmt = $mysqli->prepare("DELETE FROM content WHERE id=?");
$stmt->bind_param("i", $rid);
$stmt->execute();
$mysqli->commit();
} catch (\Exception $exception) {
$mysqli->rollback();
throw $exception;
}
}
$mysqli->begin_transaction();
try {
$stmt = $mysqli->prepare("INSERT INTO archive SELECT * FROM content WHERE id=?");
$stmt->bind_param("i", $rid);
$stmt->execute();
$stmt = $mysqli->prepare("DELETE FROM content WHERE id=?");
$stmt->bind_param("i", $rid);
$stmt->execute();
$mysqli->commit();
} catch ($exception) {
$mysqli->rollback();
throw $exception;
}
Но если вы думаете что это защитит вас от вечного редиректа - я вас разочарую. Разница в том что curl автоматом отвалится при достижение CURLOPT_MAXREDIRS