1

Bonjour smile

On vas faire court parce que j'ai accidentellement delete mon pavé que je rédigeais une demie heure auparavant pour vous en appuyant sur tab ( ne me demandez pas , j'ai juste la poisse ) angry


on vas faire court, j'ai mis mon site en ligne via filezilla

http://manthanon.me/cyril2/

cliquez donc sur valider et vous voila en face d'un beau bullshit , bref tout ce qui est dans la balise suivante <?php ( code moche ) ?> est ignoré , en gros mon code rends ça quand je fais inspecter l'élément

<body><!-- corpus stockages de données format cookies -->
<p>Details :</p>
<p>"Vous avez choisi : " </p>
</body>

alors qu'a la base =>

<body><!-- corpus stockages de données format cookies -->
<p>Details :</p>
<p>
<?php


unset($_SESSION['installation']);
if(isset($_POST['installation']))
{
if($_POST['installation'] == "individuel") $_SESSION['installation'] = "Vous avez choisi un projet individuel";
else if($_POST['installation'] == "collectif") $_SESSION['installation'] = "Vous avez choisi un projet collectif";
else if($_POST['installation'] == "tertiaire") $_SESSION['installation'] = "Vous avez choisi un projet tertiaire";
else $_SESSION['installation'] = "Choix non référencé";
}

else $_SESSION['installation'] = "ERREUR";



if(isset($_POST['installation']))
{
if($_POST['installation'] == "individuel") header('location: A.php');
else if($_POST['installation'] == "collectif") header('location: B.php');
else if($_POST['installation'] == "tertiaire") $choix = "Site Tertiaire";
else $choix = "Erreur Vous avez mal rempli le formulaire. Vous allez être redirigés automatiquement dans 5 secondes.";
}

else $choix = "Erreur Vous avez mal rempli le formulaire. Vous allez être redirigés automatiquement dans 5 secondes.";

echo "Vous avez choisi : ".$choix;
header("refresh:5; url=index.php");
?> </p>



Bref voila , j'ai eu beau questionner mon pote google , il m'a dit que une jeune dev a eu les même problèmes que moi et a questionné la communauté si peu désirable de comment ça marche et n'a eu aucune réponse mis a part ( tien oui c'est curieux , je vais faire semblant de t'aider puis je vais t'abandonner la ) , depuis elle ne donne plus de signe de vie, elle c'est surement reconvertie dans la fabrication de crêpes bretonnes.

Pour ma part je suis bien dégoûté j'ai l'impression d'avoir bossé pendant trois mois juste pour pouvoir me torcher avec mon code ( car il fonctionne très bien en local via wamp ).

Donc si vous avez une solution [s'il vous plait ! ç_ç ] ( ou si vous faites dans l'humanitaire ) je suis tout ouïe...
Très grand médiocre.

2

Ben ça fait exactement ce que ça doit faire, hein... j'ai surtout l'impression que tu ne comprends pas ce qu'est le PHP ni comment il fonctionne.
Question bête : dans quel contexte as-tu appris ce langage ?
avatar

3

Sur le site du zéro , mais alors d'ou viens mon erreur ? sad
Très grand médiocre.

4

Ben, je ne vois pas d'erreur non plus.
Le PHP est exécuté sur le serveur (via apache généralement), qui donne en sortie de l'html de base au client (ton navigateur).
Bref, je ne sais pas trop à quoi tu t'attendais ?

5

Je m'attendais a ce que ça fonctionne comme sous wamp ( local )

if($_POST['installation'] == "individuel") header('location: A.php');

normalement mes headers doivent être exécutés ...
Très grand médiocre.

6

Ah oui, je n'avais pas lu jusqu'à la fin triso
Ben, je ne sais pas, pas fait de php depuis des années cheeky


EDIT : l'entête, c'est pas censé être le premier truc à envoyer ? confus

7

Si, c'est le premier truc à envoyer.
Là, ton serveur doit être configuré pour n'envoyer aucun message d'erreur et aucun avertissement (c'est normalement le cas en prod), tu coup tu n'as aucune information sur ce qui fonctionne ou non. Il faut que tu fasses un paramétrage manuel (avec ini_set) dans ton script pour en voir plus.

Et dans le cas présent, envoyer le header alors qu'en plus t'es explicitement dans ton corps HTML, c'est un peu du crabouilla (et ça ne devrait pas marcher en local).
avatar

8

À moins qu'il ait un buffering quelconque activé, qui va magiquement masquer le problème. Bref, désolé piloucyril mais il va falloir que tu passes un peu plus de temps sur le site du zéro (ou sur n'importe quel tutoriel) pour comprendre exactement ce que tu fais, cette rubrique du forum n'étant pas destinée à donner des cours de PHP.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

l’entête est bien en premier, je n'ai juste pas tout mis



<?php session_start() ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr">


<head><!-- head -->
<title>Configurateur Page d'accueuil</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>




<body><!-- corpus stockages de données format cookies -->
<p>Details :</p>
<p>
<?php


unset($_SESSION['installation']);
if(isset($_POST['installation']))
{
if($_POST['installation'] == "individuel") $_SESSION['installation'] = "Vous avez choisi un projet individuel";
else if($_POST['installation'] == "collectif") $_SESSION['installation'] = "Vous avez choisi un projet collectif";
else if($_POST['installation'] == "tertiaire") $_SESSION['installation'] = "Vous avez choisi un projet tertiaire";
else $_SESSION['installation'] = "Choix non référencé";
}

else $_SESSION['installation'] = "ERREUR";



if(isset($_POST['installation']))
{
if($_POST['installation'] == "individuel") header('location: A.php');
else if($_POST['installation'] == "collectif") header('location: B.php');
else if($_POST['installation'] == "tertiaire") $choix = "Site Tertiaire";
else $choix = "Erreur Vous avez mal rempli le formulaire. Vous allez être redirigés automatiquement dans 5 secondes.";
}

else $choix = "Erreur Vous avez mal rempli le formulaire. Vous allez être redirigés automatiquement dans 5 secondes.";

echo "Vous avez choisi : ".$choix;
header("refresh:5; url=index.php");
?>
</p>
</body>
</html>



mes headers sont dans des balises php je ne comprends pas ou c'est crabouilla ( sauf mon style de code en général ) .

ini_set ? comment ça ?
Très grand médiocre.

10

A ton avis, que fait la fonction "header" ?
avatar

11

Elle renvois a la page désirée pourquoi ?
Très grand médiocre.

12

Pas vraiment, sinon elle s'appellerait redirect cheeky

13

...
Très grand médiocre.

14

?
Bref, tout ça pour dire qu'elle envoie les entêtes http au navigateur.
Certaines entêtes permettant de le rediriger vers une autre page.

15

(Tout simplement http://www.wordreference.com/enfr/header ^^ Parfois, traduire le nom des fonctions, qui, sauf exception, sont nommées en un truc proche de l'anglais, ça aide wink )

Sinon, la réponse la plus honnête est celle de Zephyr. Ça pique un peu, mais je pense que ça résume beaucoup de choses en peu de mots.
Il faut que tu te documentes sur ce que fait PHP et comment fonctionne PHP (vis à vis de ton code… qu'est-ce qu'il en fait, quand, et comment ?) pour comprendre ce qui pêche dans ton code. Il est probable qu'un bête tuto type "PHP en 5 minutes" ne prenne pas le temps d'expliquer le nécessaire, mais c'est malgré tout très important, et il t'appartient à toi-même d'approfondir tes connaissances.

./7 > http://www.php.net/manual/fr/function.error-reporting.php plutôt, non ?
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

16

Ma réponse est parfaitement honnête aussi ! Je proteste embarrassed

17

Sinon, lire la page de manuel de chaque fonction utilisée peut être un bon moyen d'apprendre wink
(et si tu n'es pas trop à l'aise avec l'anglais, la traduction française est plutôt complète -- avec quelques fautes parci parlà qu'il ne tient qu'aux lecteurs de corriger)

Pour header, par exemple : http://fr2.php.net/manual/fr/function.header.php

Tu y lirais, entre autre, que :
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP.
[ ... ]Le même problème existe avec les fichiers PHP/HTML standards.

Avec juste en-dessous un petit exemple qui colle très fortement à la portion de code reproduite ici.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

18

avant la page de manuel faudrait comprendre le php...

pilou, quand on écrit du html dans une page php il est envoyé immédiatement, sans exécution.
chaque ligne de html brut se comporte comme si tu avais écrit "echo" en début de ligne.

si tu mets une instruction header, celle ci est appelée alors que tu code html a déja été émis, et ça ne peut pas marcher. Il faut mettre l'instruction header avant que la moindre lettre soit envoyée au navigateur

ce qui va te poser un problème, puisque tu essayes de l'exécuter à la fin

et là tu te rends compte qu'il faut exécuter le php au début, et écrire des choses à la fin.

donc, tu dois encore améliorer ta compréhension du php en relisant le site du zéro dans la partie qui explique les concepts de base.

(et un bullshit c'est un mensonge)

19

GoldenCrystal (./15) :
./7 > http://www.php.net/manual/fr/function.error-reporting.php plutôt, non ?
Ah oui, bah on fait la même chose avec ini_set, hein embarrassed (cf. le dernier exemple de ta page).
avatar

20

Merci beaucoup les amis je vais voir ce que ça vas donner.


( mais c'est pas juste , sur wamp ça fonctionnais tout bien sad )
Très grand médiocre.

21

22

Bon tu as 2 choix là :

- Tu reprends ton code et tu le modifies pour que l'appel à la fonction header() s'effectue avant toute écriture HTML (en php on écrit du HTML en mettant des echo ou en mettant du HTML dans la page en dehors des balises <?php ?>)

- Tu changes le type de redirection, là tu utilisais des entêtes HTTP (via la fonction header de php) mais tu peux aussi utiliser du javascript pour ça. Le seul inconvénient du javascript est que s'il n'est pas activé sur le poste du client, ça ne fonctionnera pas. Et dans ce cas là il faut que tu mette une page "Redirection en cours ... Si ça ne fonctionne au bout de 5 secondes, appuyez sur ce lien [lien de là où tu veux envoyer ton client]" pour ne pas bloquer les gens qui n'ont pas de javascript d'activé.

Mais sinon ta question initiale montre bien que tu n'a pas l'air d'avoir bien compris le fonctionnement de php, je te conseille donc de relire tes cours un peu.

23

pokito (./22) :
en php on écrit du HTML en mettant des echo ou en mettant du HTML dans la page en dehors des balises <?php ?>
(Ou même sans le vouloir avec un BOM UTF-8…)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

24

rah putain qu'est ce que j'en ai chié avec le BOM ajouté en douce par kate grin

il a fallu que je d/l ma page avec curl et que je la passe à l'éditeur hexa pour comprendre grin

25

Ah ça tue ça, j'en ai déjà été victime (au début, je trouvais que ça faisais bien de mettre des boms un peu partout, j'avais... pas compris à quoi ça servait #triclasse#)

26

Il me semble que le BOM est déconseillé en UTF-8, de toute façon.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

27

sauf pour kde.

(allez c'est trolldi moins quarante)

28

Kate ne rajoute pas de BOMs en UTF-8! Ce sont les outils d'une certaine entreprise de Redmond qui font ça! Et c'est totalement contraire au standard Unicode. Ils font ça pour pouvoir continuer à supporter les documents en des charsets obsolètes, alors que tous les systèmes d'exploitation normaux ont tout simplement passé tout en UTF-8, et tant pis pour les vieux documents, il y a iconv pour les réparer.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

29

C'est pas du tout contraire au standard Unicode. C'est juste déconseillé principalement à cause de tous les outils de merde obsolètes codés par des linuxiens, qui ne gèrent pas le BOM...
La seule justification valide contre le BOM c'est que contrairement à l'UTF-16, l'endianness ne joue pas dans l'UTF-8...
Mais ça sert quand même comme identificateur de flux, et c'est bien plus pratique que de scanner un fichier texte à la recherche de caractères spéciaux.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

30

GoldenCrystal (./29) :
C'est pas du tout contraire au standard Unicode.

Si. Lis la spec. Le BOM n'est prévu que pour l'UTF-16 et l'UTF-32. Il n'a aucun sens en UTF-8 où il n'est pas question d'ordre des octets.
C'est juste déconseillé

"Déconseillé" dans le sens où c'est non-standard (cf. ci-dessus) et donc forcément les outils conformes au standard ne comprennent pas.
principalement à cause de tous les outils de merde obsolètes codés par des linuxiens, qui ne gèrent pas le BOM...

Au contraire, le BOM UTF-8 existe principalement à cause de tous les outils de merde obsolètes codés par des fenêtriens, qui utilisent un charset obsolète par défaut…
La seule justification valide contre le BOM c'est que contrairement à l'UTF-16, l'endianness ne joue pas dans l'UTF-8...

Effectivement, c'est bien pour ça que ce n'est pas prévu par le standard!
Mais ça sert quand même comme identificateur de flux,

Mais cet "identificateur de flux" n'est pas dans le standard, c'est une extension non-standardisée et crée donc beaucoup plus de problèmes qu'il ne résout.
et c'est bien plus pratique que de scanner un fichier texte à la recherche de caractères spéciaux.

Scanner les fichiers texte est un hack de compatibilité que certains outils comme Kate implémentent, mais qui ne devrait pas être nécessaire. Il suffit de partir du principe que tous les textes sont en UTF-8 en 2013! (Sinon, tu n'as qu'à utiliser iconv manuellement pour convertir tes fichiers obsolètes.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité