Passage de php4 à php5.6 : site perso down
Résolu
Recoh
Messages postés
36
Date d'inscription
Statut
Membre
Dernière intervention
-
Recoh Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
Recoh Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
Configuration: Linux / Firefox 85.0
Bonjour,
J'ai été sensibilisé par l'un de vous pour passer en php5.6.
Pourquoi 5.6 ?
Parce que free.fr migre vers la 5.6 !
Pourquoi free.fr ?
Parce que j'ai pas envie de payer pour un site perso et j'utilise free.fr depuis (très) longtemps pour mon site perso et d'autres sites que je crée. Et ça me va bien même s'ils ont "20 ans de retard" !
Alors pour ce faire, j'ai collé un fichier htaccess à la racine de mon ftp, contenant :
<IfDefine Free>
php56 1
</IfDefine>
Depuis : site en berne !
J'ai révisé mes pages dont surtout la page d'accueil (index.php) qui contient des "include" tout simples mais certains blocages résistent à mon analyse et mon niveau de programmation (j'ai appris comme ça, sur le tas) :
À plusieurs reprises, j'inclue un genre de switch hyper simple dont voici le contenu :
<?php if ($spot == 1) { include 'page1.inc.php'; } elseif ($spot == 2) { include 'page2.inc.php'; } else { include 'default.inc.php'; } ?>
Le lien qui donne la variable "spot" est un lien comme celui-ci :
<a href="?spot=1"><img src="img.jpg"></a>
ou comme ça :
<a href="?spot=2&nav=1"><img src="img.jpg"></a>
Constat :
-
?spot=1est devenu inopérant depuis que j'ai collé le htaccess. Quand je l'enlève, ça refonctionne.
-
?spot=2&nav=1est aussi inopérant avec le htaccess, et lorsque je reviens à php4, le caractère
&est en rouge à l'affichage du code source, et la variable "nav" est inopérante...
J'avais contruit un lien à 3 variables du genre
?spot=1&nav=2&oxy=3, c'était pire !! Et même en simplifiant ça ne marche pas.
J'ai compulsé des tonnes de forums, de liens, etc. sans trouver un switch aussi basique qui permette d'afficher un script avec des données supplémentaires en début de page (avant le <html>), dans le <head> et dans le <body>.
J'ai essayé de remplacer tous mes liens par :
/index.php?spot=1&... ./dossier/?spot=1&... /dossier/?spot=1&... http://monsite.free.fr/dossier/index.php?spot=1&...etc.
Rien n'y fait, ça ne fonctionne pas.
Et lorsque je reviens à php4, c'est le script sql par le
tryqui plante au caractère
{qui provoque une erreur (insoluble).
En gros : À L'AIDE !!!
Merci de votre lecture.
A voir également:
- Passage de php4 à php5.6 : site perso down
- Passage qwerty azerty - Guide
- Passage à windows 11 gratuit - Guide
- Passage windows 7 à 10 - Accueil - Mise à jour
- Test passage windows 11 - Guide
- Choisir passage sonnerie samsung - Guide
2 réponses
Bonjour,
A l'époque, les variables transmises par POST ou GET étaient "automatiquement'" traduites en variables php...
Mais désormais, il faut les initialiser toi même.
Par exemple :
A noter que ton if/elseif pourrait être réécrit un peu plus simplement
A l'époque, les variables transmises par POST ou GET étaient "automatiquement'" traduites en variables php...
Mais désormais, il faut les initialiser toi même.
Par exemple :
$spot = !empty($_GET['spot']) ? $_GET['spot'] : NULL; $nav= !empty($_GET['nav']) ? $_GET['nav'] : NULL; $oxy= !empty($_GET['oxy']) ? $_GET['oxy'] : NULL; if ($spot == 1) { include 'page1.inc.php'; } elseif ($spot == 2) { include 'page2.inc.php'; } else { include 'default.inc.php'; }
A noter que ton if/elseif pourrait être réécrit un peu plus simplement
//si la variable $spot n'est pas null if ($spot) { include 'page'.$spot.'.inc.php'; // on inclus la page contenant la valeur de $spot pour son "numéro" } else { include 'default.inc.php'; }
Ça marche parfaitement ! J'ai retrouvé mon lien avec triple variable ;
Je te remercie, en plus je peux imaginer plein d'autres trucs...
Par contre, l'accès ou les requêtes sql en PDO sont pas encore fonctionnelles, mais aucune erreur signalée, je vais essayer de peaufiner.
Ciao !!
?s=&n=&o=, ça allège le tout c'est parfait.
Je te remercie, en plus je peux imaginer plein d'autres trucs...
Par contre, l'accès ou les requêtes sql en PDO sont pas encore fonctionnelles, mais aucune erreur signalée, je vais essayer de peaufiner.
Ciao !!
Merci Jordane !
J'avais compris que ça devait passer par un code de ce genre mais là tu as été très généreux !
Je vais me baser sur ta réponse pour reconstruire mes pages, merci encore !
Est ce qu'on appel l'écriture ternaire...
C'est une sorte de IF else
L'instruction !empty sert à s'assurer que la variable existe et n'est pas vide (ou false ou null ou =0 )
En gros, ça veut dire:
Si la variable $_GET['spot'] existe et n'est pas null/vide/false, alors je stocke la valeur de $_GET['spot'] dans la variable $spot, sinon j'y stocke la valeur NULL
Je me suis trouvé un livre sur php5.6, j'espère que ça sera accessible parce que j'ai des notions mais c'est plutôt de la débrouille à mon niveau !