Error de ajax 403 prohibido

neme -  
Pitet Mensajes publicados 2845 Estado Miembro -
Bonjour,

Aquí estoy enfrentando un gran problema con mi código, cuando guardo un formulario recibo el mensaje "no se pudo conectar a la base de datos". Cuando reviso en la pestaña de redes de Chrome, veo que mi solicitud AJAX falla con un 403 Forbidden, aunque funciona en otros formularios.

Aquí está mi código JavaScript (no tengo permiso para usar jQuery)

JS
Mi problema está en el dato VIDEO que es un iframe de Vimeo

 function updateTheGamme(){
if(isGammeFormUpdateValid()){
Ext.Ajax.request({
waitMsg: 'Por favor espera...',
//headers: { 'Content-Type': 'application/json'},
type:'POST',
url: '../gestion_des_produits/database.php',
params: {
task: "CREATEPRESGamme",
gamme_id : gamme_idgammeFieldUpdate.getValue(),
NOM : NOMgammeFieldUpdate.getValue(),
technologie_id : technologie_idgammeFieldUpdate.getValue(),
ACCROCHE : ACCROCHEgammeFieldUpdate.getValue(),
DESCRIPTION : DESCRIPTIONgammeFieldUpdate.getValue(),
LOGO : LOGOgammeFieldUpdate.getValue(),
PDF : PDFgammeFieldUpdate.getValue(),
PHOTO_PRINCIPALE : PHOTO_PRINCIPALEgammeFieldUpdate.getValue(),
AIDE : AIDEgammeFieldUpdate.getValue(),
VIDEO : VIDEOgammeFieldUpdate.getValue(),
// VIDEO : VIDEOgammeFieldUpdate.getValue().replace(/\//g, '\/'),
LANGUE : LANGUEgammeFieldUpdate.getValue(),
TITRE_HTML : TITRE_HTMLgammeFieldUpdate.getValue(),
DESCRIPTION_HTML : DESCRIPTION_HTMLgammeFieldUpdate.getValue(),
MOTSCLES_HTML : MOTSCLES_HTMLgammeFieldUpdate.getValue(),
URL_HTML : URL_HTMLgammeFieldUpdate.getValue(),
ordre : ordregammeFieldUpdate.getValue(),
DENOMINATION_LANGUE : DENOMINATION_LANGUEgammeFieldUpdate.getValue(),
SCORE : SCOREgammeFieldUpdate.getValue(),
OBJECTIF_SEO : OBJECTIF_SEOgammeFieldUpdate.getValue(),
COMMENTAIRE_SEO : COMMENTAIRE_SEOgammeFieldUpdate.getValue(),
ACTIF : ACTIFgammeFieldUpdate.getValue()

},
success: function(response){
var result=eval(response.responseText);
console.log('result success : '+result);
switch(result){

case 1:
//Ext.MessageBox.alert('Creación OK','La gamme se creó exitosamente.');
//alert(idUpdateFiltre);
GammesDataStore.commitChanges(); GammesDataStore.on('beforeload', function(store){
store.baseParams = store.baseParams || {};
})

GammesDataStoreTotal.reload();
GammesDataStore.reload();
GammeUpdateWindow.hide();

break;

default:
Ext.MessageBox.alert('Advertencia','No se pudo crear la gamme.');
break;

}
},
failure: function(response){
console.log(response);
var result=response.responseText;
Ext.MessageBox.alert('error','no se pudo conectar a la base de datos. inténtalo más tardeaaaa');
}
});

} else {
Ext.MessageBox.alert('Advertencia', '¡Tu formulario no es válido!');
}

}


Aquí está el archivo PHP llamado por AJAX
function createGamme(){

 if ($_POST['gamme_id'] != '-1') {

// Aquí probablemente deberíamos hacer alguna verificación en la base de datos, para asegurarnos de que no tengamos la misma entrada dos veces, por ejemplo... Y devolveríamos un código de error diferente (ECHO '0' o lo que quieras...) Por ahora pretendamos que la entrada es válida.
$query = "UPDATE gamme SET `gamme_id` = '".addslashes($_POST['gamme_id'])."' , `NOM` = '".addslashes($_POST['NOM'])."' , `technologie_id` = '".addslashes($_POST['technologie_id'])."' , `ACCROCHE` = '".addslashes($_POST['ACCROCHE'])."' , `DESCRIPTION` = '".addslashes($_POST['DESCRIPTION'])."' , `LOGO` = '".addslashes($_POST['LOGO'])."' , `PDF` = '".addslashes($_POST['PDF'])."' , `PHOTO_PRINCIPALE` = '".addslashes($_POST['PHOTO_PRINCIPALE'])."' , `AIDE` = '".addslashes($_POST['AIDE'])."' , `VIDEO` = '' , `LANGUE` = '".addslashes($_POST['LANGUE'])."' , `TITRE_HTML` = '".addslashes($_POST['TITRE_HTML'])."' , `DESCRIPTION_HTML` = '".addslashes($_POST['DESCRIPTION_HTML'])."' , `MOTSCLES_HTML` = '".addslashes($_POST['MOTSCLES_HTML'])."' , `URL_HTML` = '".addslashes($_POST['URL_HTML'])."' , `ordre` = '".addslashes($_POST['ordre'])."' , `DENOMINATION_LANGUE` = '".addslashes($_POST['DENOMINATION_LANGUE'])."' , `SCORE` = '".addslashes($_POST['SCORE'])."' , `OBJECTIF_SEO` = '".addslashes($_POST['OBJECTIF_SEO'])."' , `COMMENTAIRE_SEO` = '".addslashes($_POST['COMMENTAIRE_SEO'])."' , `ACTIF` = '".addslashes($_POST['ACTIF'])."' WHERE gamme_id =".addslashes($_POST['gamme_id']);
echo $query;
die();
$result = mysql_query($query);
//$last_insert_id = 2;

} else {

$NOM = addslashes($_POST['NOM']);
$technologie_id = addslashes($_POST['technologie_id']);
$ACCROCHE = addslashes($_POST['ACCROCHE']);
$DESCRIPTION = addslashes($_POST['DESCRIPTION']);
$LOGO = addslashes($_POST['LOGO']);
$PDF = addslashes($_POST['PDF']);
$PHOTO_PRINCIPALE = addslashes($_POST['PHOTO_PRINCIPALE']);
$AIDE = addslashes($_POST['AIDE']);
$VIDEO = "";
$LANGUE = addslashes($_POST['LANGUE']);
$TITRE_HTML = addslashes($_POST['TITRE_HTML']);
$DESCRIPTION_HTML = addslashes($_POST['DESCRIPTION_HTML']);
$MOTSCLES_HTML = addslashes($_POST['MOTSCLES_HTML']);
$URL_HTML = addslashes($_POST['URL_HTML']);
$ordre = addslashes($_POST['ordre']);
$DENOMINATION_LANGUE = addslashes($_POST['DENOMINATION_LANGUE']);
$SCORE = addslashes($_POST['SCORE']);
$OBJECTIF_SEO = addslashes($_POST['OBJECTIF_SEO']);
$COMMENTAIRE_SEO = addslashes($_POST['COMMENTAIRE_SEO']);
$ACTIF = addslashes($_POST['ACTIF']);

// Aquí probablemente deberíamos hacer alguna verificación en la base de datos, para asegurarnos de que no tengamos la misma entrada dos veces, por ejemplo... Y devolveríamos un código de error diferente (ECHO '0' o lo que quieras...) Por ahora pretendamos que la entrada es válida.
$query = "INSERT INTO gamme (`NOM`, `technologie_id`, `ACCROCHE`, `DESCRIPTION`, `LOGO`, `PDF`, `PHOTO_PRINCIPALE`, `AIDE`, `VIDEO`, `LANGUE`, `TITRE_HTML`, `DESCRIPTION_HTML`, `MOTSCLES_HTML`, `URL_HTML`, `ordre`, `DENOMINATION_LANGUE`, `SCORE`, `OBJECTIF_SEO`, `COMMENTAIRE_SEO`, `ACTIF` ) VALUES ('$NOM' , '$technologie_id' , '$ACCROCHE' , '$DESCRIPTION' , '$LOGO' , '$PDF' , '$PHOTO_PRINCIPALE' , '$AIDE' , '$VIDEO' , '$LANGUE' , '$TITRE_HTML' , '$DESCRIPTION_HTML' , '$MOTSCLES_HTML' , '$URL_HTML' , '$ordre' , '$DENOMINATION_LANGUE' , '$SCORE' , '$OBJECTIF_SEO' , '$COMMENTAIRE_SEO' , '$ACTIF' )";

$result = mysql_query($query);
$last_insert_id = mysql_insert_id();

}

if (isset($last_insert_id)) { echo $last_insert_id; } else { echo '1'; }

}


Gracias de antemano por tu ayuda

3 respuestas

  1. Pitet Mensajes publicados 2845 Estado Miembro 530
     
    Hola,

    Un error 403 Forbidden indica a menudo un error de permisos en el directorio o archivo del servidor, sin embargo, un problema de permisos sería extraño en tu caso si la solicitud ajax funciona con otros formularios.

    ¿Estás seguro de que la ruta relativa definida en el parámetro 'url' es correcta en relación con tu página?
    ¿Tienes errores de PHP en el archivo de registro de tu servidor web?

    ¡Buen día!
    0
  2. neme
     
    Gracias por tu respuesta. Mi formulario tiene problemas según los datos que contiene; en resumen, si agrego un iframe de video, se bloquea, de lo contrario funciona, por lo que no es un error de permisos o de URL.

    Creo que mi cadena de video debe estar comentando parte de la consulta o cortando mi cadena.

    Así es como se presenta mi cadena de video =>
    <iframe src="//player.vimeo.com/video/111111111?title=0&byline=0&portrait=0" width="853" height="467" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>

    No sé cómo hacerlo de otra manera.
    0
    1. Pitet Mensajes publicados 2845 Estado Miembro 530
       
      Entonces el error parece provenir de la ejecución de la consulta sql.

      Deberías tener un mensaje de error correspondiente a este error sql ya sea en los archivos de registro del servidor o en la pestaña Response de la consulta ajax (en la pestaña Network, haz clic en la consulta ajax y luego en Response).
      Dado que estás mostrando tu consulta (echo $query;), esta también debería aparecer en la pestaña Response de la consulta ajax. ¿Puedes mostrárnosla?
      0
    2. neme
       
      Dado que tengo un error 403, no se me muestra ningún eco en el registro
      En Respuesta tengo: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
      <html><head>
      <title>403 Forbidden</title>
      </head><body>
      <h1>Forbidden</h1>
      <p>No tienes permiso para acceder a /administration/gestion_des_produits/database.php
      en este servidor.</p>
      </body></html>
      0
    3. neme > neme
       
      Incluso intenté poner mi consulta echo en la primera línea y luego poner un die() y sigo teniendo mi error 403.
      0
    4. Pitet Mensajes publicados 2845 Estado Miembro 530
       
      ¿Dónde se encuentra el archivo database.php en tu sitio?
      ¿Puedes acceder a este archivo escribiendo su URL directamente en la barra de direcciones del navegador sin error 403? Si es así, ¿cuál es la URL utilizada?
      0
    5. neme
       
      esto es lo que me dice cuando voy a la dirección del archivo php
      => {failure:true}
      0