IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Deux résultats différents pour le même script sur deux hébergements différents [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Pub
    Inscrit en
    Octobre 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Pub
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2018
    Messages : 34
    Points : 22
    Points
    22
    Par défaut Deux résultats différents pour le même script sur deux hébergements différents
    Bonjour,

    J'ai repris un site et ai demandé un transfert de la BDD et des fichiers ce matin sur un nouvel hébergement (OVH tous les deux, start pour l'ancien, perso pour le nouveau)
    J'ai fait toute l'importation FTP et SQL sans aucun souci.

    Les deux bases et les tables qu'elles contiennent sont bien identiques, tant par le moteur, que par l'interclassement.

    J'ai un souci avec un import de calendrier ICS : sur le nouvel hébergement, à l'import du calendrier (tant par fichier que par une URL), le dernier événement n'est pas enregistré !
    J'ai beau revérifier les tables, la structure, comparer, recomparer, relancer un import, le dernier evenement ne passe pas.
    J'ai, dans le script d'import, ajouté une ligne qui me fait un echo de la requête et une incrémentation de variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $q = mysqli_query($conn, $query1);
    	echo 'q = ' . $q . '<br>';
    	echo ' query1 = ' . $query1 . '<hr>';
    Elles s'affichent toutes, la variable est bien incrémentée, j'ai 10 évènements dans le calendrier, j'ai 10 requêtes et 10 incrémentations, le script affiche même la requête pour le dernier événement.
    Le seul souci c'est que la valeur q = 1 pour toutes les requêtes SAUF la dernière
    Et donc, je n'ai pas le dernier dans la base

    Dans ce dernier evenemetn, j'ai une description qui contient du HTML.
    Si je retire la description (ce qui n'arrange personne), là, l'évènement est enregistré.

    L'ancien hébergement etait en PHP 8.3, le mien en 8.0. Ce n'est quand même pas cela qui ferait foirer la requête ?
    Pour la requête INSERT, j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlspecialchars($event['DESCRIPTION'])
    pour faire enregistrer le HTML, comme c'était le cas avant (d'ailleurs, la description a souvent un bug d'espace manquants à l'affichage alors qu'ils sont présents dans l'enregistrement, j'y reviendrai peut etre).

    Je n'ai rien bougé sur le script à part mes données de connexion SQL.


    Ou peut etre le souci ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 364
    Points : 741
    Points
    741
    Par défaut
    Bonjour,

    Commence par activer le rapport d'erreur mysqli et active l'affichage des erreurs (uniquement pour déboguer l'erreur, à désactiver ensuite car l'affichage des erreurs ne devrait pas être activé sur un site en ligne pour des raisons de sécurité) et/ou consulte le journal d'erreur de ton serveur web.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ini_set('display_errors', 1);
    error_reporting(E_ALL)
    mysqli_report(MYSQLI_REPORT_ALL);
     
    $q = mysqli_query($conn, $query1);
    Le message d'erreur sql devrait te permettre de mieux comprendre l'erreur afin de la corriger.


    Au passage, les fonctions htmlentities ou htmlspecialchars ne devrait pas être utilisées sur les données avant insertion en bdd, le fait de convertir les données en entités html avant l'insertion risque de provoquer des résultats incorrects pour les requêtes (pour le classement ou le tri des données par exemple).
    Comme leurs noms l'indiquent, ces fonctions devraient être appliquées uniquement lors de l'affichage des données dans un document html.

    Pour éviter les injections sql avec l'API Mysqli, il faut utiliser la fonction mysqli_real_escape_string ou les requêtes préparées.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Pub
    Inscrit en
    Octobre 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Pub
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2018
    Messages : 34
    Points : 22
    Points
    22
    Par défaut
    Ok, entre-temps, j'ai passé le serveur en PHP 8.3 comme le précédent et je n'ai plus eu de souci, a part bien sur le Deprecated: htmlspecialchars()

    J'ai fait plusieurs modifications pour remplacer par la fonction mysqli_real_escape_string. Sans succès.
    J'ai mis ce code avant la requête SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $event_desc = $mysqli->real_escape_string($conn, $event['DESCRIPTION']);
    Et remplacé htmlspecialchars($event['DESCRIPTION']) par $event_description dans la requete mais cela me produit une erreur.
    Je devrais placer la fonction à quel niveau ?

    Edit, ok, j'ai trouvé ma (grosse) erreur : je devais mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $event_desc = $conn->real_escape_string($event['DESCRIPTION']);
    Merci !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SSH 1&2 pour exécuter des scripts sur switch
    Par pierro912 dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 01/08/2016, 17h17
  2. comment faire pour tourner un script sur un serveur et lequel?
    Par patchiko dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 20/07/2007, 16h00
  3. Quel outil utilisé pour passer des scripts sur DB2?
    Par Valentinne dans le forum DB2
    Réponses: 2
    Dernier message: 10/07/2007, 18h12
  4. Réponses: 4
    Dernier message: 29/09/2006, 15h05
  5. creation de script pour construire ma BDD sur un server
    Par Konrad Florczak dans le forum Outils
    Réponses: 2
    Dernier message: 04/08/2005, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo