Я заканчиваю приложение о рецептах с помощью Ionic, и мне нужно сохранить некоторые рецепты как избранные, чтобы их можно было увидеть без подключения. Рецепты приходят в формате json со страницы WordPress, а в некоторых из них есть видео на YouTube, добавленное в iframe.
На мобильном устройстве я сохраняю рецепт json с помощью SQLite, но я также должен сохранить их в удаленной базе данных, для этого я попытался использовать post, но когда сервер обнаружил, что в рецепте есть iframe, выдает ошибку 403.
Для теста я сделал простую форму:
<html>
<head>
</head>
<body>
<form method="post" action="https://www.ecocesta.com/app_data/favoritos.php" enctype="text/json">
<input name="idUsuario"><br>
<input name="idReceta"><br>
<input name="contenido"><br>
<input type="submit">
<input type="hidden" name="accion" value="add">
</form>
</html>
И PHP, который получает данные:
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$direccion_db="127.0.0.1";
$login="app_admin";
$password="9XCorOl5";
$db="app_data";
// Create connection
$conexion = new mysqli($direccion_db, $login, $password,$db);
if ($conexion->connect_errno) {
echo "Error Base de datos";
exit;
}
if (isset($_POST['idUsuario']) && is_numeric($_POST['idUsuario'])) {
$idUser = (float) $_POST['idUsuario'];
} else {
echo("Es necesaria una id de usuario");
exit();
}
if (isset($_POST['idReceta']) && is_numeric($_POST['idReceta'])) {
$idReceta = (float) $_POST['idReceta'];
} else {
echo("Es necesaria una id de receta");
exit();
}
if (isset($_POST['accion'])) {
$accion = $_POST['accion'];
switch ($accion) {
case 'add':
echo("Add<br>");
if (isset($_POST['contenido'])) {
$contenido = $_POST['contenido'];
} else {
echo("Es necesario un contenido");
exit();
}
nuevoFavorito($idUser,$idReceta,$contenido,$conexion);
break;
case 'delete':
echo("Borrar");
borraFavorito($idUser,$idReceta,$conexion);
break;
case 'get':
recuperaFavoritos($idUser,$conexion);
break;
default:
echo("Es necesaria una acción");
exit();
break;
}
} else {
echo("Es necesaria una acción");
exit();
}
function nuevoFavorito($idUser, $idReceta, $contenido ,$conexion)
{
$sql="INSERT INTO favoritos (idUser,id_receta,contenido) VALUES (".$idUser.",".$idReceta.",'".$contenido."')";
echo($sql);
if ($conexion->query($sql) === TRUE)
{
echo "New record created successfully";
}
else
{
echo "Error: " . $sql . "<br>" . $conexion->error;
}
}
?>
Когда я отправляю это в "contenido", происходит сбой с 403:
<iframe class=\\\"video-youtube\\\" src=\\\"https://www.youtube.com/embed/6S9c5nnDd_s\\\" width=\\\"560\\\" height=\\\"315\\\" frameborder=\\\"0\\\" allowfullscreen=\\\"allowfullscreen\\\"></iframe>
Какие-нибудь решения?
Спасибо.