JeuWeb - Crée ton jeu par navigateur
Include, header et autres questions. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Include, header et autres questions. (/showthread.php?tid=1909)



Include, header et autres questions. - Michoo - 25-10-2007

Bien le bonsoir,

Toujours dans ma phase d'entrainement, d'apprentissage dans le but de créer un jeu (étonnant non? ^^), je viens vous voir car là je bloque sur un petit problème de Header et de Include.

Je tombe toujours sur le message : "Cannot modify header information - headers already sent by patati". Je me suis donc renseigné sur le net et sur ce forum, j'ai compris d'où venait l'erreur (une fois des infos envoyées à l'entête, on peut plus modifier donc plus utiliser de headers).
Je me suis également renseigné sur des alternatives, mais je n'y arrives pas bien et je trouve que l'idéal aurait quand même été un header (il y a l'aternative html, mais j'ai lu sur un forum qu'elle était déconseillée, il y a le javascript mais problemes avec certains explorers, ect...)

Un exemple : le personnage veut manger. Il a le choix entre plusieurs repas. Dans une page il choisi donc son repas (ce qui créera une variable de session) et sera conduit à une page resultatrepas.php : cette page traite le repas choisi (il n'y a que du code php dans cette page, juste pour traiter les données, on ne doit pas la voir et une fois les données traitées, on était automatiquement reconduit à la page d'acceuil, là où il a choisi les repas, comme si il avait jamais changé de page).

Ces pages fonctionnaient à merveille avec des headers (selon si il a ou pas mangé, ect). Mais j'ai lu qu'il fallait mettre les parametres de connexion à la BDD dans un fichier à part (pour plus de protection avec code pour accéder au dossier et plus simple pour modifier, ça évite de modifier chaque page, alors qu'avant j'avais mis dans chaque page les parametres de connexion) et l'inclure à chaque page avec un include.
Je m'execute et inclu donc la page connexion.php à chacune de mes pages.
Depuis, mon code foire avec ce fameux message "Cannot modify header ". :non:

Bref, pourriez vous éclairer ma lanterne? Que faire à la place d'un header, bien pratique pour executer un script et redirigé avec les données traitées dans ce script? Car mon problème risque de se rencontrer bien des fois...

A moins que je m'organise mal... J'ai appris à programmer graçe au site du zéro, bouquin du nul (mais peu utile après le site du zéro), ect... Et il y a peut-être quelques automatismes qui pourraient m'aider pour la prog d'un jeu... (j'ai tenté d'intégrer les codes avec des includes mais à force ça foire, ect...)
Autre question par rapport à cela. J'ai visité les codes sources de quelques jeux (trouvés sur ce forum) et je ne vois jamais de php dans la source! Comment cela se "fesse"?:ninga:
(par exemple chez moi quand le joueur se connecte, il y a tout un script php pour récupérer ses données dans la BDD).

Merci pour votre aide! :respect:


RE: Include, header et autres questions. - Kheldar - 26-10-2007

Bonjour,

le problème "Cannot modify header information - headers already sent", provient du fait que du code HTML ou "de simples blancs" sont envoyés avant ton header.

Ton header doit être placer avant tout code html. (regarde dans ton fichier de connexion si il n'y a pas de ligne blanche).

Ensuite, lorsqu'il t'envoie l'erreur "Cannot modify header information - headers already sent", il doit te dire aussi à quel moment, il envoie du html (c'est contenu dans le message d'erreur).

Dis moi si cette aide te suffit, ou si tu continue à avoir ton erreur.


RE: Include, header et autres questions. - Sephi-Chan - 26-10-2007

Pour contrer ce fléau, je te conseille de placer ton contenu dans une variable tout au long de ta page.

Par exemple :
Code PHP :
<?php 
$output
= '';
$output .= '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Titre</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
'
;

if(isset(
$_SESSION['accountId'])){
$output .= '
<p>Vous êtes connecté !</p>
<ul>
<li><a href="index.php?p=manage-account">Gérer votre compte</a></li>
<li><a href="index.php?p=logout">Déconnexion</a></li>
</ul>
'
;
}
else {
$output .= '
<p>Vous n\'êtes pas connecté.</p>
<ul>
<li><a href="index.php?p=login">Connexion</a></li>
</ul>
'
;
}

$output .= '
</body>
</html>
'
;

echo
$output;

Et avec un tel code, tu peux mettre tes headers partout !


Sephi-Chan


RE: Include, header et autres questions. - Mighty - 26-10-2007

Michoo a écrit :Autre question par rapport à cela. J'ai visité les codes sources de quelques jeux (trouvés sur ce forum) et je ne vois jamais de php dans la source! Comment cela se "fesse"?:ninga:
(par exemple chez moi quand le joueur se connecte, il y a tout un script php pour récupérer ses données dans la BDD).

Salut,

Les pages en php sont générées dynamiquements côté serveur donc tu ne vois que le html renvoyé par celui-ci Wink

Mighty


RE: Include, header et autres questions. - Michoo - 26-10-2007

Merci à vous pour vos aimables réponses! :good:

Kheldar, c'est exactement ce que j'ai trouvé sur le net en cherchant. Tu confirmes les propos que j'ai lu. ^^ Je vais re-vérifier.

Sephi, ok je vais tester ça! Je tiens informé!

Mighty, en effet, c'est ce qu'on apprend au tout début si je me souviens bien! :$ Je n'avais plus ceci en tête, je m'imaginais que le visiteur pouvait voir le code php malgré tout (comme lorsqu'on programme). Qu'en est-il du code mysql, il peut être vu par le visiteur?


RE: Include, header et autres questions. - Sephi-Chan - 26-10-2007

Michoo a écrit :Qu'en est-il du code mysql, il peut être vu par le visiteur?
Il est inclus dans le code PHP. Wink


RE: Include, header et autres questions. - Michoo - 27-10-2007

Tout juste! :$ Désolé pour cette dernière question qui comprenait la réponse! (je n'ai pas programmé de l'été... Comment ça c'est pas une excuse! ^^).

Merci bien en tout cas.