79 lines
2.5 KiB
Plaintext
79 lines
2.5 KiB
Plaintext
<?php
|
|
$servername = "208.109.71.144";
|
|
$username = "ruletaadmin1990";
|
|
$password = "Nd;GfPL#}*5s";
|
|
$dbname = "ruleta_db";
|
|
|
|
// Crear la conexión
|
|
$conn = new mysqli($servername, $username, $password, $dbname);
|
|
|
|
// Verificar la conexión
|
|
if ($conn->connect_error) {
|
|
die(json_encode(["error" => "Conexión fallida: " . $conn->connect_error]));
|
|
}
|
|
|
|
// Obtener la IP del cliente en el servidor
|
|
$ip_address = $_SERVER['REMOTE_ADDR'];
|
|
|
|
// Recibir el user_agent desde el frontend
|
|
$data = json_decode(file_get_contents("php://input"), true);
|
|
$user_agent = $data['user_agent'] ?? null;
|
|
|
|
// Establecer las variables de sesión en MariaDB
|
|
$conn->query("SET @user_agent = '$user_agent'");
|
|
$conn->query("SET @ip_address = '$ip_address'");
|
|
|
|
|
|
// Consultar los premios con cantidad mayor que 0
|
|
$sql = "SELECT id, nombre, probabilidad, cantidad, inicio, final FROM premios3 WHERE cantidad > 0";
|
|
$result = $conn->query($sql);
|
|
|
|
$premios = array();
|
|
$totalProbabilidad = 0;
|
|
|
|
if ($result->num_rows > 0) {
|
|
// Calcular el total de probabilidades
|
|
while($row = $result->fetch_assoc()) {
|
|
$premios[] = $row;
|
|
$totalProbabilidad += $row['probabilidad'];
|
|
}
|
|
|
|
// Generar un número aleatorio entre 0 y el total de probabilidades
|
|
$random = mt_rand(0, $totalProbabilidad * 1000) / 1000; // Se multiplica por 1000 para trabajar con 3 decimales
|
|
$suma = 0;
|
|
|
|
// Seleccionar el premio basado en la probabilidad acumulada
|
|
foreach ($premios as $premio) {
|
|
$suma += $premio['probabilidad'];
|
|
if ($random <= $suma) {
|
|
// copiar esta parte Establecer las variables de sesión en MariaDB
|
|
$conn->query("SET @user_agent = '$user_agent'");
|
|
$conn->query("SET @ip_address = '$ip_address'");
|
|
// Actualizar la cantidad del premio seleccionado
|
|
$stmt = $conn->prepare("UPDATE premios3 SET cantidad = cantidad - 1 WHERE id = ?");
|
|
if ($stmt) {
|
|
$stmt->bind_param("i", $premio['id']);
|
|
$stmt->execute();
|
|
$stmt->close();
|
|
|
|
// Devolver el premio seleccionado con sus rangos de ángulo
|
|
echo json_encode([
|
|
'id' => $premio['id'],
|
|
'nombre' => $premio['nombre'],
|
|
'inicio' => $premio['inicio'],
|
|
'final' => $premio['final']
|
|
]);
|
|
exit(); // Salir inmediatamente después de devolver el premio seleccionado
|
|
} else {
|
|
echo json_encode(["error" => "Error en la preparación de la actualización"]);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
echo json_encode(["error" => "No hay premios disponibles"]);
|
|
}
|
|
|
|
$conn->close();
|
|
?>
|