[RESOLU] Problème PHP 5.6 vers PHP7.4

storks
Invité n'ayant pas de compte PHPfrance

24 juin 2022, 10:12

Bonjour,
Je viens de passer de PHP 5.6 vers PHP 7.4, le script suivant qui fonctionnait tres bien ne marche plus sur 7.4.
Le script lit et affiche correctement données et variables contenues dans le fichier "variables_pj_simplex.inc.php" mais lorsque je veux le modifier et enregistrer j'obtiens irrémédiablement l'erreur 403 (HTTP response code 403) lorsque je soumet le formulaire à l'enregistrement. Que dois je modifier?
Merci de votre aide.

Code : Tout sélectionner

<style type="text/css"> body{ width: 760px;margin: auto margin-top: 20px; margin-bottom: 20px;background-color:#104F0D;} #corps { width: auto;height: 350px;margin-left: 5px; margin-bottom: 5px; padding: 5px;color: Black; background-color: #C0C0C0; border: 2px solid #DCC714; overflow: auto;} </style> <?php $filename = "../inscriptions/variables_pj_simplex.inc.php"; $texte = ''; // TESTE SI LE FORMULAIRE EST APPELE PAR UN BOUTON SUBMIT // Si c'est le bouton "CHIFFRE" // Sinon, si c'est le Bouton "SAUVE" if (isset($_POST["BTN_SAVE"] )) { $texte = stripslashes($_POST["TEXTE"]); // Récupère le texte du form et enlève les échappementss du type \'' $fichier=fopen($filename,"w"); // Ouvre le blocnotes fputs($fichier,$texte); // Place le Texte dans le Bloc Notes fclose($fichier); // Ferme le Fichier DATA }; if (isset($_POST["BTN_ROT"] )) { $texte = $_POST["TEXTE"]; $texte = str_rot13($texte); } else { // Comme le Bouton submit réinitialise il faut replacer le texte $texte=''; // Initialise le Texte $fichier=fopen($filename,"r"); // Ouvre le blocnotes while(!feof($fichier)) // Lecture du Fichier du début à la fin { $texte=$texte.fgets($fichier,256); }; fclose($fichier); // Ferme le Fichier DATA }; ?> </div> <div id="corps"> <h2>Variables pour le formulaire</h2> <table width="90%" border=0 cellspacing=2 cellpadding=2> <td align="left"><Strong>Modifier les variables et "Enregistrer"</Strong><Br></td><br /> </table> <center> <form name="F" method="post" action="creer_pj_simplex.php" onSubmit="return(confirm('Sauvegarde ?'));"> <!-- Cette 1ere section définit les Variables qui doivent etre "soumises" au formulaire,par le biais dans CHAMP CACHE --> <INPUT type="hidden" name=fichier value="<?php echo $filename ?>"><BR> <textarea name="TEXTE" rows=10 cols=70 tabindex="0"><?php echo $texte ?></textarea> <hr> <input type="button" value="Retour Pau Jazz" onClick="'"> &nbsp;&nbsp; &nbsp;&nbsp; <input name="BTN_SAVE" type ="submit" value="Enregistrer"> </form> </center> </div>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 juin 2022, 10:36

Regarde dans les logs de PHP et d'Apache pour connaitre l'origine de cette erreur 403 car c'est inhabituel lors d'un changement de version de PHP. Vérifie l'url appelée qui génère cette 403.

Active aussi l'affichage des erreurs ça t'aidera à debuguer :
error_reporting(E_ALL);
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 1 Messages

24 juin 2022, 19:03

Désolé, le passage de PHP4 vers PHP7 n'a rien à voir. En fait j'ai profité du passage vers PHP7 pour ajouter à mon site sous Wordpress l’extension Wordfence. C'est ce plugin qui bloquait tout. Une fois desactivé tout fonctione.. En tous cas merci pour votre réponse.

Avatar du membre
Eléphanteau du PHP | 41 Messages

25 juin 2022, 15:27

normal tu as des ; après des }
ce n'est pas nécessaire en PHP après des }
        $filename = "../inscriptions/variables_pj_simplex.inc.php";
        $texte = '';

        // TESTE SI LE FORMULAIRE EST APPELE PAR UN BOUTON SUBMIT
        // Si c'est le bouton "CHIFFRE"
        // Sinon, si c'est le Bouton "SAUVE"
        if (isset($_POST["BTN_SAVE"])) {
            $texte = stripslashes($_POST["TEXTE"]); // Récupère le texte du form et enlève les échappementss du type \''
           /* chelou ici --> */  $fichier = fopen($filename, "w"); // Ouvre le blocnotes <-- quoi ? ça écris dans variables_pj_simplex.inc.php ??
            fputs($fichier, $texte); // Place le Texte dans le Bloc Notes
            fclose($fichier); // Ferme le Fichier DATA
        }

        if (isset($_POST["BTN_ROT"])) {
            $texte = str_rot13($_POST["TEXTE"]);

        } else {

            // Comme le Bouton submit réinitialise il faut replacer le texte
            $texte = ''; // Initialise le Texte
            $fichier = fopen($filename, "r"); // Ouvre le blocnotes
            while (!feof($fichier)) // Lecture du Fichier du début à la fin
            {
                $texte = $texte . fgets($fichier, 256);
            }
            fclose($fichier); // Ferme le Fichier DATA
        }
Et je vais te donner un bon conseil. on ne mélange jamais au grand jamais du PHP et du HTML
sauf ! exception une application en PHP qui fabrique des page PHP de finalisation qui seront jamais édité et elle son là pour être en cache et affiché un peut comme des briques mise bout à bout, chaque brique peut être du PHP,HTML,CSS etc. et c'est le seul cas de figure ou tu peux mélanger PHP et HTML et CSS et JS. sinon l'autre cas qui me vient à l'esprit c'est si tu veux former quelqu'un pour lui faire comprendre des choses.
Alors là réponse oui ça fonctionne mais non ! exemple simple de la vie de tout les jours :
par convention social -> on s’amuse pas à roter ou à pété à tous va à table et on s'amuse pas manger avec les mains. normal on va te dire p'tin t'es un crado toi.
Et bien en PHP c'est pareil mélanger du HTML et du PHP et du CSS et du JS c'est crado
en plus ça deviens illisible. mais bon au début c'est normal de pas savoir te prend pas la tête avec ça.
évidement le LVL au dessus c'est de savoir pensé à réunir HTML + PHP + CSS + JS
il existe une multitude de méthode. comme les Str_replace sur des tag style moustache "{{MON_CODE}}"
d'autre vont utilisé des Regex, et d'autre des variables bref ce qui importe le plus c'est de ne pas mélanger torchon et serviette.